python 網路通信協議/TCP,UDP區別

来源:https://www.cnblogs.com/beargod/archive/2019/01/03/10217138.html
-Advertisement-
Play Games

一.osi七層協議 互聯網協議按照功能不同分為osi七層或tcp/ip五層或tcp/ip四層 協議具體內容 各層的功能簡述: 【1】物理層:主要定義物理設備標準,如網線的介面類型、光纖的介面類型、各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉化為電流強弱來進行傳輸,到達目的地後在 ...


一.osi七層協議

互聯網協議按照功能不同分為osi七層或tcp/ip五層或tcp/ip四層

協議具體內容

 

各層的功能簡述:
    【1】物理層:主要定義物理設備標準,如網線的介面類型、光纖的介面類型、各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉化為電流強弱來進行傳輸,到達目的地後在轉化為1、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下的socket

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客戶端(多人聊天版)

 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客戶端(多人聊天版)

 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)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • vi編輯器是所有Unix及Linux系統下標準的編輯器,它的強大不遜色於任何最新的文本編輯器,這裡只是簡單地介紹一下它的用法和一小部分指令。由於對Unix及Linux系統的任何版本,vi編輯器是完全相同的,因此您可以在其他任何介紹vi的地方進一步瞭解它。Vi也是Linux中最基本的文本編輯器,學會它 ...
  • 列表list初識 列表是python的基礎數據類型之一 ,它是以[ ]括起來, 每個元素用' , '隔開而且可以存放各種數據類型: list列表的定義: 列表的索引和切片操作: 列表的訪問與字元串切片類似,通過索引訪問列表元素,列表的切片也與字元串類似. 列表的常用方法:append():向列表的末 ...
  • 1.原子性: 一個操作或者多個操作,要麼全部執行成功,要麼全部執行失敗。比如賬戶轉賬問題,A賬戶向B轉100,A賬戶減去100元,B賬戶加上一百元,這兩個操作必須具備原子性,才能保證數據的安全,所以需要鎖來保證數據的原子性 2.可見性: 當一個線程修改變數之後,其他線程能夠立即看見修改到的值。比如有 ...
  • 前言 之所以在這裡寫下python爬蟲常見面試題及解答,一是用作筆記,方便日後回憶;二是給自己一個和大家交流的機會,互相學習、進步,希望不正之處大家能給予指正;三是我也是互聯網寒潮下崗的那批人之一,為了找工作而做準備。 一、題目部分 a=['apple', 'banana', 'apple', 't ...
  • 需求總是千奇百怪,對象轉成map,看似沒必要,但就是有這個需求,所以記錄下來 首先是Bean 然後是主要方法和測試類 輸出 ...
  • 新年伊始MIT 就正式 發佈了Scratch最新3.0版 ,以 HTML5.0 為基礎的版本! 本文就來帶看看3.0版有哪些更新的地方。 下圖是進入後第一個畫面,跟Scratch 2.0 很像,熟悉的使用者應該很容易入手! MIT網站也提供了線上教程在 離線編輯器可直接下載 https://scra ...
  • 1. 什麼叫線程安全? 多線程對共用資源進行寫的操作,受到其他線程的干擾,導致數據偶問題,這種現象叫做線程安全問題。 運行結果: 線程安全解決的辦法: 使用多線程之間同步synchronized或使用鎖(lock)。 為什麼使用線程同步或使用鎖能解決線程安全問題呢? 將可能發生線程安全的代碼,在同一 ...
  • 設f[i]為形成極長迴文串i的最小操作數。答案為min f[i]+n len[i]。 在不形成偶迴文的情況下形成奇迴文的最小操作數為該串長度。可以不考慮(但ans賦為len)。 正確性基於: 1)奇、偶迴文嵌套形成最終的偶迴文一定可以轉化為由在不形成奇迴文的情況下形成偶迴文。 2)奇、偶迴文嵌套形成 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...