python网络通信协议_Python网络概述:协议与体系结构的运用
網(wǎng)絡(luò)中存在多臺主機,為保證主機間能順利通訊,且通信雙方可以獲取到準確、有效的數(shù)據(jù),應(yīng)制訂一組用于數(shù)據(jù)傳輸?shù)囊?guī)則,這組規(guī)則就是協(xié)議。
協(xié)議需要預(yù)先制定,同時,為確保網(wǎng)絡(luò)通訊過程中對各種事件的應(yīng)對能“有法可依”,協(xié)議應(yīng)面面俱到。但網(wǎng)絡(luò)間的通信需要經(jīng)歷復(fù)雜的過程,一段復(fù)雜過程中的各項操作會出現(xiàn)各種各樣的結(jié)果,為復(fù)雜過程的多種結(jié)果也會是復(fù)雜的。為了簡化協(xié)議,人們考慮按照通信過程中各項工作的性質(zhì),將工作分為不同層次,并為每一層制定各自的協(xié)議。
制定協(xié)議時為網(wǎng)絡(luò)間通信過程所劃分的層次通常稱為計算機網(wǎng)絡(luò)的體系結(jié)構(gòu)。下面先對網(wǎng)絡(luò)體系結(jié)構(gòu)進行講解,再基于體系結(jié)構(gòu)中的層次介紹常用的網(wǎng)絡(luò)協(xié)議。
1. 網(wǎng)絡(luò)體系結(jié)構(gòu)
計算機網(wǎng)絡(luò)中常見的體系結(jié)構(gòu)有OSI(Open System Interconnect,開放式系統(tǒng)互聯(lián)模型)和TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議模型)。
OSI由國際標準協(xié)會ISO制定,共分為七層,由上而下依次為應(yīng)用層、表示層、會話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層,雖然OSI由ISO制定,但其實用性較差,并未得到廣泛應(yīng)用。
在OSI誕生時,因特網(wǎng)已實現(xiàn)了全世界的基本覆蓋,因此市面上應(yīng)用最廣泛的體系結(jié)構(gòu)為因特網(wǎng)中使用的TCP/IP體系結(jié)構(gòu),該結(jié)構(gòu)包含四層,分別為應(yīng)用層、傳輸層、網(wǎng)際層和網(wǎng)絡(luò)接口層。
此外,在計算機網(wǎng)絡(luò)中通常以一種包含五層協(xié)議的體系結(jié)構(gòu)來講解各層之間的功能與聯(lián)系,這種體系結(jié)構(gòu)結(jié)合OSI和TCP/IP的優(yōu)點,分為應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層。
以上三種體系結(jié)構(gòu)中各層的對應(yīng)關(guān)系如圖1所示。
圖1 計算機網(wǎng)絡(luò)體系結(jié)構(gòu)
五層協(xié)議體系結(jié)構(gòu)中各層的功能分別如下:
(1)物理層。物理層是計算機體系結(jié)構(gòu)的最底層,它為設(shè)備之間的數(shù)據(jù)傳輸提供可靠的環(huán)境。
(2)數(shù)據(jù)鏈路層。數(shù)據(jù)鏈路層簡稱鏈路層,該層將從網(wǎng)絡(luò)層獲取的數(shù)據(jù)報組裝成幀,在網(wǎng)絡(luò)結(jié)點之間以幀為單位傳輸數(shù)據(jù)。
(3)網(wǎng)絡(luò)層。為分組交換網(wǎng)上的不同主機提供通信服務(wù),在進行通信時,將從傳輸層獲取的報文段或數(shù)據(jù)報封裝成分組或包,數(shù)據(jù)或包通常稱為數(shù)據(jù)報。
(4)傳輸層。為應(yīng)用進程提供連接服務(wù),實現(xiàn)連接兩端進程的會話。
(5)應(yīng)用層。為應(yīng)用進程提供服務(wù),定義了應(yīng)用進程間通信和交互的規(guī)則。
2. 協(xié)議
計算機網(wǎng)絡(luò)通信基于TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議),TCP/IP實際上并不是協(xié)議,而是協(xié)議族,它由多種協(xié)議構(gòu)成,包括TCP協(xié)議、UDP協(xié)議、IP協(xié)議等等,其中TCP、UDP協(xié)議應(yīng)用在傳輸層;IP協(xié)議應(yīng)用在網(wǎng)絡(luò)層。
(1)TCP協(xié)議
TCP協(xié)議即傳輸控制協(xié)議(Transmission Control Protocol),該協(xié)議是一種面向連接的、可靠的、基于字節(jié)流的傳輸協(xié)議。在傳遞數(shù)據(jù)之前,收發(fā)雙方會先通過一種被稱為“三次握手”的協(xié)商機制使通信雙方建立連接,為數(shù)據(jù)傳輸做好準備。為了防止報文段丟失,TCP會給每個數(shù)據(jù)段一個序號,使接收端按序號順序接收數(shù)據(jù)。若接收端正常接收到報文段,向發(fā)送端發(fā)送一個確認信息;若發(fā)送端在一定的時延后未接收到確認信息,便假設(shè)報文段已丟失,并重新向接收端發(fā)送對應(yīng)報文段。此外,TCP協(xié)議中定義了一個校驗函數(shù),用于檢測發(fā)送和接收的數(shù)據(jù),防止產(chǎn)生數(shù)據(jù)錯誤。
通信結(jié)束后,通信雙方經(jīng)過“四次握手”關(guān)閉連接。因為TCP連接是全雙工的(全雙工指交換機在發(fā)送數(shù)據(jù)的同時也能夠接收數(shù)據(jù),兩者同步進行,類似語音通話,雙方在說話的同時也能夠聽到對方的聲音),所以每個方向必須單獨關(guān)閉連接,即連接的一端需先發(fā)送關(guān)閉信息到另一端,當(dāng)關(guān)閉信息發(fā)送后,發(fā)送關(guān)閉信息的一端不會再發(fā)送信息,但另一端仍可向該端發(fā)送信息。
(2)UDP協(xié)議
UDP協(xié)議即用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol),它是一種無連接的傳輸層協(xié)議。 UDP的收發(fā)雙方不存在連接,當(dāng)按照UDP協(xié)議傳輸數(shù)據(jù)時,發(fā)送方使用套接字文件發(fā)送數(shù)據(jù)報給接收方,之后可立即使用同一個套接字發(fā)送其它數(shù)據(jù)報給另一個接收方;同樣的,接收方也可以通過相同的套接字接收由多個發(fā)送方發(fā)來的數(shù)據(jù)。
UDP不對數(shù)據(jù)報進行編號,它不保證接收方以正確的順序接收到完整的數(shù)據(jù),但會將數(shù)據(jù)報的長度隨數(shù)據(jù)發(fā)送給接收方。雖然UDP面向無連接的通信,不能如TCP般很好地保證數(shù)據(jù)的完整性和正確性,但UDP處理速度快,耗費資源少,因此在對數(shù)據(jù)完整性要求低、對傳輸效率要求高的應(yīng)用中一般使用UDP協(xié)議傳輸數(shù)據(jù)。
(3)IP協(xié)議
IP協(xié)議的兩個基本功能為尋址和分段。傳輸層的數(shù)據(jù)封裝完成后沒有直接發(fā)送到接收方,而是先遞達網(wǎng)絡(luò)層;網(wǎng)絡(luò)層又在原數(shù)據(jù)報前添加IP首部,封裝成IP數(shù)據(jù)報,并解析數(shù)據(jù)報中的目的地址,為其選擇傳輸路徑,將數(shù)據(jù)報發(fā)送到接收方,IP協(xié)議中這種選擇道路的功能稱為路由功能。此外,IP協(xié)議可重新組裝數(shù)據(jù)報,改變數(shù)據(jù)報的大小,以適應(yīng)不同網(wǎng)絡(luò)對包大小的要求。需要說明的是,IP協(xié)議不提供端到端或結(jié)點到結(jié)點的確認,只檢測報頭中的校驗碼,不提供可靠的傳輸服務(wù)。
雖然各層使用的協(xié)議互不相同,但協(xié)議通常都由如下3個部分組成:
(1)待交互數(shù)據(jù)的結(jié)構(gòu)和格式;
(2)進行交互的方式,包括數(shù)據(jù)的類型、對數(shù)據(jù)的處理動作等;
(3)事件實現(xiàn)順序的說明。
一組完整的協(xié)議不僅需要考慮通信雙方在正常情況下的動作,還應(yīng)考慮到通信時可能出現(xiàn)的異常,并對異常情況下通信雙方的動作做出規(guī)定。
猜你喜歡:
總結(jié)
以上是生活随笔為你收集整理的python网络通信协议_Python网络概述:协议与体系结构的运用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不知道该如何挑选合适的瓷砖?
- 下一篇: python之路_Python之路