轉(zhuǎn)載:http://blog.csdn.net/zhangliangzi/article/details/52554439
一、IP 首部
IP 首部
-
1、第一個(gè)4字節(jié)(也就是第一行):
- (1)版本號(hào)(Version),4位;用于標(biāo)識(shí)IP協(xié)議版本,IPv4是0100,IPv6是0110,也就是二進(jìn)制的4和6。
- (2)首部長(zhǎng)度(Internet Header Length),4位;用于標(biāo)識(shí)首部的長(zhǎng)度,單位為4字節(jié),所以首部長(zhǎng)度最大值為:(2^4 - 1) * 4 = 60字節(jié),但一般只推薦使用20字節(jié)的固定長(zhǎng)度。
- (3)服務(wù)類型(Type Of Service),8位;用于標(biāo)識(shí)IP包的優(yōu)先級(jí),但現(xiàn)在并未使用。
- (4)總長(zhǎng)度(Total Length),16位;標(biāo)識(shí)IP數(shù)據(jù)報(bào)的總長(zhǎng)度,最大為:2^16 -1 = 65535字節(jié)。
-
2、第二個(gè)四字節(jié):
- (1)標(biāo)識(shí)(Identification),16位;用于標(biāo)識(shí)IP數(shù)據(jù)報(bào),如果因?yàn)閿?shù)據(jù)鏈路層幀數(shù)據(jù)段長(zhǎng)度限制(也就是MTU,支持的最大傳輸單元),IP數(shù)據(jù)報(bào)需要進(jìn)行分片發(fā)送,則每個(gè)分片的IP數(shù)據(jù)報(bào)標(biāo)識(shí)都是一致的。
- (2)標(biāo)志(Flag),3位,但目前只有2位有意義;最低位為MF,MF=1代表后面還有分片的數(shù)據(jù)報(bào),MF=0代表當(dāng)前數(shù)據(jù)報(bào)已是最后的數(shù)據(jù)報(bào)。次低位為DF,DF=1代表不能分片,DF=0代表可以分片。
- (3)片偏移(Fragment Offset),13位;代表某個(gè)分片在原始數(shù)據(jù)中的相對(duì)位置。
-
3、第三個(gè)四字節(jié):
- (1)生存時(shí)間(TTL),8位;以前代表IP數(shù)據(jù)報(bào)最大的生存時(shí)間,現(xiàn)在標(biāo)識(shí)IP數(shù)據(jù)報(bào)可以經(jīng)過的路由器數(shù)。
- (2)協(xié)議(Protocol),8位;代表上層傳輸層協(xié)議的類型,1代表ICMP,2代表IGMP,6代表TCP,17代表UDP。
- (3)校驗(yàn)和(Header Checksum),16位;用于驗(yàn)證數(shù)據(jù)完整性,計(jì)算方法為,首先將校驗(yàn)和位置零,然后將每16位二進(jìn)制反碼求和即為校驗(yàn)和,最后寫入校驗(yàn)和位置。
4、第四個(gè)四字節(jié):源IP地址
5、第五個(gè)四字節(jié):目的IP地址
二、TCP 首部
TCP 首部
- 1、第一個(gè)4字節(jié):
- (1)源端口,16位;發(fā)送數(shù)據(jù)的源進(jìn)程端口
- (2)目的端口,16位;接收數(shù)據(jù)的進(jìn)程端口
- 2、第二個(gè)4字節(jié)與第三個(gè)4字節(jié)
- (1)序號(hào),32位;代表當(dāng)前TCP數(shù)據(jù)段第一個(gè)字節(jié)占整個(gè)字節(jié)流的相對(duì)位置;
- (2)確認(rèn)號(hào),32位;代表接收端希望接收的數(shù)據(jù)序號(hào),為上次接收到數(shù)據(jù)報(bào)的序號(hào)+1,當(dāng)ACK標(biāo)志位為1時(shí)才生效。
- 3、第四個(gè)4字節(jié):
- (1)數(shù)據(jù)偏移,4位;實(shí)際代表TCP首部長(zhǎng)度,最大為60字節(jié)。
- (2)6個(gè)標(biāo)志位,每個(gè)標(biāo)志位1位;
SYN,為同步標(biāo)志,用于數(shù)據(jù)同步;
ACK,為確認(rèn)序號(hào),ACK=1時(shí)確認(rèn)號(hào)才有效;
FIN,為結(jié)束序號(hào),用于發(fā)送端提出斷開連接;
URG,為緊急序號(hào),URG=1是緊急指針有效;
PSH,指示接收方立即將數(shù)據(jù)提交給應(yīng)用層,而不是等待緩沖區(qū)滿;
RST,重置連接。 - (3)窗口值,16位;標(biāo)識(shí)接收方可接受的數(shù)據(jù)字節(jié)數(shù)。詳解可參看:http://www.cnblogs.com/woaiyy/p/3554182.html
- 4、第五個(gè)4字節(jié)
- (1)校驗(yàn)和,16位;用于檢驗(yàn)數(shù)據(jù)完整性。
- (2)緊急指針,16位;只有當(dāng)URG標(biāo)識(shí)位為1時(shí),緊急指針才有效。緊急指針的值與序號(hào)的相加值為緊急數(shù)據(jù)的最后一個(gè)字節(jié)位置。用于發(fā)送緊急數(shù)據(jù)。
三、UDP 首部
UDP 首部
端口號(hào):用來表示發(fā)送和接受進(jìn)程。由于 I P層已經(jīng)把I P數(shù)據(jù)報(bào)分配給T C P或U D P(根據(jù)I P首部中協(xié)議字段值),因此T C P端口號(hào)由T C P來查看,而 U D P端口號(hào)由UDP來查看。T C P端口號(hào)與UDP端口號(hào)是相互獨(dú)立的。
長(zhǎng)度:UDP長(zhǎng)度字段指的是UDP首部和UDP數(shù)據(jù)的字節(jié)長(zhǎng)度。該字段的最小值為 8字節(jié)(發(fā)送一份0字節(jié)的UDP數(shù)據(jù)報(bào)是 O K)。
檢驗(yàn)和:UDP檢驗(yàn)和是一個(gè)端到端的檢驗(yàn)和。它由發(fā)送端計(jì)算,然后由接收端驗(yàn)證。其目的是為了發(fā)現(xiàn)UDP首部和數(shù)據(jù)在發(fā)送端到接收端之間發(fā)生的任何改動(dòng)。