胡正 高朱飛 徐壯
摘要:隨著互聯網時代的到來,互聯網思維正不斷顛覆人們對傳統行業的認知。本文透過紛繁復雜的網絡世界,從支撐互聯網運行的底層機制即TCP/IP模型出發,自底向上詳細論述該模型各層功能,從而清晰描繪出互聯網上任何兩臺計算機之間實現互聯互通的背后機理,以期為相關人員理解互聯網運行機制提供有益借鑒。
關鍵詞:互聯網;TCP/IP模型;數據通信
中圖分類號:TP393 文獻標識碼:A 文章編號:1007-9416(2020)08-0022-03
0 引言
當前,互聯網正以前所未有的速度與傳統各行各業進行深度融合[1-4]。要想深入理解互聯網時代,就不得不提互聯網的運行機制:TCP/IP模型[5]。雖然TCP/IP模型只有5個層次,但是各個層次都有它獨特的功能,它們之間相互配合,才能完成全球的互聯網通信。如何深入理解TCP/IP模型各層的功能,是每一名想理解互聯網運行機制人員面臨的一大難題。
本文站在從無到有構建網絡通信的角度,給出TCP/IP模型各層的由來,以及每一層的功能,以期為關心互聯網運行機制的人員理解TCP/IP模型各層功能提供借鑒。本文所述TCP/IP模型自頂向下由應用層、傳輸層、網絡層、數據鏈路層與物理層組成。后續將自底層向頂闡述各層功能。
1 TCP/IP各層功能
1.1 物理層功能
首先以雙機通信為例。如果采用有線的方式實現兩臺主機之間的通信,至少需要一條網線把兩臺主機連接起來,才能保證源主機發出的數據到達目的主機。同時,我們知道源主機待發送的數據其實是01序列,而在網線上傳輸的只能是電信號。因此,只用網線把兩臺主機連接起來還不能實現兩臺主機之間的數據通信,還必須把源主機上待發送的數據也就是01序列轉換為可以在網線上傳輸的電信號。此外,目的主機還需要把收到的電信號再轉換為01序列以便進行數據處理。當然,如果采用光纖作為實現數據傳輸的介質,那么收發主機自然需要實現01序列與光信號之間的轉換。實現01序列與光電信號之間的轉換其實就是物理層的功能。
1.2 數據鏈路層功能
對于簡單的雙機直接互連通信模型,通過物理層即可實現它們之間的通信。對于三臺及以上的計算機,應該如何實現它們之間的兩兩相互通信?最簡單的方法是把每兩臺計算機用網線互連起來,但是這樣一臺主機為了和其余的主機通信,那么它必須配置多個網絡接口和多根網線,顯然該方法不經濟。與衛星通信中任何兩個地球站通過衛星中轉實現通信的方式類似,我們完全可以把多臺計算機全部連接到一臺中心設備上,讓中心設備作為中轉站完成每兩臺計算機之間的通信,該中心設備其實就是交換機。
當兩臺計算機直接用網線互連時,一臺主機發出的數據必然會傳輸給另外一臺主機,所以不用考慮源主機發出的數據要傳給哪一臺主機的問題。但是,對于連接在交換機上的多臺主機而言,怎么保證從一臺源主機發出的數據能夠去往它要去的目的主機,而不會誤傳給其他主機?為了解決這一問題,就需要給每臺主機分配一個獨立標識,該獨立標識實際上就是主機的物理地址,一般稱為MAC地址。此時,源主機在給目的主機發送數據之前,通過給待發送的數據添加目的MAC地址控制待發送數據去往目的主機,同時通過給待發送的數據添加源MAC地址用以指明該數據來自哪臺源主機。至此,通過MAC地址即可實現由交換機互連起來的局域網內任何相鄰的兩臺主機之間的通信。這其實就是數據鏈路層的功能之一:實現數據在相鄰節點設備之間的傳遞。
當數據在相鄰節點設備之間的線路上傳遞時,它容易受到線路上電子熱運動或來自外界的電磁干擾,從而導致目的主機可能會收到錯誤的數據。為此,目的主機必須具備判斷收到的數據是否出錯的能力,這其實就是數據鏈路層的差錯檢測功能。源主機的數據鏈路層模塊在發送數據之前,它將會采取類似給數據貼上 “封條”的操作。當目的主機收到數據后,它的數據鏈路層模塊通過檢測“封條”是否損壞就可以判斷數據在傳輸過程中是否出錯。由此,我們總結出數據鏈路層的功能是實現數據在相鄰節點之間的傳遞,同時對數據進行差錯檢測。
1.3 網絡層功能
通過對數據鏈路層功能的闡述,我們知道局域網中某臺源主機給該網絡中另外一臺目的主機發數據時,它必須要知道目的主機的MAC地址。MAC地址是網卡制造商在生產時就固化到網卡的存儲芯片中,但是每塊網卡都可能被出售到世界各地。所以,在互聯網上很難通過MAC地址對目的主機進行定位。不過,這并不影響局域網內任何兩臺主機之間通過MAC地址實現數據通信。因為局域網的覆蓋范圍比較小,所以源主機可以通過廣播的方式獲取處在同一個局域網內目的主機的MAC地址,從而實現它們之間的數據通信。但是,源主機通過廣播方式獲取目的主機MAC地址的方法并不能應用于廣域網更不用說互聯網,因為這會帶來廣播風暴。通過以上分析,我們不難看出僅僅依靠數據鏈路層和物理層并不能實現世界范圍內的互聯網通信。
為了實現當今互聯網范圍內的網絡通信,我們可以從電話網通信獲得啟示。類似電話網通過電話號碼對座機進行定位,在互聯網上也是給每臺主機分配全網惟一的網絡地址對主機進行定位,該地址就是IP地址。類似電話號碼由區號和座機號組成,網絡里面也是首先給每一個由交換機組建的網絡分配一個惟一的網絡號,然后再給該網絡內的每一臺主機分配一個惟一的主機號。由網絡號與主機號就組成了IP地址,通過IP地址就可以實現對互聯網上任何一臺主機的定位。以上所述其實就是TCP/IP模型網絡層的編址功能。所謂編址是指給網絡里面的每一臺主機編配全網惟一的IP地址。
由交換機組建的不同局域網之間通過工作在網絡層的路由器互連起來,通過路由器就實現了全球范圍內網絡的互連。如果兩臺主機相距很遠,那么數據如何從一臺源主機所在的源網絡穿越茫茫的互聯網到達目的主機所在的目的網絡而不是在網絡中走丟?與我們開車從一地去往另外一地需要地圖或者導航類似,數據在網絡里面從源主機穿越茫茫網絡到達目的主機,也需要導航,這就需要網絡層具備給數據選擇從源主機到達目的主機路線的能力。通過以上分析,我們得出網絡層的功能主要是給主機編址以及選擇數據從源主機到達目的主機路徑。
1.4 傳輸層功能
通過物理層、數據鏈路層與網絡層就能夠實現兩臺主機之間的通信嗎?答案是否定的。其實,網絡通信的起點和終點都是運行的應用程序,運行的應用程序稱為應用進程。例如,我們通過微信發送消息時,首先需要打開微信程序,打開的微信程序其實就是微信進程。那么,如何保證一臺源主機上微信進程發出的數據去往目的主機上的微信進程,而不會被錯誤的發往目的主機上的其他應用進程例如網頁瀏覽器?這就需要傳輸層,它實現了兩個應用進程之間的通信。通過給通信雙方主機上的應用進程進行編號,即可確定發送數據與接收數據的應用進程,應用進程的編號稱為端口號。因此,當源進程發送數據時,它會給待發送的數據添加目的應用進程的端口號,以便指明數據將要去往的目的應用進程。同時,它也會給待發送的數據添加源應用進程的端口號,以便指明該數據來自哪個源應用進程。以上所述其實就是TCP/IP模型傳輸層的功能之一:實現應用進程之間的通信。
當數據穿越茫茫的網絡向目的主機傳遞時,與郵局傳遞快遞類似,網絡層并不能保證數據能夠不出差錯的到達目的主機。自然,網絡層也就無法保證數據能夠正確的到達目的應用進程。但是對于某些網絡應用進程而言,例如瀏覽網頁、發送電子郵件、下載文件,實現此類網絡應用的應用進程要求數據必須準確無誤的從源進程傳輸到目的應用進程。為了給網絡應用進程提供可靠傳輸服務,傳輸層除了具備實現應用進程之間通信的功能,還需要具備為應用進程提供可靠數據傳輸服務。此外,傳輸層還需要解決源應用進程與目的應用進程之間發收數據能力不匹配的問題,否則會出現源應用進程發送大量數據將目的應用進程淹沒的情況出現,這必然會導致目的應用進程因為來不及接收源應用進程后續發過來的數據而選擇丟棄數據。傳輸層匹配收發進程之間數據收發能力的功能稱為流量控制功能。除此之外,傳輸層還要考慮當網絡中某個節點發送擁塞了,源應用進程需要抑制發送數據的速度,以免網絡的擁塞程度進一步上升從而造成通信的中斷。因此,傳輸層還需要具備擁塞控制功能。綜上所述,我們總結傳輸層的主要功能是:實現應用進程之間的通信、實現數據的可靠傳輸、流量控制與擁塞控制。
1.5 應用層功能
從前文可知,網絡通信的起點與終點都是應用進程。與寫信需要規范書寫的格式類似,應用進程之間在交互數據時也需要規范雙方的交換行為。例如,源應用進程發出的數據格式是文字、圖片還是音視頻?該數據是否被加密,采用何種加密方法?該數據是否被壓縮,采用何種壓縮方法?如此等等。為了規范通信雙方應用進程之間的數據交互,就需要TCP/IP模型中的應用層。應用層正是通過這一功能為各種網絡應用進程提供網絡通信服務,從而最終為我們提供了海量的網絡應用,最終造就了今天繁榮的互聯網時代。
2 結語
當前,互聯網正處在高速發展階段,各類網絡應用層出不窮。不管互聯網的未來如何發展演進,互聯網運行的底層機制也就是TCP/IP模型其實一直未變。正是通過TCP/IP模型各層功能的實現才實現了世界范圍內的互聯互通,才讓我們享受到互聯網時代帶來的種種紅利。本文從實現網絡世界里主機之間的通信出發,詳細闡述了TCP/IP模型各層的功能,以期為關心互聯網發展的人士提供看待高速發展變化互聯網的底層運行視角。
參考文獻
[1] 馮曉英,王瑞雪,曹潔婷,等.“互聯網+”時代三位一體的教育供給側改革[J].電化教育研究,2020(4):42-48.
[2] 王芳.“互聯網+”背景下的現代農業發展路徑探析[J].農業經濟,2020(3):19-20.
[3] 鞏英杰,張媛媛.“互聯網+”視角下養老服務產業轉型升級路徑研究[J].宏觀經濟研究, 2020(3):153-163.
[4] 張學誕,張耀文.“互聯網+”背景下我國稅收合作遵從機制的構建[J].稅務研究,2020(1):96-100.
[5] Cerf,Kahn.A Protocol for Packet Network Intercommunication[J].IEEE Trans on Comms,1974,22(5):637-648.