面試突擊:說一下TCP/IP 協議?你了解每層的作用嗎?
TCP/IP 包含四層模型,從上層往下層分別是:應用層、傳輸層、網絡層、數據鏈路層。有些資料也會說TCP/IP 是五層模型,所謂的五層模型指的是在數據鏈路層下面還有一個物理層,而作為軟件工程師一般不需要關注物理層,所以通常我們說TCP/IP 四層模型更多一些。
1.應用層
應用層的作用是負責應用程序間的數據通訊的。不同的網絡應用需要不同的應用層協議,比如電子郵件傳輸SMTP 協議、文件傳輸FTP 協議、網絡遠程訪問Telnet 協議等等。
常見協議
應用層的常見協議有以下兩個:
DNS 域名解析協議(Domain Name System,域名系統),DNS 是將域名和IP 做一個映射,因為在程序間通訊依靠的是IP,但IP 地址不方便記憶,而域名方便記憶,所以將二者作為一個key-value 映射在一起,這樣知道了域名置換就能找對與之相對應的IP 了,這樣既能方便用戶記憶,同時又能滿足程序間的數據通訊。
HTTP 協議(HyperText Transfer Protocol,超文本傳輸協議),互聯網上應用最為廣泛的一種網絡協議。所有的WWW(萬維網) 文件都必須遵守這個標準。
2.傳輸層
傳輸層的主要作用是負責兩台主機間的數據傳輸的。如傳輸控制協議(TCP),能夠確保數據可靠的從源主機發送到目標主機。
注意:應用層和傳輸層描述的主體對像是不同的,應用層描述的主體是“應用程序間”,而傳輸層描述的主體是“兩台主機間”。其中,一個主機可以包含多個應用程序,所以二者是不同的。
常見協議
傳輸層的常見協議有以下兩個:
- TCP 協議(Transmission Control Protocol,傳輸控制協議):提供了穩定的、需要連接的、面向字節流的協議。
- UDP 協議(User Datagram Protocol,用戶數據協議):提供了無連接的、不穩定的、面向數據報的協議。
3.網絡層
網絡層的作用是負責網絡上的地址管理和路由選擇的。在數據通訊時,可以選擇很多條路徑(抵達目的地的),比如從西安到北京,可以選擇先從西安-> 太原-> 北京,也可以選擇從西安-> 鄭州-> 石家莊-> 北京,還可以選擇從西安-> 延安-> 呼和浩特-> 張家口-> 北京,究竟選擇那一條路呢?這就是網絡層負責的。
4.數據鏈路層
數據鏈路層的作用是負責設備之間的數據幀的傳送和識別的。數據在傳輸時需要經過多個設備進行數據傳輸,而數據鏈路層就是負責相鄰設備間的數據傳輸和識別的。數據鏈路層可以完全消除網絡層和物理層之間的不同,將數據在鏈路層進行有效的識別和傳輸。
5.物理層(可選)
物理層的作用是負責將數據轉換成信號,再將信號轉換為數據的。轉換方法因通訊媒體不同而不同,所以沒有特定的協議。
總結
TCP/IP 包含了五層(或四層)模型,從上層往下層分別是:
- 應用層:負責應用程序間的數據通訊。
- 傳輸層:負責兩台主機之間的數據傳輸。
- 網絡層:負責網絡地址的管理和路由選擇。
- 數據鏈路層:負責設備之間的數據幀的傳送和識別。
- 物理層(可選):負責數據和信號間的轉換。