TCP的报文详细解读
这张图好像挺有名的,其实一开始我看见的时候是一脸懵逼的,但是通过翻书(大学时代最害怕的计算机网络),查阅他人博客等等办法,最后终于有了一个系统的了解,当然,这里知识点多而杂,大家可以多看几遍,结合上面那张图,这张图实际上非常清楚,大家看完底下的内容再回来看这张图一定会恍然大悟。
首先,大家先看这张图,要先从底下往上看,下面这个左边是绿色右边是红色的长方形实际上是一个数据包:
IP首部:
这个地方实际上是IP地址,是我们要发送到的机器的IP地址
IP数据部分:
这个里面东西就非常多了,有目标IP地址的目标端口信息,还有我们要发送的数据等等很多东西,也就是TCP的报文段,具体有些啥下面我会说到。
说完这里以后我们再往上看,有个左边黄色右边蓝色的长方形,这个就是我们刚才说的TCP报文段,也就是我们刚才说的IP数据部分,它也分两个部分:TCP首部和TCP数据部分
TCP首部:
这个首部东西还挺多的,分别都有自己的功能,所以这个首部很像是功能性的内容,比如这个数据包给哪个端口啊,是用来做什么的之类的,下面会讲到。
TCP数据部分:
这部分实际上就是我们的数据部分,就是我们要传输的数据
现在再往上看,我们会发现上面这个大块黄色的其实就是下面的小块黄色的长方形,也就是我们的TCP首部,图中详细的画出了其各个部分,甚至还标出了其各个部分的大小,下面我仔细讲一下各个部分的功能和作用:
我们先竖着看,可以看到整个叫做TCP首部,前五行叫做20字节的固定首部,说明前五行一共是20字节,并且这五行内容格式是固定的。并且五行一共20字节,那么一行4字节,也就是32位,横着看发现最上方已经写出来了32位,也就是用于来标识下方各个区域的大小是多少的刻度。
然后我们从上往下一行一行的看:
第一行我们看到了两个端口,端口这个概念是计算机里面的一个很常见的概念,分为物理端口和虚拟端口。所谓物理端口,那肯定是实际存在的,就像是交换机上面那些接口们,虚拟端口就比较有意思了,它是一个虚拟的概念,不可见,存在于计算机内部,我们知道计算机运行时是有非常多进程的,我们的数据肯定是传递给特定的一个进程,那用什么来唯一确定这个进程呢?就用端口号即可。每个进程都有自己对应的端口号,计算机虚拟端口号是一个16位数,也就是说,计算机一共有2的16次方-1这么多个端口号可以使用,也就是65535个,在图中,两个端口分别占用16位,便是这个原因。下面是具体各个部分的功能和定义:
源端口:
源端口我们一看就知道是指发送方计算机发送数据的出来的那个端口号
目的端口:
目的端口同理,指的是接收方计算机所接收数据的那个端口号
序号(seq):
seq号,我们知道一个数据可能是由多个数据包组成,序号的作用就是来标识各个数据包的先后顺序,序号占用32bit,那么序号最多有2的32次方-1个,那假如超过了这个个数怎么办呢?就从0开始重新编号,这个seq号比较重要,后面的三次握手的内容需要用到
确认号(ack):
ack号,注意ack号和下面的ACK标识是不一样的,ack=seq+1时说明发送方和接收方配对成功了。这个确认号是数据接收方反馈给发送方的一个属性,假如确认号为N,那么表示接收方已经接收到了N-1及其以前的数据
接下来的第四行东西有点多,如下:
数据偏移:
这个数据偏移是针对TCP报文段来说的,指的是从TCP报文段到TCP数据部分之间的距离,也就是TCP首部的大小,一般来说是20个字节,但是我们从图中可以发现第六行有个可变长度,所以有的时候其不是20个字节。
保留:
保留表示现在没有被使用,这段长度是可以被使用的。
URG:
URG=1时表示此报文为紧急报文,所以这个报文优先级最高,会被发送方放到最开头传输,需配合我们下面要说到的紧急指针一起使用
ACK:
ACK是用来指明连接是否建立的属性,当ACK=1时说明连接已经建立了,建立连接后的所有报文ACK都必须为1,并且规定只有当ACK=1时确认号才会有效
PSH:
这个属性是用于一端的应用进程希望在键入一个命令后立即就能收到对方的响应时使用,TCP可进行推送操作
RST:
这个字段其实就是reset,当我们的TCP连接出现严重错误时,我们需要将连接进行重置,这时候需要释放连接,重新建立新的连接
SYN:
这个属性比较重要,当它等于1时用于表示此报文为连接请求或者连接接受报文,当SYN=1且ACK=0时,那就说明此时是连接请求报文。当SYN=1且ACK=1时,说明此时是连接接受报文,并且当SYN=1时是不允许携带数据的,并且会消耗一个序号。
FIN:
此属性用于释放连接,是finnish的缩写,当发送方将FIN置1时,说明数据已经完全发送完毕,要求释放连接
窗口:
窗口是用来控制传输速率的属性,它表示接收方允许对方发送的数据量,来解决带宽不一致的问题
校验和:
用于校验首部和数据两部分
紧急指针:
当URG=1时,说明此报文为紧急报文,紧急指针指出本报文中紧急数据的字节数,紧急数据处理完毕TCP会告诉应用程序恢复正常工作,并且,窗口为0时也可以发送紧急数据
TCP的报文详细解读的更多相关文章
- TCP中的MSS解读(转)
本文摘录自TCP中的MSS解读. MSS 是TCP选项中最经常出现,也是最早出现的选项.MSS选项占4byte.MSS是每一个TCP报文段中数据字段的最大长度,注意:只是数据部分的字段,不包括TCP的 ...
- MemCache超详细解读
MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...
- MemCache超详细解读 图
http://www.cnblogs.com/xrq730/p/4948707.html MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于 ...
- 【转】TCP/IP报文格式
1.IP报文格式 IP协议是TCP/IP协议族中最为核心的协议.它提供不可靠.无连接的服务,也即依赖其他层的协议进行差错控制.在局域网环境,IP协议往往被封装在以太网帧(见本章1.3节)中传送.而所有 ...
- rpm软件包管理的详细解读
CentOS系统上使用rpm命令管理程序包:安装.卸载.升级.查询.校验.数据库维护 1.基本安装 rpm -ivh PackageFile 2.rpm选项 rpm -ivh --test Packa ...
- modbus tcp数据报文结构
modbus tcp数据报文结构 请求:00 00 00 00 00 06 09 03 00 00 00 01 响应:00 00 00 00 00 05 09 03 02 12 34 一次modbus ...
- MemCache详细解读
MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...
- Android BLE蓝牙详细解读
代码地址如下:http://www.demodashi.com/demo/15062.html 随着物联网时代的到来,越来越多的智能硬件设备开始流行起来,比如智能手环.心率检测仪.以及各式各样的智能家 ...
- 计算机网络 之 TCP协议报文结构
前言:上学期实训课,由于要做一个网络通信的应用,期间遇到各种问题,让我深感计算机网络知识的薄弱.于是上网查找大量的资料,期间偶然发现了roc大神的博客,很喜欢他简明易懂的博文风格.本文受roc的< ...
随机推荐
- Java中的对象、类、抽象类、接口的理解
1.对象 对象是个具体的东西,有着明确的属性特征和行为特征. 例如:你手上牵着的女朋友或男朋友就是个具体的对象. 如图中的苏格兰折耳猫,特征是耳朵向下呈折叠状,有着具体的颜色(你看到的颜色),并且和其 ...
- centos7.5上安装go1.13.4
一.安装 1.下载go1.13.4.linux-amd64.tar.gz 先进入官网https://golang.google.cn/ 再 https://golang.google.cn/doc/i ...
- Elasticsearch安装与配置
一.下载(华为云) https://mirrors.huaweicloud.com/elasticsearch/https://mirrors.huaweicloud.com/kibana/7.6.2 ...
- uni-app、小程序之swiper-item内容过多显示不全的解决方案
原文 最近在项目遇到swiper高度不能自适应,导致swiper-item 里面的内容过多时只能显示一部分,最终解决方案: <swiper> <swiper-item> < ...
- 【从小白到专家】Istio技术实践专题(四):应用接入Istio的正确姿势
上一篇文章中,我们介绍了Istio针对单集群的三种主流部署安装方式:使用Istioctl安装.使用Helm自定义安装.独立Operator安装.本文将向大家介绍kubernetes中的应用接入Isti ...
- 网络协议学习笔记(八)DNS协议和HttpDNS协议
概述 上一篇主要讲解了流媒体协议和p2p协议,现在我给大家讲解一下关于DNS和HttpDNS的相关知识. DNS协议:网络世界的地址簿 在网络世界,也是这样的.你肯定记得住网站的名称,但是很难记住网站 ...
- SSRF服务器端请求伪造漏洞基础
0x00 思考 1.什么是SSRF漏洞?2.SSRF漏洞的利用方式3.SSRF漏洞绕过4.SSRF漏洞加固 0x01 什么是SSRF漏洞 定义:SSRF漏洞,中文全称为服务端请求伪造漏洞,是一种由攻击 ...
- thinkpad s5 电源功率不足提示
相关答案 作者:路灯瓜 链接:https://www.zhihu.com/question/47551448/answer/122578101 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权 ...
- WSL与gnome-desktop
WSL与gome-desktop 经过测试和检索 确定WSL1无法在gome-desktop实现GUI桌面 只能实现其中应用的现实,比如打开记事本在Xserver https://www.reddit ...
- deepin20体验
现在Ubuntu20吊打deepin20 100条街.撑了20天受不了deepin 优点 开机启动设置简单,即使不是应用商店的应用也很好 deepin仓库不用代理也很快.,而且有些Ubuntu下载不了 ...