網路程式設計 python

2022-09-19 04:30:13 字數 2145 閱讀 2578

資料傳輸流程 服務端資料通過服務端軟體 ->服務端作業系統 ->服務端計算機硬體 ->

客戶端的計算機硬體 -> 客戶端作業系統-_> 客戶端軟體

計算機網路體系結構分層

七層模型:

應用層表示層

會話層傳輸層

網路層資料鏈路層

物理層

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...