python 網絡通訊協議/TCP,UDP區別

一.osi七層協議

互聯網協議按照功能不一樣分爲osi七層或tcp/ip五層或tcp/ip四層緩存

協議具體內容安全

 

各層的功能簡述:
    【1】物理層:主要定義物理設備標準,如網線的接口類型、光纖的接口類型、各類傳輸介質的傳輸速率等。它的主要做用是傳輸比特流(就是由一、0轉化爲電流強弱來進行傳輸,到達目的地後在轉化爲一、0,也就是咱們常說的數模轉換與模數轉換),這一層的數據叫作比特。

  【2】數據鏈路層:定義瞭如何讓格式化數據以進行傳輸,以及如何讓控制對物理介質的訪問,這一層一般還提供錯誤檢測和糾正,以確保數據的可靠傳輸。

  【3】網絡層:在位於不一樣地理位置的網絡中的兩個主機系統之間提供鏈接和路徑選擇,Internet的發展使得從世界各站點訪問信息的用戶數大大增長,而網絡層正是管理這種鏈接的層。

  【4】傳輸層:定義了一些傳輸數據的協議和端口號(WWW端口80等),如:TCP(傳輸控制協議,傳輸效率低,可靠性強,用於傳輸可靠性要求高,數據量大的數據),UDP(用戶數據報協議,與TCP特性偏偏相反,用於傳輸可靠性要求不高,數據量小的數據,如QQ聊天數據就是經過這種方式傳輸的), 主要是將從下層接收的數據進行分段和傳輸,到達目的地址後再進行重組,經常把這一層數據叫作段。

  【5】會話層:經過傳輸層(端口號:傳輸端口與接收端口)創建數據傳輸的通路,主要在你的系統之間發起會話或者接受會話請求(設備之間須要互相認識能夠是IP也能夠是MAC或者是主機名)。

  【6】表示層:可確保一個系統的應用層所發送的信息能夠被另外一個系統的應用層讀取。例如,PC程序與另外一臺計算機進行通訊,其中一臺計算機使用擴展二一十進制交換碼(EBCDIC),而另外一臺則使用美國信息交換標準碼(ASCII)來表示相同的字符。若有必要,表示層會經過使用一種通格式來實現多種數據格式之間的轉換。

  【7】應用層: 是最靠近用戶的OSI層,這一層爲用戶的應用程序(例如電子郵件、文件傳輸和終端仿真)提供網絡服務。

各層中涉及的協議的簡單解釋:
應用層
  ·DHCP(動態主機分配協議)
  · DNS (域名解析)
  · FTP(File Transfer Protocol)文件傳輸協議
  · Gopher (英文原義:The Internet Gopher Protocol 中文釋義:(RFC-1436)網際Gopher協議)
  · HTTP (Hypertext Transfer Protocol)超文本傳輸協議
  · IMAP4 (Internet Message Access Protocol 4) 即 Internet信息訪問協議的第4版本
  · IRC (Internet Relay Chat )網絡聊天協議
  · NNTP (Network News Transport Protocol)RFC-977)網絡新聞傳輸協議
  · XMPP 可擴展消息處理現場協議
  · POP3 (Post Office Protocol 3)即郵局協議的第3個版本
  · SIP 信令控制協議
  · SMTP (Simple Mail Transfer Protocol)即簡單郵件傳輸協議
  · SNMP (Simple Network Management Protocol,簡單網絡管理協議)
  · SSH (Secure Shell)安全外殼協議
  · TELNET 遠程登陸協議
  · RPC (Remote Procedure Call Protocol)(RFC-1831)遠程過程調用協議
  · RTCP (RTP Control Protocol)RTP 控制協議
  · RTSP (Real Time Streaming Protocol)實時流傳輸協議
  · TLS (Transport Layer Security Protocol)安全傳輸層協議
  · SDP( Session Description Protocol)會話描述協議
  · SOAP (Simple Object Access Protocol)簡單對象訪問協議
  · GTP 通用數據傳輸平臺
  · STUN (Simple Traversal of UDP over NATs,NAT 的UDP簡單穿越)是一種網絡協議
  · NTP (Network Time Protocol)網絡校時協議
傳輸層
  ·TCP(Transmission Control Protocol)傳輸控制協議
  · UDP (User Datagram Protocol)用戶數據報協議
  · DCCP (Datagram Congestion Control Protocol)數據報擁塞控制協議
  · SCTP(STREAM CONTROL TRANSMISSION PROTOCOL)流控制傳輸協議
  · RTP(Real-time Transport Protocol或簡寫RTP)實時傳送協議
  · RSVP (Resource ReSer Vation Protocol)資源預留協議
  · PPTP ( Point to Point Tunneling Protocol)點對點隧道協議
網絡層
IP(IPv4 · IPv6) Internet Protocol(網絡之間互連的協議)
ARP : Address Resolution Protocol即地址解析協議,實現經過IP地址得知其物理地址。
RARP :Reverse Address Resolution Protocol 反向地址轉換協議容許局域網的物理機器從網關服務器的 ARP 表或者緩存上請求其 IP 地址。
ICMP :(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。
ICMPv6:
IGMP :Internet 組管理協議(IGMP)是因特網協議家族中的一個組播協議,用於IP 主機向任一個直接相鄰的路由器報告他們的組成員狀況。
RIP : 路由信息協議(RIP)是一種在網關與主機之間交換路由選擇信息的標準。
OSPF : (Open Shortest Path First開放式最短路徑優先).
BGP :(Border Gateway Protocol )邊界網關協議,用來鏈接Internet上獨立系統的路由選擇協議
IS-IS:(Intermediate System to Intermediate System Routing Protocol)中間系統到中間系統的路由選擇協議.
IPsec:「Internet 協議安全性」是一種開放標準的框架結構,經過使用加密的安全服務以確保在 Internet 協議 (IP) 網絡上進行保密而安全的通信。
數據鏈路層
  802.11 · 802.16 · Wi-Fi · WiMAX · ATM · DTM · 令牌環 · 以太網 · FDDI · 幀中繼 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN
物理層
  以太網物理層 · 調制解調器 · PLC · SONET/SDH · G.709 · 光導纖維 · 同軸電纜 · 雙絞線

各層功能及協議的簡單解釋
各層功能及協議的簡單解釋

 

 

 

 

 

五層通訊流程圖服務器

 

二.TCP,UDP區別網絡

1.TCP三次握手 四次揮手框架

 

2.TCP/UDP下的socketsocket

TCP服務端(多人聊天版)tcp

 1 import socket
 2 
 3 server = socket.socket()
 4 
 5 server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)  # 重用這個端口
 6 
 7 ip_port = ('127.0.0.1',8001)
 8 
 9 server.bind(ip_port)
10 
11 server.listen(3)
12 
13 while 1:
14     conn, addr = server.accept()
15 
16     while 1:
17         from_client_msg = conn.recv(1024)
18         print('來自寶寶的消息:',from_client_msg.decode('utf-8'))
19 
20         if from_client_msg.decode('utf-8') == 'byebye':
21             break
22 
23         to_client_msg = input('高望>>>')
24         conn.send(to_client_msg.encode('utf-8'))
25 
26     conn.close()

TCP客戶端(多人聊天版)ide

 1 import socket
 2 
 3 client = socket.socket()  # 建立對象
 4 
 5 ip_port = '127.0.0.1', 8001  # 設置IP地址
 6 
 7 client.connect(ip_port)  # 綁定IP地址
 8 
 9 while 1:  # 循環
10     to_server_msg = input('寶寶說:')  # 輸入發給服務端要說的話
11 
12     client.send(to_server_msg.encode('utf-8'))  # 發送上面輸入的話到服務端
13 
14     if to_server_msg == 'byebye':  # 判斷輸入的話若是是byebye 則跳出循環
15 
16         break
17 
18     from_server_msg = client.recv(1024)  # 獲取服務端發過來的內容
19 
20     print('來自高望的消息:',from_server_msg.decode('utf-8'))  # 打印獲取到的服務端信息
21 
22 
23 client.close()

UDP服務端(多人聊天版)加密

import socket

udp_server = socket.socket(type = socket.SOCK_DGRAM)  # datagram

ip_port = ('127.0.0.1', 8002)

udp_server.bind(ip_port)

while 1:
    from_client_msg, client_addr = udp_server.recvfrom(1024)

    print(from_client_msg.decode('utf-8'),client_addr)


    to_client_msg = input('服務端說;')

    udp_server.sendto(to_client_msg.encode('utf-8'), client_addr)

UDP客戶端(多人聊天版)spa

 1 import socket
 2 
 3 udp_client = socket.socket(type = socket.SOCK_DGRAM)
 4 
 5 ip_port = ('127.0.0.1', 8002)
 6 
 7 while 1:
 8     to_server_msg = input('客戶端說:')
 9 
10     udp_client.sendto(to_server_msg.encode('utf-8'), ip_port)
11 
12     from_server_msg, server_addr = udp_client.recvfrom(1024)
13 
14     print(from_server_msg.decode('utf-8'), server_addr)
相關文章
相關標籤/搜索