一、TCP協議族這個你們庭,每一個協議在OSI5層模型中所處的位子微信
其中,網絡層裏的 ICMP = Internet Control Message Protocol,即因特網控制報文協議,網絡
IGMP = Internet Group Manage Protocol,即因特網組管理協議,spa
IP = Internet Protocol,就是因特網協議的意思,blog
鏈路層的 ARP = Address Resolution Protocol,是地址解析協議,下文會有詳細描述。進程
RARP = Reverse Address Resolution Protocol,是反向地址轉換協議,路由
二、IP協議it
IP協議的講解,我放到另外一篇講UDP協議的內容裏去講,這裏就不講了。估計是這周星期六寫。io
三、ARP協議(地址解析協議)class
做用:先看右圖中的源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就懂。
四、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程序就是經過分析應答報文的序號,來判斷是否出現了丟包、亂序和重複。
五、TCP協議
客戶端:發出「鏈接請求」,
服務端:監聽和「被動接受請求」,給出應答,
格式:
源、目的端口號:各佔2個字節=16bit,它們用於區分不一樣的進程。經過雙方的端口號和IP地址能夠惟一肯定一條TCP鏈接。
我猜好比QQ這個進程佔用1號端口,微信佔用2號端口。
TCP序號:佔32bit=4個字節,它是TCP提供可靠字節流服務的基礎。TCP序號標識每一個TCP數據報文的首個字節,配合TCP數據報文長度能夠定位TCP報文段內的任意
一個字節。當前的TCP報文長度肯定後,下一個待發送TCP報文序號可由此算出,當序號增長到溢出時將再次從頭開始。
今天先寫到這兒了,上牀去了。2019年11月19日23:35:17