TCP/IP協議體系結構簡介

一、TCP/IP協議棧
四層模型
TCP/IP這個協議遵照一個四層的模型概念:應用層、傳輸層、互聯層和網絡接口層。
網絡接口層
模型的基層是網絡接口層。負責數據幀的發送和接收,幀是獨立的網絡信息傳輸單元。網絡接口層將幀放在網上,或從網上把幀取下來。
互聯層
互聯協議將數據包封裝成internet數據報,並運行必要的路由算法。
這裏有四個互聯協議:
網際協議IP:負責在主機和網絡之間尋址和路由數據包。
地址解析協議ARP:得到同一物理網絡中的硬件主機地址。
網際控制消息協議ICMP:發送消息,並報告有關數據包的傳送錯誤。
互聯組管理協議IGMP:被IP主機拿來向本地多路廣播路由器報告主機組成員。
傳輸層
傳輸協議在計算機之間提供通訊會話。傳輸協議的選擇根據數據傳輸方式而定。
兩個傳輸協議:
傳輸控制協議TCP:爲應用程序提供可靠的通訊鏈接。適合於一次傳輸大批數據的狀況。並適用於要求獲得響應的應用程序。
用戶數據報協議UDP:提供了無鏈接通訊,且不對傳送包進行可靠的保證。適合於一次傳輸小量數據,可靠性則由應用層來負責。
應用層
應用程序經過這一層訪問網絡。
網絡接口技術
IP使用網絡設備接口規範NDIS向網絡接口層提交幀。IP支持廣域網和本地網接口技術。
串行線路協議
TCP/IPG通常經過internet串行線路協議SLIP或點對點協議PPP在串行線上進行數據傳送。(是否是咱們平時把它稱之爲異步通訊,對於要拿LINUX提供創建遠程鏈接的朋友應該多研究一下這方面的知識)?
二、ARP
要在網絡上通訊,主機就必須知道對方主機的硬件地址(咱們不是老遇到網卡的物理地址嘛)。地址解析就是將主機IP地址映射爲硬件地址的過程。地址解析協議ARP用於得到在同一物理網絡中的主機的硬件地址。
解釋本地IP地址(要了解地址解析工做過程的朋友看好了)
主機IP地址解析爲硬件地址:
(1)當一臺主機要與別的主機通訊時,初始化ARP請求。當該IP判定IP地址是本地時,源主機在ARP緩存中查找目標主機的硬件地址。
(2)要是找不到映射的話,ARP創建一個請求,源主機IP地址和硬件地址會被包括在請求中,該請求經過廣播,使全部本地主機均能接收並處理。
(3)本地網上的每一個主機都收到廣播並尋找相符的IP地址。
(4)當目標主機判定請求中的IP地址與本身的相符時,直接發送一個ARP答覆,將本身的硬件地址傳給源主機。以源主機的IP地址和硬件地址更新它的ARP緩存。源主機收到回答後便創建起了通訊。
解析遠程IP地址
不一樣網絡中的主機互相通訊,ARP廣播的是源主機的缺省網關。
目標IP地址是一個遠程網絡主機的話,ARP將廣播一個路由器的地址。
(1)通訊請求初始化時,得知目標IP地址爲遠程地址。源主機在本地路由表中查找,若無,源主機認爲是缺省網關的IP地址。在ARP緩存中查找符合該網關記錄的IP地址(硬件地址)。
(2)若沒找到該網關的記錄,ARP將廣播請求網關地址而不是目標主機的地址。路由器用本身的硬件地址響應源主機的ARP請求。源主機則將數據包送到路由器以傳送到目標主機的網絡,最終達到目標主機。
(3)在路由器上,由IP決定目標IP地址是本地仍是遠程。若是是本地,路由器用ARP(緩存或廣播)得到硬件地址。若是是遠程,路由器在其路由表中查找該網關,而後運用ARP得到此網關的硬件地址。數據包被直接發送到下一個目標主機。
(4)目標主機收到請求後,造成ICMP響應。因源主機在遠程網上,將在本地路由表中查找源主機網的網關。找到網關後,ARP即獲取它的硬件地址。
(5)若是此網關的硬件地址不在ARP緩存中,經過ARP廣播得到。一旦它得到硬件地址,ICMP響應就送到路由器上,而後傳到源主機。
ARP緩存
爲減小廣播量,ARP在緩存中保存地址映射以備用。ARP緩存保存有動態項
和靜態項。動態項是自動添加和刪除的,靜態項則保留在CACHE中直到計算機從新啓動。
ARP緩存老是爲本地子網保留硬件廣播地址(0xffffffffffffh)做爲一個永久項。
此項使主機可以接受ARP廣播。當查看緩存時,該項不會顯示。
每條ARP緩存記錄的生命週期爲10分鐘,2分鐘內未用則刪除。緩存容量滿時,刪除最老的記錄。
加入靜態(永久)記錄經過添加靜態ARP項可減小ARP請求訪問主機的次數。
ARP包的結構
ARP結構的字段以下:
硬件類型--使用的硬件(網絡訪問層)類型。
協議類型--解析過程當中的協議使用以太類型的值。
硬件地址長度--硬件地址的字節長度,對於以太網和令牌環來講,其長度爲6字節。
協議地址長度--協議地址字節的長度,IP的長度是4字節。
操做號--指定當前執行操做的字段。
發送者的硬件地址--發送者的硬件地址。
發送者的協議地址--發送者的協議地址。
目的站硬件地址--目標者的硬件地址。
目的站協議地址--目標者的協議地址。

三、ICMP和IGMP
internet控制消息協議ICMP是用於報告錯誤並表明IP對消息進行控制。
IP運用互聯組管理協議IGMP來告訴路由器,某一網絡上指導組中的可用主機。
ICMP
ICMP源抑制消息:當TCP/IP主機發送數據到另外一主機時,若是速度達到路由器或者鏈路的飽和狀態,路由器發出一個ICMP源抑制消息。
ICMP數據包結構
類型:一個8位類型字段,表示ICMP數據包類型。
代碼:一個8位代碼域,表示指定類型中的一個功能。若是一個類型中只有一種功能,代碼域置爲0。
檢驗和:數據包中ICMP部分上的一個16位檢驗和。
指定類型的數據隨每一個ICMP類型變化的一個附加數據。
IGMP
IGMP信息傳給別的路由器以使每一個支持多路廣播的路由器獲知哪一個主機組和哪一個網絡中。
IGMP包結構
版本:IGMP的版本,值通常爲0x1h。
類型:IGMP消息的類型。0x1h類型稱爲主機成員請求,在多路廣播路由器上用於指定多級組中的任何成員輪詢一個網絡。0x2h類型稱爲主機成員報告,在主機上用於發佈指定組中的成員狀況或對一個路由器的主機成員請求進行回答。
未用:未用的域名被髮送者置零且被接收者忽略。
檢驗和:IGMP頭的一個16位檢驗和。
組地址:主機用該組地址在一個主機成員請求中存儲IP多路廣播地址。在主機成員請求中,組地址被全置零,並且硬件級的多路廣播地址被用來標示主機組。
四、IP
IP是一個無鏈接的協議,主要就是負責在主機間尋址併爲數據包設定路由,在交換數據前它並不創建會話。由於它不保證正確傳遞,另外一方面,數據在被收到時,IP不須要收到確認,因此它是不可靠的。有一些字段,在當數據從傳輸層傳下來時,會被附加在數據包中,咱們來看一下這些字段:
源IP地址:用IP地址肯定數據報發送者。
目標IP地址:用IP地址肯定數據報目標。
協議:告知目的機的IP是否將包傳給TCP或UDP。
檢查和:一個簡單的數學計算,用來證明收到的包的完整性。
TTL生存有效時間:指定一個數據報被丟棄以前,在網絡上能停留多少時間(以秒計)。它避免了包在網絡中無休止循環。路由器會根據數據在路由器中駐留的時間來遞減TTL。其中數據報經過一次路由器,TTL至少減小一秒。根據咱們前面提到關於ARP的知識,若是IP地址目標爲本地地址時,IP將數據包直接傳給那個主機;若是目標地址爲遠程地址的話,IP在本地的路由表中查找遠程主機的路由(看來好象咱們平時撥114同樣)。若是找到一個路由,IP用它傳送數據包。若是沒找到呢,就會將數據包發送到源主機的缺省網關,也稱之爲路由器。(不少時候一直在搞網關和路由器的定義,其實我以爲在學的時候不必定死摳概念,如今硬件和軟件結合的產品愈來愈多了,一時很分清的,只要咱們運用的時候能夠解決實際問題嘛。)這樣當路由器收到一個包後,該包向上傳給IP:
(1)若是交通阻塞(聽起來蠻可怕的),包在路由器中停滯,TTL至少減1或更多。要是它降到0的話,包就會被拋棄。
(2)若是對於下一網絡來講包太大的話,IP會將它分割成若干個小包。
(3)若是包被分解,IP爲每一個新包製造一個新頭,其中包括:一個標誌,用來顯示其它小包在其後;一個小包ID,用來肯定全部小包是一塊兒的;一個小包偏移,用來告訴接收主機怎麼從新組合它們。
(4)IP計算一個新的檢驗和。
(5)IP獲取一個路由的目標硬件地址。
(6)IP轉發包。
在下一主機,包被髮送到TCP或UDP。每一個路由器都要重複該過程。直到包到達最終目的地。當包到達最終目的地後,IP將小包組裝成原來的包。
五、TCP
TCP是一種可靠的面向鏈接的傳送服務。它在傳送數據時是分段進行的,主機交換數據必須創建一個會話。它用比特流通訊,即數據被做爲無結構的字節流。經過每一個TCP傳輸的字段指定順序號,以得到可靠性。若是一個分段被分解成幾個小段,接收主機會知道是否全部小段都已收到。經過發送應答,用以確認別的主機收到了數據。對於發送的每個小段,接收主機必須在一個指定的時間返回一個確認。若是發送者未收到確認,數據會被從新發送;若是收到的數據包損壞,接收主機會捨棄它,由於確認未被髮送,發送者會從新發送分段。
相關文章
相關標籤/搜索