2020-09-23:TCP头部信息有哪些?

举报
福大大架构师每日一题 发表于 2020/09/23 19:45:30 2020/09/23
【摘要】 福哥答案2020-09-23:#福大大架构师每日一题#福哥口诀法:T源目序缺首保 紧确推和复同终 窗校紧选数(TCP格式:源端口,目的端口,序号,确认号,首部长度,保留,紧急位URG,确认位ACK,推送位PSH,复位位RST,同步位SYN,终止位FIN,窗口,校验和,紧急指针,选项,数据)[此答案来自知乎:](https://www.zhihu.com/question/422470836)...

福哥答案2020-09-23:#福大大架构师每日一题#


福哥口诀法:T源目序缺首保 紧确推和复同终 窗校紧选数(TCP格式:源端口,目的端口,序号,确认号,首部长度,保留,紧急位URG,确认位ACK,推送位PSH,复位位RST,同步位SYN,终止位FIN,窗口,校验和,紧急指针,选项,数据)


[此答案来自知乎:](https://www.zhihu.com/question/422470836)


typedef struct _TCP_HEADER 

short m_sSourPort;       // 源端口号16bit 

short m_sDestPort;        // 目的端口号16bit 

unsigned int m_uiSequNum;   // 序列号32bit 

unsigned int m_uiAcknowledgeNum; // 确认号32bit 

short m_sHeaderLenAndFlag;   // 前4位:TCP头长度;中6位:保留;后6位:标志位 

short m_sWindowSize;      // 窗口大小16bit 

short m_sCheckSum;       // 检验和16bit 

short m_surgentPointer;      // 紧急数据偏移量16bit 

}attribute((packed))TCP_HEADER, *PTCP_HEADER;


源端口号以及目的端口号:

各占2个字节,端口是传输层和应用层的服务接口,用于寻找发送端和接收端的进程,通过这两个端口号和IP头部的ip发送和接收号,可以唯一的确定一个连接。

一般来讲,通过端口号和IP地址,可以唯一确定一个TCP连接,在网络编程中,通常被称为一个socket接口。


序号:

占4字节,用来标识从TCP发送端向TCP接收端发送的数据字节流。


确认序号:

占4字节,包含发送确认的一端所期望收到的下一个序号,因此,确认序号应该是上次已经成功收到另一端数据字节序号加1。


数据偏移:

占4位,最大为1111即15个数字,一个代表4个字节,用于指出TCP首部长度,若不存在选项,则这个值为20字节,数据偏移的最大值为60字节。


保留字段:

占6位,值是确定的,暂时可忽略,值全为0。


标志位:

RG(紧急): 为1时表明紧急指针字段有效。

ACK(确认):为1时表明确认号字段有效。

PSH(推送):为1时接收方应尽快将这个报文段交给应用层。

RST(复位):为1时表明TCP连接出现故障必须重建连接。

SYN(同步):在连接建立时用来同步序号。

FIN (终止): 为1时表明发送端数据发送完毕要求释放连接。


接收窗口:

占2个字节,用于流量控制和拥塞控制,表示当前接收缓冲区的大小。在计算机网络中,通常是用接收方的接收能力的大小来控制发送方的数据发送量,这样可以避免快主机致使较慢主机的缓冲区溢出。TCP连接的一端根据缓冲区大小确定自己的接收窗口值,告诉对方,使对方可以确定发送数据的字节数。


校验和:

占2个字节,范围包括首部和数据两部分。检查当前的TCP包是否有问题,有没有损坏丢失。

***

[评论](https://user.qzone.qq.com/3182319461/blog/1600815833)


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。