福哥答案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)

2020-09-23:TCP头部信息有哪些?的更多相关文章

  1. TCP头部结构

    3.2 TCP头部结构 TCP头部信息出现在每个TCP报文段中,用于指定通信的源端端口,目的端端口,管理TCP连接等,本节详细介绍TCP的头部结构,包括固定头部结构和头部选项. 3.2.1 TCP固定 ...

  2. 简析TCP的三次握手与四次分手(TCP协议头部的格式,数据从应用层发下来,会在每一层都会加上头部信息,进行封装,然后再发送到数据接收端)good

    2014-10-30 分类:理论基础 / 网络开发 阅读(4127) 评论(29)  TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更 ...

  3. 【转】HTTP 头部解释,HTTP 头部详细分析,最全HTTP头部信息

    HTTP 头部解释 ========================================================================================== ...

  4. HTTP常用头部信息

    下面用例子的形式来记录下常用的一些Http头部信息 Request Header: GET /sample.Jsp HTTP/1.1  //请求行 Host: www.uuid.online/  // ...

  5. HTTP头部信息解释分析(详细整理)

    这篇文章为大家介绍了HTTP头部信息,中英文对比分析,还是比较全面的,若大家在使用过程中遇到不了解的,可以适当参考下 HTTP 头部解释 1. Accept:告诉WEB服务器自己接受什么介质类型,*/ ...

  6. http头部信息解析

    HTTP 头部解释 1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type. 2. Accept-Chars ...

  7. HTTP头部信息解释分析

    HTTP 头部解释 1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type. 2. Accept-Chars ...

  8. 最全的HTTP头部信息分析

    HTTP 头部解释 1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type. 2. Accept-Chars ...

  9. HTTP头部信息和错误代码详解-《HTTP权威指南》

    最近在调试 前后端分离的请求测试,遇到了一个405错误, 无法接受,于是开始了人肉搜索405. 最后 还是HTTP头部信息里的Accept:application/json 这个Accept 导致的, ...

  10. 2020.09 问题总结(Oracle-->MySQL、Maven、JSP-->Thymeleaf、Druid)

    2020.09 问题总结(Oracle-->MySQL.Maven.JSP-->Thymeleaf.Druid) 数据库建表 Oracle 转 MySQL 问题 Oracle MySQL ...

随机推荐

  1. JSON常见用法

    https://blog.csdn.net/weixin_43631296/article/details/105253434

  2. 韦东山005_ARM裸机1期加强版

    005_ARM裸机1期加强版(又叫新1期,151节,23节免费,已完结)\新1期视频(151节,23节免费) 第006课开发板熟悉与体验(6节,免费) 第001节_开发板部件介绍与串口连接(免费) 如 ...

  3. [picoCTF]Insp3ct0r write up

    根据提示,需要检查浏览器上的Web代码(动手翻译一下啦) (漫不经心的瞅瞅页面,curl+UUUUUUU(一只U就行)一下下,微微瞄一瞄,where is flag? fn+f12(或其它)打开源代码 ...

  4. github fork 别人的项目源作者更新后如何同步更新

    如下 左边选择我们拷贝的库  右边选择原工程 如下 点击箭头指向的位置 然后选择右边原工程目录

  5. pushd 和 popd:对目录栈进行操作

    介绍 目录栈是保存目录的栈结构,当前目录处于该栈结构的顶端,可使用dirs查看目录栈的目录.pushd命令可添加一个目录到目录栈,popd命令会清除目录栈中的一个目录. dirs dirs有三个参数: ...

  6. topN算法问题

    问题: 如何在10亿个整数中找出前1000个最大的数? 小顶堆堆排序 首先,我们需要构建一个大小为N(1000)的小顶堆,小顶堆的性质如下:每一个父节点的值都小于左右孩子节点,然后依次从文件中读取10 ...

  7. Java笔记第九弹

    升级版: 数据安全问题的解决 1.同步代码块 (弊端:降低了运行效率) 格式:(锁--同一把锁) synchronized(任意对象){ 多条语句操作共享数据的代码 } //sellTicket.ja ...

  8. Spring--第三方bean管理

    第三方bean管理 管理第三方的bean的话,是不能在配置文件里面写这个注解的: 他表示的是,扫描你当前文件里面的bean,是可以直接获取到的. 那么,对于第三方的bean,我们可以这么做: 在配置文 ...

  9. Linux & 标准C语言学习 <DAY11>

    一.指针     1.什么是指针         指针是一种特殊的数据类型,使用指针可以定义指针变量,指针变量存储的是整形数据,该数据代表了内存的编号(地址),可以通过这个编号访问到对应的内存     ...

  10. uniapp踩坑必备笔记

    1.[配置]应用版本号名称有一个规则的字符串:1.0.0,规则是:大版本号,中版本号,小版本号. 2.[配置]应用版本号中的小版本号不能超过9,超过9的需要向上一个版本号进一(逢十进一). 3.[配置 ...