首页 教程 TCP协议基础知识及wireshark抓包分析演练

TCP协议基础知识及wireshark抓包分析演练

TCP相关知识
ASP站长网应swoole长连接开发调研相关TCP知识并记录。
 
数据封包流程
 
 
如图,如果我需要发送一条数据给用户,实际的大小肯定是大于你发送的大小,在各个数据层都进行了数据的封包,以便你的数据能完整的发给你想要的用户。
 
以太网的数据包的负载是1500字节,IP包头需要20个字节,TCP的包头需要20个字节,实际的数据内容大小则是1460个字节,如图:
 
 
 
OSI模型术语
 
应用层:
 
如nginx、swoole等,大部分的数据都只需要关心应用层即可,我需要传输什么数据,我只需要调用对应的方法、发送给已知的IP、端口即可。
 
TCP层:
 
对应用层的数据进行包装,TCP的报文格式如下图,TCP/UDP层规定了数据的交换格式,如何进行握手、链接,如果加快数据传输、保证数据的完整性等。
 
TCP层主要有几个算法可以关注下:
 
慢启动、拥塞避免、快速重传、快恢复、滑动窗口
 
IP层:
 
细心的人也许已经发现TCP报文格式只有你发送的源端口和目标端口,并没有要发送的IP地址和你的IP地址,这些其实都封包在IP层
 
数据链路层:
 
数据转换为frame(帧)进行数据传输,为终端通信提供传输媒体和链接,常用设备有网卡、交换机等
 
物理层:
 
传输比特流,物理设备传输的层,属于硬件领域范畴,如光纤设备
 
TCP报文格式
 
 
Wireshark抓的某个包截图:
 
 
 
TCP报文格式说明
1、端口号:用来标识同一台计算机的不同的应用进程。
 
1)源端口:源端口和IP地址的作用是标识报文的返回地址。
 
2)目的端口:端口指明接收方计算机上的应用程序接口。
 
TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。
 
2、序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号。e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0。
 
3、数据偏移/首部长度:4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。

关于作者: dawei

【声明】:九江站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

热门文章