圖中括號中的數字代表的是當前域所占的空間大小,單位是bit位。
黃色的是數據鏈路層的頭部,1共14字節
綠色的部份是IP頭部,1般是20字節
紫色部份是TCP頭部,1般是20字節
最內部的是數據包內容
黃色部份:鏈路層
目的MAC:當前step目的主機的mac地址
源MAC:當前step的源主機的mac地址
類型:指定網絡層所用的協議類型,通常是IP協議,0x0800
綠色部份:網絡層,這里用的是IP包頭格式
版本:記錄數據報屬于哪個版本的協議,如IPv4或IPv6
首部長度:指明IP頭部長度,單位是字,也就是兩個字節。該域的值最小為5,就是標準的頭部長度;最大為15,表明有擴大部份。
服務類型:用來辨別不同服務的需要
數據報總長:包括IP頭部的數據報的總長度。注意,這里不包括鏈路層的頭部,目前最大值是65535字節。
分組ID:這個域的作用是當1個大的數據報被拆分時,拆分成的小的數據段的這個域都是1樣的。
標記:共3個bit,第1個未使用;第2個DF(Don’t Fragment),設置成1表示這個數據包不能被分割,這個是針對路由器的1條指令;第3個MF(MoreFragment),如果1個數據包被分割了,那末除最后1個分段之外的所有分段都必須設置為1,用來表示后面還有更多的分段沒有到達,最后1個設置為0,用來表示分割的段全部到達。
段偏移量:這個域有13bit,也就是每個數據報最多有8192個分段。每個分段的長度必須是8字節的倍數,也就是說8字節是分段的基本單位,固然分組的最后1個段不做限制。這樣最大的數據報長度為8*8192=65536字節,比目前限制的最大數據報長度還多1,能夠滿足對網絡中所有數據報傳送的需求。
生存時間:這是1個生存期計數器,最大為255s,但是實際上使用的時候用作跳數計數器,當值為0時數據報被拋棄,用來避免1個數據報太久的逗留在網絡中。
高層協議:這里和鏈路層的類型作用相同,用來表示更高層的協議,這個數據報里是TCP
首部校驗和:IP頭部的校驗和
源IP地址:數據報來源主機的IP地址
目的IP地址:數據報目的主機的IP地址
紫色部份:傳輸層,這里用的是TCP協議
源端口號:數據報來源主機的端口號
目的端口號:數據報目的主機的端口號
注意:源IP地址,目的IP地址,源端口號,目的端口號這4個字段唯1的肯定了1個TCP鏈接。
TCP序號(sq):發送的TCP的序號,從0開始,實際中這個值就是發送的數據報中內容的字節數,比如我發送的第1個報中sq=0,數據報內容20字節,那末下1個數據報的sq就應當是21。
捎帶的確認(ack):確認收到上1個數據報,然后act的值是指定自己想要收到的下1個數據報的sq,比如我收到1個數據報的sq=0,數據報內容20字節,那末我的ack就應當是21,用來標明我sq=0,內容為20字節的數據報已收到,我接下來期望收到的是sq=21的數據報。
首部長度:和IP頭部的長度域類似,這個域用來標明TCP頭部的長度,單位也是字。
保存:6bit未使用的域
Flag:從左到右,[URG|ACK|PSH|RST|SYN|FIN]
ACK設置為1表示前面的確認(ack)是有效的,否則前面的確認應被疏忽。
PSH表示要求對方在接到數據后立即要求遞交給利用程序,而不是緩沖起來直到緩沖區收滿為止。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈