今日內容 1、TCP協議 協議的特點:三次握手,四次揮手; 2、UDP協議 3、OSI七層模型:每層的物理設備,每一層協議。 4、代碼部分: ①介紹socket; ②使用socket完成tcp協議的web通信; ③使用socket完成udp協議的web通信。 1、TCP協議 2、UDP協議 3、OS ...
今日內容
1、TCP協議
協議的特點:三次握手,四次揮手;
2、UDP協議
3、OSI七層模型:每層的物理設備,每一層協議。
4、代碼部分:
①介紹socket;
②使用socket完成tcp協議的web通信;
③使用socket完成udp協議的web通信。
1、TCP協議
1、可靠,慢,全雙工通信
2、建立連接的時候,三次握手
3、斷開連接的時候,四次揮手
4、在建立起連接後
發送的每條信息都有回執
為了保證數據的完整性,還有重傳機制
5、長連接:會一直占用雙方的埠
6、I/O操作(input,output),輸入輸出相對記憶體來說的。
write,send:輸出 output
read,recv:輸入input
能夠傳輸的數據沒有限制
2、UDP協議
1、無連接的,速度快
2、可能會丟消息
能夠傳輸的數據長度有限的,是根據數據傳輸設備設置有關(MTU)
應用場景:
TCP:文件的上傳,下載(郵件,網盤,緩存電影)
UDP:即時通信(QQ,微信)
3、OSI7層模型
應用層 :http,https,ftp,smtp
表示層
會話層
#應用層(開發角度,五層協議)--》代碼
傳輸層,tcp,udp
網路層,ipv4,ipv6 (路由器)
數據鏈路層,mac,arp(網卡,交換機)
物理層
4、抽象層
socket 中文名:套接字
python socket模塊 完成socket的功能
工作在應用層和傳輸層 之間的抽象層
幫助我們完成了所有信息的組織和拼接
socket對於程式員來說,已經是網路操作的底層了。
socket歷史
同一臺機器上的兩個服務之間的通信
基於文件
基於網路的多態機器之間的多個服務通信
TCP協議:
###########
server端:
import socket
sk=socket.socket()
sk.bind(('127.0.0.1',9000))
sk.listen()
print('*'*20)
conn,addr=sk.accept()
while True:
msg=conn.recv(1024).decode('utf-8')
if msg.upper()=='Q':break
print(msg)
ipn=input(">>>")
conn.send(ipn.encode('utf-8'))
if ipn.upper()=='Q':break
conn.close()
sk.close()
################
client端:
import socket
sk=socket.socket()
sk.connect(('127.0.0.1',9000))
while True:
ipn=input(">>>")
sk.send(ipn.encode('utf-8'))
if ipn.upper()=='Q':break
msg=sk.recv(1024).decode('utf-8')
if msg.upper() == 'Q': break
print(msg)
sk.close()
========================
UDP協議:
server:
import socket
sk=socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1',9000))
while True:
msg,client_addr=sk.recvfrom(1024)
print(msg.decode('utf-8'))
msg=input(">>>").encode('utf-8')
sk.sendto(msg,client_addr)
sk.close()
client:
import socket
sk=socket.socket(type=socket.SOCK_DGRAM)
while True:
inp=input('>>>').encode('utf-8')
sk.sendto(inp,('127.0.0.1',9000))
ret=sk.recv(1024)
print(ret)
sk.close()