標籤:style blog http tar ext color
第一章 TCP/IP協議族1.1 TCP/IP協議族體繫結構以及主要協議
1.1.1資料連結層
資料連結層實現了網卡介面的網路驅動程式,以處理資料在物理媒介上的傳輸。
資料連結層兩個常用的協議是ARP(AddressResolve Protocol,位址解析通訊協定)和RARP(Reverse Address Resolve Protocol,逆位址解析通訊協定)。他們實現了IP地址和機器物理地址之間的相互轉換。
網路層使用IP地址定址一台機器,而資料連結層使用物理地址定址一台機器,因此網路層必須先將目標機器的IP地址轉化成其物理地址,才能使用資料連結層提供的服務,這就是ARP的用途。RARP協議僅用於網路上某些無盤工作站。因為卻反存放裝置,無盤工作站無法機制自己的IP地址,但他們可以利用網卡上的物理地址來向網路管理者查詢自身的IP地址。運行RARP服務的網路管理者通常存有該網路上所以機器的物理地址到IP地址的映射。
1.1.2網路層
網路層實現資料報的選路和轉寄。網路層的任務是選擇路由器等中間節點,以確定兩台主機之間的通訊路徑。同時,網路層對上層協議隱藏了網路拓撲串連的細節,使得在傳輸層和網路應用程式看來,通訊雙方是直接相連的。
網路層最核心的協議是IP協議(網際網路協議)。IP協議根據資料包的目的IP地址來決定如何投遞它,IP協議使用逐跳(hop byhop)的方式確定路徑。
網路層另外一個重要協議是ICMP(InternrtControl Message Protocol,網際網路控制報文協議),主要用來檢查網路連接。ICMP報文分為兩類:一類是差錯報文,用來回應網路錯誤,另一類是查詢報文,用來查詢網路資訊。ping程式就是使用ICMP報文查看目標報文是否可達。
如所示,8位類型欄位用於區分報文類型,代碼欄位用於進一步細分不同條件。使用16為校正和對整個報文進行迴圈冗餘校正(Cyclic Redundancy Check,CRC)。
1.1.3傳輸層
傳輸層為兩台主機的應用程式提供端到端的通訊。與網路層使用的逐跳通訊方式不同,傳輸層只關心通訊的開始端點和目的端。
傳輸層負責資料的收發、鏈路的逾時重發等功能。
傳輸層主要有三個協議:TCP協議、UDP協議和SCTP協議
TCP協議(Transmission Control Protocol,傳輸控制通訊協定)為應用程式層提供可靠的、連線導向的和基於流的服務。
UDP協議(User Datagram Protocol,使用者資料報文)為應用程式層提供不可靠、無串連和基於資料報的服務。
SCTP協議(Stream Control Trasmission Protocol,流量控制協議)是為了在網際網路上傳輸電話訊號而設計的。
1.1.4應用程式層
應用程式層負責應用程式的邏輯。上面三層協議系統負責處理網路通訊細節,這部分必須穩定又高效,因此在核心中實現。而應用程式層則在使用者空間實現。
應用程式層協議很多,舉例如下:
ping是應用程式層序,而不是協議:利用ICMP報文檢測網路連接
telnet協議是一種遠程登入協議
OSPF(OpenShortest Path First先開啟最短的路徑)協議提供一種動態路由更新協議,用於路由器之間的通訊,以告知對方各自的路由資訊。
DNS(Domain NameService 網域名稱服務 (DNS))協議提供機器網域名稱到IP地址的轉換。
應用程式層協議可能跳過傳輸層直接使用網路層提供的服務,如ping和OSPF協議。通常既可以使用TCP服務,又可以使用UDP服務,比如DNS協議。
我們可以通過/etc/services檔案查看所有知名的應用程式層協議。
1.2封裝
上層協議通過分裝使用下層提供的服務。應用程式資料在發送到物理網路之前,將沿著協議棧從上往下依次傳遞。每層協議都將在上層資料的基礎上加上自己的頭部資訊(有時包括尾部),以實現該層的功能,這個過程就是封裝。
經過TCP封裝後的資料成為TCP報文段,經過UDP封裝後的資料成為UDP資料報,它們UDP無須為應用程式層儲存副本,因為它提供的服務不可靠。當一個UDP資料報被成功發送之後,UDP核心緩衝區中的該資料就被丟棄,如果應用程式層序檢測到該資料報未能被接收端正接收,並打算重發這個資料報,則應用程式層序需要重新從使用者空間將該資料報拷貝到UDP核心發送緩衝區。而發送TCP報文,會在TCO緩衝區中儲存副本。
經過IP封裝後的資料成為IP資料報,也包括頭部資訊和資料部分。其中資料部分就是TCP報文段、UDP資料報或者ICMP報文。
經過資料鏈路封裝後的資料成為幀。
幀的傳輸單元最大值(MaxTransimit Unit, MTU),即幀最多能攜帶多少上層資料,通常受網路限制,乙太網路的MTU是1500位元組。幀才是最終在物理網路上傳送的位元組序列。
利用ifconfig命令可以查看MTU值,還可以顯示或配置網路裝置(網路介面卡)。
1.3分用
當幀達到目的主機時,將沿著協議棧向上一次傳遞。各層協議一次處理幀中本層負責的頭部資料,以擷取所需資訊,並將最終處理後的幀交給目標應用程式,這個過程叫做分用。分用是依靠頭部資訊中的類型欄位實現的。
幀提供的頭部資訊中的類型欄位用於區分IP,ARP,RARP。其中IP欄位值為0x800,ARP為0x806,RARP為0x835。
同樣IP資料報的頭部採用16為協議欄位區分ICMO,TCP,UDP。
TCP和UDP則通過頭部中的16為連接埠號碼區分上次應用程式,比如DNS連接埠號碼為53,HTTP為80。所以知名應用程式層協議使用的連接埠號碼都可以在/etc/services中找到。
轉載請註明出處,謝謝~~