計算機網路——深入理解TCP/IP

it_was發表於2020-10-02

1.1 TCP報文格式

計算機網路——深入理解TCP/IP

  • 源埠:tcp報文的傳送埠,範圍為0-65535。
  • 目的埠:指明接收者所用的埠號,一般由應用程式來指定

2.1 IP協議主要功能

l. 定址與路由:boom:

  • 用IP地址來標識Internet的主機:在每個IP資料包中,都會攜帶源IP地址和目標IP地址來標識該IP資料包的源和目的主機。IP資料包在傳輸過程中,每個中間節點(IP 閘道器)還需要為其選擇從源主機到目的主機的合適的轉發路徑(即路由)。IP協議可以根據路由選擇協議提供的路由資訊對IP資料包進行轉發,直至抵達目的主機。
  • IP地址和MAC地址的匹配,ARP協議。資料鏈路層使用MAC地址來傳送資料幀,因此在實際傳送IP報文時,還需要進行IP地址和MAC地址的匹配,由TCP/IP協議簇中的ARP(地址解析協議)完成。

2.分片與重組

  • IP資料包通過不同型別的通訊網路傳送,IP資料包的大小會受到這些網路所規定的最大傳輸單元(MTU)的限制。

  • 將IP資料包拆分成一個個能夠適合下層技術傳輸的小資料包,被分段後的IP資料包可以獨立地在網路中進行轉發,在到達目的主機後被重組,恢復成原來的IP資料包。

2.2 IP資料包詳解

計算機網路——深入理解TCP/IP

  • Version: 版本欄位佔4 bit(0100表示使用的 IPv4協議)對等層之間要使用同一種IP協議

  • Header Length: 頭部長度欄位佔4 bit ,可表示最大數值1111,即最大為60位元組,也就是說明IP資料包頭部長度為20-60位元組,而且有固定的20位元組!

  • Type of Service:服務型別欄位佔8 bit ,定義IP封包在傳送過程中要求的服務型別,TOS包括共8位,包括3 bit的優先權欄位(取值可以從000-111所有值),4 bit的TOS子欄位和1 bit未用位但必須置0。具體如下

分類 作用
開頭3位
111–Network Control(網路控制);
110–Internetwork Control(網間控制);
101–Critic(關鍵);
100–Flash Override(疾速);
011–Flash(閃速);
010–Immediate(快速);
001–Priority(優先);
000–Routine(普通);
優先順序6和7一般保留給網路控制資料使用,如路由。
優先順序5推薦給語音資料使用。
優先順序4由視訊會議和視訊流使用。
優先順序3給語音控制資料使用。

優先順序1和2給資料業務使用。
優先順序0為預設標記值。
中間4位 1000
0100
0010
0001
0000

最小時延
最大吞吐量
最高可靠性
最小代價
一般服務
4 bit中只能置其中1 bit
最後1位 1 bit未用位但必須置0
  • Total Length :IP資料包總長度欄位佔 16 bit,即2^16 - 1 = 65535 位元組,值為首部和資料之和的長度,資料包的最大長度為65535位元組(MTU最大傳送單元);總長度欄位是IP首部中必要的內容,因為一些資料鏈路(如乙太網)需要填充一些資料以達到最小長度。儘管乙太網的最小幀長為46個位元組(將在本章後面介紹),但是IP資料可能會更短。如果沒有總長度欄位,那麼IP層就不知道46位元組中有多少是IP資料包的內容。

  • identifier:標識欄位佔16 bit。標識欄位唯一地標識主機傳送的每一份資料包。通常每傳送一份訊息它的值就會加1。同一個資料包的所有分片都具有相同的標識值。

  • flag: 標誌欄位佔3bit。位1保留,位2表禁止分片(DF),若設定了此位,IP模組將不對資料包進行分片,在此情況下若IP資料包超過MTU,IP模組將丟棄資料包並返回一個ICMP差錯報文;位3標識分片(MF),表示後面還有若干個資料包,除了資料包的最後一個分片,其他分片都要把它設定為1。

  • offset:片位移欄位佔13bit。分片相對原始IP資料包資料部分的偏移。實際的偏移值為該值左移3位後得到的,所以除了最後一個IP資料包分片外,每個IP分片的資料部分的長度都必須是8的整數倍。

identifier,flag和offset主要用於IP Package分片的


  • TTL:生存時間欄位佔8bit。資料包到達目的地之前允許經過的路由器跳數。TTL值被髮送端設定,常設定為64。資料包在轉發過程中每經過一個路由該值就被路由器減1.當TTL值為0時,路由器就將該資料包丟棄,並向源端傳送一個ICMP差錯報文。TTL可以防止資料包陷入路由迴圈。

    位元組面試題:一個IP資料包在網路節點中傳輸可能陷入死迴圈嘛?:fire: :fire::fire:
    不可能呀,因為由上面這個TTL欄位呀,就算極端情況下陷入死迴圈,也必因為IP資料包的TTL減到0而最終失效,所以不可能陷入死迴圈


  • protocol:協議欄位佔8bit。區分IP協議上的上層協議。在Linux系統的/etc/protocols檔案中定義了所有上層協議對應的協議欄位,ICMP為1,TCP為6,UDP為17。

  • checksum首部校驗和欄位佔16bit。由傳送端填充接收端對其使用CRC演算法校驗,檢查IP資料包頭部在傳輸過程中是否損壞。
    計算方式如下:在傳送端的時候,將校驗和全部設定為0,然後把資料包首段資料全部進行反碼相加,得到的值為校驗和,放入首部的校驗和欄位;然後在接收端的時候,將資料包首段資料和校驗和一起全部反碼相加,最後若是得到零,則保留,若不是零,則說明資料包在傳輸過程中發生了改變,則丟棄該資料包.

    IP/ICMP/IGMP/TCP/UDP等協議的校驗和演算法都是相同的,此處通過IP資料包校驗和來說明
    計算機網路——深入理解TCP/IP

2.3 IP地址詳解

  • IP地址:P地址就是給網際網路上的每一臺主機(或路由器)的每一個介面分配一個在全世界範圍內是唯一的 32 位的識別符號。注意,每個IP地址都是獨一無二的,就像人的身份證號碼一樣。IP資料包在網路中轉發過程

  • IP地址分類:

    分類 網路數量 範圍 特殊說明
    A類地址 126(2^7-2) 1.0.0.1-127.255.255.254 1.0.0.0127.255.255.255廣播地址
    B類地址 16384(2^14) 128.0.0.0-191.255.255.255
    C類地址 2097152(2^21) 192.0.0.0-223.255.255.255

如果告訴你一個帶網路字首的IP地址,那麼你應該可以根據它推算出該地址的子網掩碼,預設閘道器地址,預設廣播地址,網路地址,受限廣播地址,本機網路地址,以及如何平均劃分子網空間。舉個例子,已知分配給創新實驗室的地址塊中的一個地址為193.6.7.0/24,請回答下列問題:
(1)該網路的網路字首是多少?
答案:24
解析:193.6.7.0/24 加粗部分就是網路字首
(2)該網路的子網掩碼是多少?
答案:255.255.255.0
解析:子網掩碼是根據網路字首推算的,255.255.255.0轉換成二進位制表示為11111111.11111111.11111111.00000000,網路字首代表的是該地址的網路位,前面說到一個IP地址是由32位二進位制數表示的,網路字首為24就表示從左往右數前24位為該網路的網路位,剩下的後8位為該網路的主機位。而子網掩碼就是網路位全為1,主機位全為0,比如說如果本題中給出的網路字首變成26,意思就是該網路的子網掩碼為11111111.11111111.11111111.11000000,換算成十進位制數就是255.255.255.192
(3)該網路的預設閘道器地址為多少?
答案:193.6.7.254/24
解析 :預設閘道器地址是主機位除最後一位全置1後得到的,根據網路字首24可知前24位為網路位,後8位為主機位,因此該網路的預設閘道器地址就是IP地址193.6.7.11111110(加粗的部分為主機位),換算成十進位制數即193.6.7.254/24(注意,但凡是跟IP地址格式一樣的都要加網路字首,跟子網掩碼格式一樣的就不用加),假如本題的網路字首變成26,那麼主機位就變成32-26=6位了,即預設閘道器地址為193.6.7.00 111110 =》193.6.7.62/26
(4)該網路的預設廣播地址是多少?
答案:193.6.7.255/24
解析:預設廣播地址和預設閘道器地址可以一起記,因為預設廣播地址就是主機位全為1,假如本題的網路字首變成26,預設廣播地址為193.6.7.00 111111 => 193.6.7.63/26
(5)該網路的網路地址是多少?
答案:193.6.7.0/24
解析:網路地址是IP地址與子網掩碼轉換成二進位制數再相與運算得來的結果

2.4. IP路由詳解

1. 什麼是路由?

百度百科中路由是指路由器從一個介面上收到資料包,根據資料包的目的地址進行定向並轉發到另一個介面的過程。

計算機網路——深入理解TCP/IP

從PC1去往PC2,中間經過路由器,路由器RTA根據目的IP指導資料包轉發的過程就稱為路由。路由器負責為資料包選擇一條最優路徑,並進行轉發。

2.什麼是路由器?

路由器實質上是一種將網路進行互聯的專用計算機,路由器是網路層的裝置,(交換機是資料鏈路層的裝置)用於指導IP報文轉發。路由器也可以稱之為閘道器裝置。路由器的每個介面對應不同的網段,可以隔離廣播域。當資料包需要在不同網段間轉發時需要通過路由器做轉發,路由器收到資料包後,會根據資料包中的目的IP地址選擇一條最優的路徑,並將資料包轉發到下一個路由器,路徑上最後的路由器負責將資料包送交目的主機。

3. 什麼是路由表?

計算機網路——深入理解TCP/IP
每個路由器中都儲存著一張路由表,表中每條路由項都指明瞭資料包要到達某網路或某主機應通過路由器的哪個物理介面傳送,以及可到達該路徑的哪個下一個路由器,或者不再經過別的路由器而直接可以到達目的地。

4. 路由器如何依據路由錶轉發資料包呢?——最長匹配原則

推薦閱讀 :www.360doc.com/content/17/1216/02/1...
路由器在轉發資料時,需要選擇路由表中的最優路由

當資料包文到達路由器時:

  • 路由器首先提取出報文的目的IP地址,然後查找路由表,將報文的目的IP地址與路由表中某表項的掩碼欄位做“與”操作,“與”操作後的結果跟路由表該表項的目的IP地址比較,相同則匹配上,否則就沒有匹配上。

  • 當與所有的路由表項都進行匹配後,路由器會選擇一個掩碼最長的匹配項

計算機網路——深入理解TCP/IP

如圖所示,路由表中有兩個表項到達目的網段10.1.1.0,下一跳地址都是20.1.1.2。如果要將報文轉發至網段10.1.1.1,則10.1.1.0/30符合最長匹配原則

5. 路由表生成原理

推薦閱讀:blog.csdn.net/sinat_36118270/artic...
四種方式:直連路由,靜態路由,動態路由,預設路由

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章