歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux網絡 >> TCP/IP基礎----為Linux網絡做准備

TCP/IP基礎----為Linux網絡做准備

日期:2017/2/27 9:44:02   编辑:Linux網絡
  1、TCP/IP協議棧  四層模型  TCP/IP這個協議遵守一個四層的模型概念:應用層、傳輸層、互聯層和網絡接口層。    網絡接口層  模型的基層是網絡接口層。負責數據幀的發送和接收,幀是獨立的網絡信息傳輸單元。網絡接口層將幀放在網上,或從網上把幀取下來。    互聯層  互聯協議將數據包封裝成internet數據報,並運行必要的路由算法。這裡有四個互聯協議:  網際協議IP:負責在主機和網絡之間尋址和路由數據包。  地址解析協議ARP:獲得同一物理網絡中的硬件主機地址。  網際控制消息協議ICMP:發送消息,並報告有關數據包的傳送錯誤。  互聯組管理協議IGMP:被IP主機拿來向本地多路廣播路由器報告主機組成員。    傳輸層  傳輸協議在計算機之間提供通信會話。傳輸協議的選擇根據數據傳輸方式而定。兩個傳輸協議:  傳輸控制協議TCP:為應用程序提供可靠的通信連接。適合於一次傳輸大批數據的情況。並適用於要求得到響應的應用程序。  用戶數據報協議UDP:提供了無連接通信,且不對傳送包進行可靠的保證。適合於一次傳輸小量數據,可靠性則由應用層來負責。    應用層  應用程序通過這一層訪問網絡。    網絡接口技術  IP使用網絡設備接口規范NDIS向網絡接口層提交幀。IP支持廣域網和本地網接口技術。    串行線路協議  TCP/IPG一般通過internet串行線路協議SLIP或點對點協議PPP在串行線上進行數據傳送。(是不是我們平時把它稱之為異步通信,對於要拿Linux提供建立遠程連接的朋友應該多研究一下這方面的知識)?     TCP/IP基礎----為Linux做准備(2)  ==============================  2、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字節。  操作號--指定當前執行操作的字段。  發送者的硬件地址--發送者的硬件地址。  發送者的協議地址--發送者的協議地址。  目的站硬件地址--目標者的硬件地址。  目的站協議地址--目標者的協議地址。?    TCP/IP基礎----為Linux做准備(3)  ==============================  3、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多路廣播地址。在主機成員請求中,組地址被全置零,而且硬件級的多路廣播地址被用來標示主機組。    4、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/IP基礎----為Linux做准備(4)  ==============================    5、TCP  TCP是一種可靠的面向連接的傳送服務。它在傳送數據時是分段進行的,主機交換數據必須建立一個會話。它用比特流通信,即數據被作為無結構的字節流。  通過每個TCP傳輸的字段指定順序號,以獲得可靠性。如果一個分段被分解成幾個小段,接收主機會知道是否所有小段都已收到。通過發送應答,用以確認別的主機收到了數據。對於發送的每一個小段,接收主機必須在一個指定的時間返回一個確認。如果發送者未收到確認,數據會被重新發送;如果收到的數據包損壞,接收主機會捨棄它,因為確認未被發送,發送者會重新發送分段。



它在傳送數據時是分段進行的,主機交換數據必須建立一個會話。它用比特流通信,即數據被作為無結構的字節流。  通過每個TCP傳輸的字段指定順序號,以獲得可靠性。如果一個分段被分解成幾個小段,接收主機會知道是否所有小段都已收到。通過發送應答,用以確認別的主機收到了數據。對於發送的每一個小段,接收主機必須在一個指定的時間返回一個確認。如果發送者未收到確認,數據會被重新發送;如果收到的數據包損壞,接收主機會捨棄它,因為確認未被發送,發送者會重新發送分段。



Copyright © Linux教程網 All Rights Reserved