TCP报文段的首部格式

①位/比特(bit):内存中最小的单位,二进制数序列中的一个0或一个1就是一比特,
②1 Byte=8bit(位)。
③1KB=1024Byte(字节)
④1MB=1024KB。
⑤1GB=1024MB。
⑥TB、Tera byte:1TB=1024GB。

TCP是面向字节流的,传送的数据是报文段,一个报文段分为首部和数据2个部分。

TCP首部的前20个字节是固定的,后面的4n个字节是根据需要而增加的选项,n为整数,因此TCP的最小长度小于20字节。

20 Byte * 8bit=160bit(位)

(1)源端口:占2字节,写入源端口号;

(2)目的端口:占2字节,写入目的端口号;

(3)序号:占4字节:序号范围(1~2^32-1),即共2^32个序号,序号增加到2^32-1后,下一个序号又回到0。在一个TCP连接中传送的字节流中的每一个字节都按照顺序编号。由于序号为32位,可编号4千兆字节的数据(4GB),所以当序号重编时数据已经安全到达终点。

例如:现在有一个报文段的序号的字段值是101,这个报文段携带了100字节的数据,那么第一个字节数据用序号101标识,最后一个字节的序号为200标识,当还有下一个报文段时从201开始标识字节序号。字段的名称也叫报文段序号;

(4)确认号:占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。

例如:A服务向B服务发送一个报文段,序号101开始,报文段携带100字节数据,那么B服务收到A服务的数据序号为101~200;期望下一个报文段从201序号开始对报文段字节数据编码,所以B服务中的报文段的确认号为201;

(5)数据偏移:占4位,0.5字节;指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。表示tcp头部有多少个32bit字(4字节),由于4位最大值是15(二进制:1111),因此最多有15个32bit,也就是60个字节是最大的tcp头部长度,选项长度不能超过40字节。

(6)保留:占6位,保留为今后使用,但目前置为0;

(7)紧急URG(URGent):占1位;当URG=1时,表示紧急指针字段有效。它告诉系统此报文有紧急数据,应该尽快传输,不要按照原来的排序传输;例如中断命令:Control+C;

(8)确认ACK:占1位;当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,建立连接成功后,ACK必须置为1。

(9)推送PSH(PuSH):占1位,2个进程在通信时,A进程把PSH=1,快速响应到B进程,不需要在缓存中等待,B进程响应;但是很少使用。

(10)复位RST:占1位,当RST=1时,表示TCP连接中出现严重错误,必须释放连接再建立连接。也可以用来拒绝一个非法的报文或者非法的连接。

(11)同步SYN:占1位,在连接建立时用来同步序号。当SYBN=1时,而ACK=0时,表明这是一个连接请求报文,响应报文对应ACK=1。

(12)窗口:占2字节,窗口值是0~2^16-1的整数。窗口指的是发送报文段的一方的接收窗口,而不是自己的发送窗口。窗口值告诉对方:从报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节位单位)。之所以这么限制,是因为接收方的缓冲区空间有限。总之:窗口值作为接收方让发送方设置其发送窗口的依据。

(13)终止FIN:占1位,用来释放一个连接,当FIN=1时,表示报文发送完毕,要求释放连接。

(14)校验和:占2字节,校验首部和数据2部分。

(15)紧急指针:占2字节;紧急指针在URG=1时有效;表明紧急字段的字节数。

(16)选项:长度变长,最长40字节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值