繼續來看計算機網絡的分層結構,在之前的學習中,我們介紹了計算機網絡的分層結構,以及各層之間的關系。我們把工作在某一層的軟件和硬件模塊稱為這一層的實體,為了完成這一層的某些功能,同一層的實體和實體之間需要遵循某種通信協議。也就是說協議這個東西,它是約束了水平方向的通信規則。
為了讓大家體會到協議的作用。我們不妨從水平的視角來看一下數據是怎么傳輸的。之前我們簡單的介紹過數據傳輸的過程,從垂直的視角來看,發送方這邊的數據會從最頂層開始,逐層的往下傳遞。每一層都會對數據進行相應的處理,然后再放到物理傳輸媒體上進行傳輸,在接收方這邊,當他收到數據之后,又會從最底層開始進行逐層的逆處理,最終獲得原始數據。我們不妨假設應用層需要實現L、M、N這幾個功能,那N這個功能,我們不妨假設它是要把數據進行壓縮,然后再傳輸,從而可以節省流量。基于這樣的設計,發送方的第五層實體需要把數據進行壓縮,壓縮完了之后再交給下面的層次去處理和傳輸,而接收方的第五層實體對等的這個實體,它又需要把數據進行解壓縮,解壓了之后再把它上交給上層的用戶,因此從水平視角來看。這兩個用戶,他們感受不到
數據被壓縮和解壓的過程。在他們倆看來,數據似乎是被原模原樣的傳輸的。但事實上,發送方的第五層實體和接收方的第五層實體分別做了壓縮和解壓縮的過程。
為了支持這樣的功能,我們不妨制定一個協議,這個協議的名字叫做YSCS協議。之前我們說過一個協議規定了水平方向上的兩個對等實體之間的通信規則,為了實現壓縮傳輸這個功能,我們需要在協議當中規定發送方的第五層實體,首先需要把這個數據進行壓縮,數據壓縮的算法有很多種,為了讓接收方能夠用對應的解壓算法去解壓,因此我們需要增加一個首部的信息,也就是一部分控制信息。發送方的應用層實體先把數據用某一種壓縮算法進行壓縮,然后在首部位置指明自己采用了哪一種壓縮算法,這樣的話,當接收方的第五層實體收到這個數據之后,就可以從首部位置去獲取壓縮算法的信息,緊接著再采用對應的解壓算法,把數據進行解壓,再交還給上層的用戶。從這個例子中我們可以感受到,從水平視角來看,對等的兩個實體之間,他們的通信需要遵循某種協議,而遵循這個協議的目的,是為了實現某一種功能。一個協議可能會規定在數據之前增加一個首部。當然,有的協議也可以再增加一個尾部的信息,反正無論是首部還是尾部,這些都是為了實現協議的功能而存在的控制信息。具體首部和尾部需要多少個字節,以及每個字節具有什么含義,這些都需要在協議當中規定清楚。理解了這些之后,我們就可以更深刻的體會到為什么要分層,以及為什么要制定協議了。
我們說計算機網絡功能是很復雜的,所以我們需要先把計算機網絡需要支持的功能A、B、C、D、E、F、G給羅列出來,然后再把這些功能安排到合適的層次當中,處于同一個層次的對等實體,需要去配合著實現這一層當中的這些功能。因此我們需要去制定協議去約束對等實體之間的這種通信規則。
了解協議存在的意義之后,接下來我們再從垂直的視角,來看一下數據傳輸的整個過程。假設左邊這個用戶要給右邊這個用戶發送一些數據,這些數據首先會被交給應用層進行處理,應用層負責實現某一些功能,為了實現這些功能,應用層和應用層之間的通信需要遵循某種協議,因此就需要給這些數據增加協議的首部,我們不妨把它稱為應用層的首部,應用層按照協議的規定做了這些處理之后,又會把這一整塊的數據作為一個整體,把它交給下面這一層傳輸層,傳輸層和傳輸層之間同樣需要遵循某一些通信協議,因此傳輸層也會增加協議控制信息,也就是首部的這部分數據。接下來傳輸層又把這一整塊的數據作為一個整體交給下面這一層網絡層,同樣的道理,網絡層和網絡層之間也需要遵循某種通信協議。因此,網絡層的實體也需要增加一個首部的信息,接下來,網絡層把這些數據交給數據鏈路層。那么,數據鏈路層為了實現本層的功能,它需要增加首部和尾部的信息,無論是首部還是尾部,最終都是為實現協議的功能去服務的。最后數據鏈路層再把這些數據交給物理層,在這種五層的體系結構當中,物理層并不會對這些數據進行任何處理,他只負責把這些二進制的數據原模原樣的傳輸到物理傳輸媒體上,這樣就可以讓數據到達下一個節點,下一個節點接收到這些數據之后,首先交給物理層,緊接著物理層再交給數據鏈路層,這層的實體會根據本層的協議規定,去檢查首部以及尾部的信息,然后根據這些控制信息完成數據鏈路層需要完成的一
些事情,比如說完成差錯控制的功能。如果這些數據沒有什么問題的話,這層的實體會把本層的首部和尾部拆掉,然后再交給上一層進行處理,第三層網絡層,它通過本層的協議控制信息去實現本層應該負責的功能。具體來說,這一層要實現的就是路由,也就是數據分組的存儲轉發,所以第三層的首部信息,它其實會包含發送方的IP地址以及接收方的IP地址這些信息,路由器的第三層實體就可以根據這些信息去決定數據分組下一跳應該把它轉發到什么位置,路由器的第三層實體會對 H3這個部分的控制信息進行一些簡單的處理。
具體是什么處理,我們現在先不展開,總之處理完了之后,它又會把這一整塊的數據交給下一層,也就數據鏈路層,數據鏈路層又會根據對等實體之間的協議去增加首部和尾部的信息,然后再把這些數據交給物理層,物理層再把這些數據通過物理傳輸媒體傳給下一個結點,接收方主機第一層物理層收到這些信息之后,就會把這些信息交給數據鏈路層,后面的過程就是類似的,逐層的往上處理,每一層的實體,只關注本層的首部信息,逐層往上處理,逐層的把首部信息給拆掉,最終交給用戶的就是一個干凈的,沒有首部信息的數據,這樣就完成了數據的傳輸。這就是從垂直視角來看,數據的傳輸過程,同一層次的對等實體之間。他們需要遵循某一種通信協議,而協議本質上是為了某一些功能而服務的,要讓協議規定的事情可以落地,我們就需要在數據之前增加一個首部的信息,每一層只關心自己的首部信息。
捋清這個過程之后,接下來我們引入幾個概念,分別是協議數據單元、服務數據單元和協議控制信息,英文縮寫是PDU、SDU和PCI。首先看協議數據單元,對等層次之間傳送的數據單位,就是這一層的協議數據單元。
比如說第五層和第五層之間,他們傳送的數據就是原始數據加一個H5這個頭部,所以這一整塊東西就是第五層的協議數據單元。類似的,第三層和第三層之間,它們傳送的數據是這一整塊,所以這一整塊就是第三層的協議數據單元。協議數據單元由服務數據單元和協議控制信息組成,協議控制信息指的是控制協議操作的信息,就是剛才我們提到的首部,第五層的協議控制信息,也就是第五層的PCI,就是第五層的首部,第四層的PCI就是第四層的首部,第二層的PCI包含了首部和尾部兩部分的信息,所以首部和尾部加起來,共同組成了第二層PCI,也就是協議控制信息。去除協議控制信息之外,剩下的部分就是本層的服務數據單元,也就是SDU這個概念。服務數據單元是為了完成上一層實體所要求的功能而傳送的數據。
沒有跟上的同學,在這兒給大家羅列了一些例子。大家可以暫停來感受一下,總之這三個概念之間的關系就是某一層的服務數據單元,加上這一層的協議控制信息,共同組成了這一層的協議數據單元,而這一層的協議數據單元,又會作為下一層的服務數據單元。大家可以暫停來體會一下。
最后我們再來介紹協議的三要素。我們要制定一個完整的協議,需要規定這個協議的語法語義和同步分別是什么,這就是所謂的協議三要素。首先,第一個要素,所謂的語法指的是數據與控制信息的格式。比如說我們需要規定這個協議的控制信息,也就首部總共幾個字節,每個字節的含義是什么,以及協議的數據部分,也就是SDU那個部分最多有多少個字節。這就是所謂的語法要規定數據的格式。第二個要素語義,指的是需要發出何種控制信息、完成何種動作以及做出何種應答,聽起來比較抽象。舉個例子,比如剛才我們提到壓縮傳輸的功能,A、B兩臺主機的第五層應用層的實體要實現壓縮傳輸功能。他們之間就需要遵循壓縮傳輸協議,除了規定,這個協議的數據控制信息格式之外。我們還需要規定在雙方進行數據傳輸的過程當中,雙方需要完成哪些動作以及做出哪些應答。比如說當發送方發完數據之后,接收方是否需要給他一個應答的信號,以及這個應答的信號有哪些種類。
比如說,給他應答一個傳輸成功,或者給他應答一個傳輸失敗,這就是所謂的語義要描述清楚的東西。最后第三個要素叫做同步,又叫做時序。在歷年真題當中,出現的是時序這個術語。時序這個要素需要描述清楚,通信雙方執行各種操作的條件、時序關系等等。是對事件實現順序的詳細說明。比如說A、B雙方要遵循壓縮傳輸的協議,這個協議當中我們要求發送方首先要給接收方發送數據,接收方接收完數據之后,需要立即給發送方一個回應。比如說傳輸成功,當然也可以回應傳輸失敗,如果發送方在十秒之內還沒有收到這個接收方的傳輸成功應答的話,發送方會再次嘗試重新發送這個文件的數據。所以我們用一個時序圖去描述清楚了發送方和接收方,他們的動作之間的時序關系。所以語義這個要素是描述了發送方和接收方有可能需要做的動作有哪些,而時序這個要素是需要描述清楚這些動作的發生順序。這三個要素相輔相成,共同組成了協議。在這門課的后續章節中,我們還會詳細學習很多種協議。
在這兩個視頻中,我們介紹了計算機網絡的分層結構。我們說計算機網絡的功能十分復雜,為了讓計算機網絡看起來結構清晰,并且易于維護、易于實現,因此我們引入了分層設計的思想。把計算機網絡分成多個層次,每一個層次負責實現若干個功能。對于同一層次中的活動元素,我們把它稱為這一層的實體,我們可以把處于同一層次的實體稱為對等實體。為了實現一個層次中的各種功能,對等實體之間需要根據某種協議的規定去進行通信。所以協議規定的是水平方向對等實體之間
的通信規則。在一個分層結構的計算機網絡當中,上一層的實體會通過接口去請求下一層實體的服務,而所謂的服務就是為上一層提供的功能調用。所以接口和服務這兩個概念是垂直方向的,它描述的是相鄰的上層和相鄰的下一層之間發生的一個交互關系。服務可以按照不同的維度進行分類,比如可靠的,不可靠的,有連接的,沒有連接的,以及有響應的和沒有響應的,關于服務的分類,在初學階段可以先不了解,隨著這門課后續章節的學習,我們對服務的分類會有更直觀的認知。那在這節課當中,我們也介紹了協議數據單元、服務數據單元和協議控制信息這幾個概念。處于同一層的對等實體之間,以協議數據單元為單位去交換數據,協議數據單元由服務數據單元和協議控制信息組成,所謂的協議控制信息就是首部和尾部,而服務數據單元就是上一層的實體委托給下一層的實體傳輸的那部分數據。而某一層的協議數據單元,又會作為下一層的服務數據單元,這幾個概念比較容易混淆,建議大家看圖復習,反而會更清晰。
在這節課中,我們還介紹了協議的三要素,分別是語法、語義和時序。語法描述了協議的數據與控制信息的格式,也就是描述了一個協議的SDU和PCI的格式。協議的第二個要素語義,描述了使用協議的這些對等實體之間需要發出什么樣的控制信息,以及需要完成什么樣的動作,做出什么樣的回應。簡言之,語意描述了對等實體之間需要做什么,而最后一個要素時序,它需要描述這些對等實體做的這些動作,觸發條件是什么,以及先后順序是什么?也就是需要描述清楚什么時候做。由于到目前為止,我們暫時還沒有接觸任何一個具體的協議,所以這幾個概念現在聽起來比較抽象是很正常的。通過這門課后續章節的學習對這幾個概念的理解會更加深刻。在上一節課當中我們也介紹了計算機網絡體系結構的概念。當我們要設計計算機網絡體系結構的時候,我們需要精確的定義層次的劃分以及各層的功能,各層的協議等等,只需要給出精確的定義就可以,而不需要涉及到具體的實現。相當于我們設計一個體系結構,只是給計算機網絡的軟硬件開發者搭建了一個框架,開發者們只需要按照體系結構的定義去進行開發。開發的軟件和硬件就可以在我這個網絡上去正常的運行。
所以具體的實現這個問題是交給軟硬件開發者的,體系結構的設計者只需要給出定義就可以,在上節課中我們也簡單介紹了三種常見的網絡體系結構,分別是OSI參考模型TCP/IP模型,以及我們教學使用的五層模型。OSI參考模型是法律標準,是由一個國際標準化組織提出來的,但是現在的互聯網世界,網絡的體系結構是TCP/IP模型,也就是分為了四層,所以TCP/IP模型它是事實上的標準。在下節課中,我們會展開介紹OSI參考模型和TCP/IP模型,而在這門課程的后續幾個章節中,我們會更詳細的去研究五層模型的各個層次。
以上就是這個視頻的全部內容。