《計算機網路教程 自頂向下方法》 第一章
TCP/IP協議族(Transmission Control Protocol/Internet Protocol,傳輸控制協議/網際網路協議)
層次化結構
路由器只涉及 3 層(網路層、資料鏈路層、物理層)。
雖然一個路由器總是擁有一個網路層,但是它涉及 n 個數據鏈路層和物理層的組合,其中 n 為路由器連線的鏈路的數目。其主要原因是每一個鏈路可以使用它自己的資料鏈路或物理層。
例如在圖 1-13中,路由器擁有 3 條連結,但是從源 A 傳送到目的地 B 的訊息涉及兩條連結。每一條連結可以使用不同的鏈路層和物理層協議;路由器需要從基於一對協議的鏈路 1 接收分組並將它投遞到基於另一對協議的鏈路 2。
在一條鏈路上的鏈路層交換機只涉及兩個層次:資料鏈路層和物理層。
TCP/IP協議族中的層次
區別:
應用層、傳輸層和網路層的任務是端到端的(end-to-end)
資料鏈路層和物理層的任務是點到點的(hop-to-hop)
高三層的任務範圍是網際網路,低兩層的任務範圍是鏈路。
高三層,資料單元(分組)不應該被任何路由器或鏈路層交換機改變。
低兩層,主機建立的分組僅僅被路由器改變,鏈路層交換機不改變它們。
TCP/IP各層描述
應用層
兩個應用層之間的邏輯連線是端到端的
通訊需要通過所有層次完成。
應用層的通訊處於兩個程序(該層正在執行的兩個程式)之間。
協議 | 作用 |
超級文字傳輸協議(Hypertext Transfer Protocol,HTTP) | 訪問全球資訊網(World Wide Web,WWW)的載體 |
簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP) | 電子郵件(e-mail)服務的主要協議 |
檔案傳輸協議(File Transfer Protocol,FTP |
將檔案從一臺主機傳輸到另一臺主機 |
遠端登入(Terminal Network,TELNET)和安全外殼(Secure Shell,SSH) | 訪問遠端的站點 |
簡單網路管理協議(Simple Network Management Protocol,SNMP) | 對 Internet全域性或區域性進行管理 |
域名系統(Domain Name System,DNS) | 使其他的協議能夠查詢一臺計算機的網路層地址 |
因特網組管理協議(Internet Group Management Protocol,IGMP) | 管理一個組的成員資格 |
傳輸層
傳輸層的邏輯連線也是端到端的
傳輸層負責嚮應用層提供服務:從運行於應用層的程式得到資訊,並將它投遞到目的主機相應的應用程式。
傳輸控制協議(Transmission Control Protocol,TCP)是一個面向連線的協議,它在傳輸資料之前,首先在兩臺主機的傳輸層之間建立一條邏輯連線。TCP 協議在兩個 TCP 層之間建立一個管道,以便傳輸位元組流。
TCP 協議提供流量控制(匹配源主機的傳送資料速率與目的主機的接收資料速率,以防止目的主機溢位)、差錯控制(保證資料段無差錯到達目的地和重新發送受損的資料段)、擁塞控制(減少由於網路擁塞造成的資料段丟失)。
UDP 是一種無連線協議,它傳輸使用者資料報之前不需要建立邏輯連線。在 UDP 中,每個使用者資料報是一個獨立的實體,它和前一個或後一個使用者資料報沒有關係(無連線就是這個意思)。
網路層
網路層的通訊是主機到主機的。
路徑上的路由器負責為每個分組選擇最好的路徑。
我們自己為什麼需要網路層
原因之一是在不同的層次之間分割不同的任務。
原因之二是路由器不需要應用層和傳輸層。分割任務允許我們在路由器上載入較少的協議。
Internet 的網路層包括其主要協議:因特網協議(Internet Protocol,IP),因特網協議定義了在網路層稱為資料報的分組格式。IP 同時定義了在這一層使用的地址格式和結構。與此同時,IP 負責從源主機把一個分組路由到目的主機。這種功能主要是通過每個路由器都將資料報轉發到路徑上的下一個路由器而實現的。
IP 是一個無連線的協議,不提供流量控制、差錯控制和擁塞控制服務。
因特網控制報文協議(Internet Control Message Protocol,ICMP) | 幫助 IP 報告遇到的問題 |
因特網組管理協議(Internet Group Management Protocol,IGMP) | 協助 IP 進行多工處理 |
動態主機配置協議(Dynamic Host Configuration Protocol,DHCP) | 幫助 IP 獲取一臺主機的網路層地址 |
地址解析協議(Address Resolution Protocol,ARP) | 幫助 IP 尋找一臺主機或一臺路由器的鏈路層地址 |
資料鏈路層
我們已經知道一個網際網路是多個鏈路(LAN 和 WAN)通過路由器連線而構成的。從主機傳輸資料報到目的地可能存在多個交疊的鏈路集。
路由器負責選擇最好的鏈路進行傳輸。資料鏈路層都要負責通過鏈路傳輸分組。
資料鏈路層接管一個資料報並將它封裝在一個稱為幀(frame)的分組中。
物理層
我們可以說物理層負責攜帶一個幀中單獨的位元穿過鏈路。
儘管物理層位於 TCP/IP 協議簇的最底層,但是由於在物理層之下存在另外一個隱藏的傳輸介質層,因此兩個裝置物理層之間的通訊仍然是邏輯通訊。
兩個裝置通過一種傳輸介質(電纜或大氣)連線。我們需要知道傳輸介質不攜帶位元;它攜帶電或光訊號。所以,從資料鏈路層接收的一個幀的位元需要被變換,然後通過傳輸介質傳輸。但是我們可以認為兩個裝置物理層之間的邏輯單元是一個位元(bit)
封裝和解封裝
鏈路層交換機中沒有封裝/解封裝發生
源主機的封裝
在源主機端,我們只進行封裝。
1.在應用層,交換的資料稱為訊息(message)。
2.傳輸層把這個訊息的基礎上增加傳輸層頭部,其結果為一個傳輸層分組。該分組在 TCP 中稱為段(segment),在 UDP 中稱為使用者資料報(user datagram)。
3.網路層在傳輸層分組上新增自己的頭部。其結果為一個稱為資料報(datagram)的網路層分組。
4.資料鏈路層在網路層分組上自己的頭部。該頭部包含主機或下一跳步(路由器)的鏈路層地址。其結果為一個稱為幀(frame)的鏈路層分組。
路由器的解封裝與封裝
由於路由器連線兩個或多個鏈路,因此在路由器中我們既需要進行解封裝也需要進行封裝。
1.在位元集被投遞到資料鏈路層後,這一層從幀中解封裝出資料報並將它投遞到網路層。
2.網路層只檢查資料報頭部的源地址和目的地址,查閱它的轉發表以尋找該資料報將被投遞到的下一跳步。除非資料報太大以至於不能通過下一鏈路時需要對其進行分片,資料報的內容不應該被網路層改變。然後,資料報被傳遞到下一鏈路的資料鏈路層。
3.下一鏈路的資料鏈路層將資料報封裝成一個幀,將其傳遞到物理層進行傳輸。
目的主機的解封裝
主機中的解封裝包含差錯檢查。
地址
在 Internet 中,與協議分層相關的另一個概念是地址。正像以前討論的那樣,在這種模型中一對層次之間存在邏輯通訊。包含兩方的任意通訊都需要兩個地址:源地址和目的地址。儘管看起來我們似乎需要 5 對地址(每層一對),但是由於物理層不需要地址,我們通常只需要 4 對;物理層的資料交換單元是一個位元,它絕對沒有地址。
多路複用與多路分解
由於 TCP/IP 協議簇在一些層次使用多個協議,因此我們在源端需要進行多路複用(multiplexing),在目的端需要進行多路分解(demultiplexing)。在這種情況下,
多路複用的意思是一個協議能夠封裝來自多個上層協議的分組(一次一個);
多路分解的意思是一個協議能夠進行解封裝,並且將分組投遞到多個上層協議(一次一個)。