資料傳輸流程 服務端資料通過服務端軟體 ->服務端作業系統 ->服務端計算機硬體 ->
客戶端的計算機硬體 -> 客戶端作業系統-_> 客戶端軟體
計算機網路體系結構分層
七層模型:
應用層表示層
會話層傳輸層
網路層資料鏈路層
物理層
c/s架構 客戶端/服務端
client 客戶端
server 服務端
b/s browser 瀏覽器
server 服務端
統一程式入口
b/s和c/s架構的關係
bs架構 需要安裝瀏覽器
cs架構 需知安裝客戶端
b/s架構是特殊的c/s架構
網絡卡的唯一標識
mac位址(實體地址) 全球唯一
tcp/ip分層模型:
應用層客戶端
傳輸層udp/tcp
tcp協議
可靠傳輸,tcp資料報沒有長度限制,理論上可以無限長,但是為了保證網路的效率,
通常tcp資料報的長度不會超過ip資料報的長度,以確保單個tcp資料報不必再分割。
udp協議
不可靠傳輸,」報頭」部分一共只有8個位元組,總長度不超過65,535位元組,正好放進乙個ip資料報。
網路層ip ip協議---arp協議
一:首先通過ip位址和子網掩碼區分出自己所處的子網
二:分析172.16.10.10/24與172.16.10.11/24處於同一網路(如果不是同一網路,那麼下表中目標ip為172.16.10.1,通過arp獲取的是閘道器的mac)
三:這個包會以廣播的方式在傳送端所處的子網內傳輸,所有主機接收後拆開包,發現目標ip為自己的,就響應,返回自己的mac
資料鏈路層 電訊號的分組方式(乙太網協議)
物理層(光纜電纜雙絞線 無線電波)
埠範圍 0-65535
0-1023 為系統占用埠
服務端案例(
import socket
host = "192.168.1.3"
port = 8000
sock_server = socket.socket(socket.af_inet, socket.sock_stream)
sock_server.bind((host, port)) #繫結id位址埠
sock_server.listen(1) # 開始監聽1代表允許乙個連線排隊有乙個連線排隊
conn, addr = sock_server.accept()
# conn鏈結物件 addr鏈結位址
# 阻塞狀態直到有鏈結請求位置 有了乙個新連線進來後,就會為這個請求生成乙個連線物件
while true:
data = conn.recv(1024)
# 引數 每次接受多少位元組
print(data.decode())
if not data:
conn.close()
break
)客戶端案例(
import socket
client = socket.socket(family=socket.af_inet, type=socket.sock_stream)
try:
client.connect(("192.168.1.3", 8000))
client.send(b"my name is kyle") # 傳送空資料發不出去
client.close() # 斷開鏈結
except connectionrefusederror:
print("服務端未開啟")
如果想要接受一批資料 而下一批資料也要在第一批接受之後隨後接受 此時你在使用之前的 recv(1024)位元組就會出現粘包現象
[當最後一段資料接收時如果少於1024 那麼它會把第二批資料接受補充至1024]
此時資料面臨不安全
解決方法(
c/s相互傳送資料時 第一句傳送報文將後面資料的大小發給 接受者 此時接受者拿到資料大小就可進行處理
處理方法
總大小每次減去接受的大小 如果總大小少於接受的大小就把總大小變成接受的大小 這就是解決方法
)
接收長度大於數值時不可接收傳送
}
python網路程式設計 TCP網路程式設計
tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...
python 網路程式設計
今天晚上學習了一下python的網路程式設計,實現了client向server傳送資料,server反饋資訊 python 3.3 版本 server from socket import class tcpserver object def init self,serverport self.se...
python網路程式設計
網路通訊是計算機之間的程序之間的通訊。tcp程式設計 tcp連線建立是雙向通道,客戶端與服務端都可以給對方傳送資料。建立tcp連線時,主動發起連線的叫客戶端,被動響應連線的叫服務端。建立乙個tcp的socket連線 用socket family,type 建立套接字獲得socket物件。family...