ARP協議和RARP協議,它們實現了IP地址和機器物理地址之間的相互轉化網絡
ARP協議(Address Resolve Protocol,地址解析協議)數據結構
RARP協議(Reverse Address Resolve Protocol,逆地址解析協議)3d
做用:網絡層是用IP地址尋址一臺機器,而數據鏈路層是用物理地址尋址一臺機器,所以網絡層必須先將目標機器的IP地址轉化成其物理地址,這就是ARP協議的用途。RARP協議僅用於網絡上某些無盤工做站。由於缺少儲存設備,無盤工做站沒法記住本身的IP地址。可是它們能夠利用網卡上的物理地址來向網絡管理者查詢自身的IP地址。運行RARP服務的網絡管理者一般存有該網絡上有所及其得物理地址到IP地址映射。blog
ip協議和ICMP協議,它們實現了數據包的選路和轉發。網絡層的任務就是選擇這些中間節點,已肯定兩臺主機之間通訊路徑。ip
TCP協議、UDP協議和SCTP協議
傳輸層爲兩臺主機上的應用程序提供端對端的通訊。與網絡層使用的逐跳通訊方式不一樣,傳輸層只關心通訊的起始端和目的端,而不在意數據包的中轉過程。io
應用層在用戶空間實現,而數據鏈路層、網絡層和傳輸層處理網絡通訊細節,這部分必須穩定有高效,所以它們都在內核空間中實現。class
傳輸層爲兩臺主機上的應用程序提供端對端的通訊。與網絡層使用的逐跳通訊方式不一樣,傳輸層只關心通訊的起始端和目的端,而不在意數據包的中轉過程基礎
爲應用層提供可靠的、面向鏈接和基於流的服務。TCP協議通訊使用超時重傳、數據肯定等待來確保數據包被正確地發送至目的端。所以TCP服務是可靠的。定時器
使用TCP協議通訊的雙方必須先創建TCP鏈接,並在內核中爲鏈接維持一些必要的數據結構,好比鏈接的狀態、讀寫緩衝區以及諸多定時器等。當通訊結束時,雙方必須關閉鏈接已釋放這些內核數據。TCP服務時給予流的。給予流的數據沒有邊界限制,它源源不斷地從通訊的一端流入另外一端。發送端能夠逐個字節地向數據流寫入數據,接受端也能夠逐個字節地將它們讀出程序
爲應用層提供不可靠、無鏈接和基於據包的服務。
UDP協議沒法保證數據從發送端正確的地傳送到目的端。若是數據在中途丟失,或者目的端數據校驗發現數據錯誤誤將其丟棄,則UDP協議知識簡單的通知應用程序發送失敗,所以,使用UDP協議的應用程序一般要本身處理數據確認、超時重傳等邏輯。UDP協議是無鏈接的,即通訊雙方不保持一個長久的聯繫,所以應用程序每一次發送數據都要指定接收方的地址。每個UDP數據都有一個長度,就接受端必須以該長度爲最小單位將其全部內容一次性讀出,不然數據將被截斷。
上層協議是如何使用下層協議提供的服務的呢?其實經過封裝實現的。應用程序數據在發送到無力網絡上以前,將沿着協議棧從上往下依次傳遞。每一層協議都將在上冊數據的基礎上加上本身的頭信息。
當幀到達目的的主機時,將沿着協議棧自底向上依次傳遞。各層協議依次處理幀中本層負責的頭數據,以獲取所需的信息,並最終將處理後的幀交給目的應用程序。