1. 程式人生 > >[TCP] TCP協議族的學習 and TCP協議

[TCP] TCP協議族的學習 and TCP協議

1、TCP協議族這個大家庭,每個協議在OSI5層模型中所處的位子

  

 

 

   其中,網路層裡的 ICMP = Internet Control Message Protocol,即因特網控制報文協議,

          IGMP = Internet Group Manage Protocol,即因特網組管理協議,

          IP = Internet Protocol,就是因特網協議的意思,

     鏈路層的 ARP = Address Resolution Protocol,是地址解析協議,下文會有詳細描述。

         RARP = Reverse Address Resolution Protocol,是反向地址轉換協議,

2、IP協議

  IP協議的講解,我放到另一篇講UDP協議的內容裡去講,這裡就不講了。估計是這周星期六寫。

3、ARP協議(地址解析協議)

  作用:先看右圖中的源IP地址,它的長度是32bit,

 

 

       再看右圖中的源MAC地址,它的長度是48bit,

 

 

       ARP協議的作用就是,在32bit的IP地址和48bit的MAC地址間建立起對映關係。類似於“看到A,就想到B”這種句子。

  分為:ARP協議分為ARP請求和ARP應答,如右圖 

 

 

 

       為了方便記憶和理解,可以將圖2和圖3進行對比,發現圖3的“乙太網首部”跟圖2裡的“乙太網幀頭”部分長得有點像。

      “幀型別”:長度為2個位元組=16位,指的是後邊資料的型別,但是對於ARP請求、ARP應答來說,這個欄位的內容固定寫為0x0806,

             0x0806而換成2進位制就是0000 1000 0000 0110。

      “硬體型別”:長度為2個位元組=16位,表示硬體地址型別,而對於乙太網地址的話,該欄位為1,所以我估計是0000 0000 0000 0001。

      “協議型別”:長度也是2個位元組=16位,表示協議地址型別,如果它等於0x0800,那麼它就代表的是IP地址。

                那如果要表示MAC地址,該等於多少呢?

      “硬體地址長度”:佔1個位元組,內容固定等於6,表示MAC地址的長度是6個位元組=48位,所以我猜這個欄位的二進位制表示為0110。

      “協議地址長度”:佔1個位元組,內容固定等於4,表示IP地址的長度是4個位元組=32位,所以我猜這個欄位的二進位制表示為0100。

      “op”:佔2個位元組,叫做操作欄位,當op=1=(我猜)0000 0000 0000 0001,表示這是ARP請求。

                      當op=2=(我猜)0000 0000 0000 0010,表示這是ARP應答。

      接下來的20個位元組:20=6+4+6+4,是一組地址資訊,看圖3就懂。

 

4、ICMP(因特網控制報文協議)

    ICMP用於傳遞錯誤報文或與路由器、主機交換關鍵資訊。ICMP報文封裝在IP資料報文內部,緊接IP首部之後,談到格式,就把圖1貼上到這裡, 

                                                  

    上文說,ICMP報文封裝在IP資料報文內部,緊接IP首部之後,看看圖1,左邊的上面花括號就是IP首部,那麼ICMP報文就解除安裝“IP資料”裡面。

  格式:

 

     “型別”:佔1個位元組=9位,0代表回顯應答,簡稱應答,8代表回顯請求,簡稱請求。

     “程式碼”:佔2個位元組,不論是請求還是應答,這個地方都寫0。

     “校驗和”:2個位元組=16位,我猜指的是整個ICMP報文進行加和吧。圖4整個這一塊,叫做1個ICMP報文。

     “識別符號”:佔2個位元組=16位,一般設定為程序的ID號,以區分同一主機的多個PING例項。 

     “序號”:佔2個位元組=16位,從0開始,每個回顯請求,都自動+1,而PING程式就是通過分析應答報文的序號,來判斷是否出現了丟包、亂序和重複。

 

5、TCP協議

  客戶端:發出“連線請求”,

  服務端:監聽和“被動接受請求”,給出應答,

  格式:    

     源、目的埠號:各佔2個位元組=16bit,它們用於區分不同的程序。通過雙方的埠號和IP地址可以唯一確定一條TCP連線。 

            我猜比如QQ這個程序佔用1號埠,微信佔用2號埠。

    TCP序號:佔32bit=4個位元組,它是TCP提供可靠位元組流服務的基礎。TCP序號標識每個TCP資料報文的首個位元組,配合TCP資料報文長度可以定位TCP報文段內的任意

        一個位元組。當前的TCP報文長度確定後,下一個待發送TCP報文序號可由此算出,當序號增加到溢位時將再次從頭開始。 

  今天先寫到這兒了,上床去了。2019年11月19日23:35:17