[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