Python網絡編程-網絡基礎中的基礎和socket

cs架構

此處cs不是打槍的cs…
CS架構:客戶端(client)和服務端(server)的架構
BS架構:瀏覽器(browser)和服務端(server)架構

網絡通信

集線器:將所有電腦連通起來
交換機:將多個電腦連接起來組成一個局域網
網卡
mac地址:物理地址,全球唯一切固定(好像是來着),十六進制,前三位是廠家編號,後三位生產流水號
IPV4:ip地址,點分十進制,四段三位數字組成,例如:192.168.1.2,0.0.0.0-255.255.255.255只間.IP地址用來劃分廣播域
這個視頻換了老師講的實在菜雞,…話多囉嗦還不說點有用的
IP地址段:192.168.1.0-192.168.1.255 一個C類IP地址段,其中會有一個網關地址,廣播地址,同一個IP段稱爲同一子網,或者一個交換機連接的電腦都是一個網段中的

DHCP:自動分配IP地址

子網掩碼:確定一個子網的網段中的IP個數
ARP協議:IP地址解析Mac地址
DNS:域名解析
NAT:網絡地址轉換,將局域網地址轉換爲外網地址.
路由轉發:路由器將信息轉發給其他路由器
路由協議:計算轉發路有消息的最佳路徑
路由表:記錄可以將消息轉發給的其他路由器地址

socket

創建兩個Python文件,模擬一個服務端一個客戶端,先運行服務端在運行客戶端,寫一個對話小程序:
服務端:

import socket
# 創建了一個socket對象並取名爲server
server = socket.socket()
# 指定IP地址和端口
ip_prot = ('192.168.0.9',8001)
# 綁定IP和端口
server.bind(ip_prot)
# 監聽端口
server.listen()
# 等待客戶端建立連接,建立連接後會得到兩個值,一個是conn,連接通道,一個是addr,對方的IP地址
conn,addr = server.accept()
# 服務端通過連接通道來收發消息,通過recv方法,recv裏面的參數是字節(B).,1024是1024B = 1KB
form_client_msg = conn.recv(1024)
# 輸出接收到的消息
#print(form_client_msg) #英文
print(form_client_msg.decode('utf-8')) #中文
# 回覆消息,通過send方法,參數必須是字節類型
#conn.send(b"ChouBuYaoLian") # 英文
conn.send("滾犢子".encode('utf-8')) # 中文
# 關閉通道,斷開連接
conn.close()
# 關閉服務端
server.close()

客戶端

# 導入socket
import socket
# 創建一個socket對象
client = socket.socket()
# 找到服務端IP地址和端口
server_ip_port = ('192.168.0.9',8001)
# 連接服務端應用程序,通過connect方法,參數是IP地址和端口號
client.connect(server_ip_port)
# 發送消息,但是調用者是client的socket對象
#client.send(b'Hello') # 此方法只支持英文
client.send('你好'.encode('utf-8')) # 中文
# 客戶端通過連接通道來接收消息,通過recv方法,recv裏面的參數是字節(B).,1024是1024B = 1KB
form_server_msg = client.recv(1024)
# 輸出接收消息
#print(form_server_msg) # 英文
print(form_server_msg.decode('utf-8')) # 中文
# 關閉連接
client.close()

TCP和UDP

TCP流:一對一的傳輸,常見於WEB瀏覽器,文件傳輸

UDP包:一對多的傳輸,不可靠,無連接的c傳輸,傳輸效率高,常用語域名系統(DNS),IP語音,視頻流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章