一.TCP协议
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
特点:
1)基于流的方式;
(2)面向连接;(在通信之前要通过三次握手建立链接)
(3)可靠通信方式;(确保数据不会丢失)
(4)在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销;(拥塞控制)
(5)通信连接维护是面向通信的两个端点的,而不考虑中间网段和节点。
因为有着拥塞控制和可靠数据传输的要求所以导致了TCP协议的传输效率相对于UDP要低,但是不会像UDP一样出现丢包现象。
二.TCP协议的报文格式
特别注意:头部长度只有4bit,那么一个TCP的头部长度就是按照二进制进行计算,比如说24byte就等于24+23,那么放在4bit里面,也就是0110 00,而在头部长度之后的保留也是6bit,所以就相当于两个一起算12bit
注意:抓包来看的话,是不一样的,一定要注意。
抓包的话会加上套接字,在TCP前加入IP协议,而IP套接字前,又会加入链路层套接字
如图,蓝色部分为链路层的字节,第一个为目标MAC,占6个字节,第二个为源MAC,占6个字节,接下来的两个字节是类型0800,但是最后的02f0这两个字节还没找到为啥。有一些是没有最后的字节的,但有一些是有的,资料还有待补充
如上图,标出来的蓝色部分为IP协议,具体的就如下表,按照下表即可一一对应起来。
从上图来看,现在的才是本文要讲的TCP协议,这里面有一些不懂的就在于头部长度+保留位那里,现在发上来的是一个SYN+ACK包,也就是第二次握手阶段的数据。所以在蓝色的那一行最后面是6012(问题在于6不知道是怎么计算的,这个还有待研究)。
窗口大小为4096,也就是1000,
标签:协议,字节,IP,TCP,头部,接字 From: https://www.cnblogs.com/wgd-elwood/p/16737278.html