TCP协议及数据包解码

作者:陈年老陈皮 发布时间: 2024-08-25 阅读量:21

概念

TCP协议(Transmission Control Protocol)全称“传输控制协议”是一种面向连接的、可靠的、基于字节流的传输层通信协议。

特点

全双工通信:数据可在同一时间双向流动

面向连接(三次握手),分段传输,传输确认

是“可靠的传输”协议:差错控制、流量控制、拥塞控制(慢开始、拥塞避免、 快重传和快速恢复)

三次握手(TCP建立连接)

四次挥手(TCP拆除连接)

TCP数据包字段解码

TCP头部

标识[Flags]

窗囗位[Congestion Window Reduced(CWR)]

阻塞位[ECN-Echo]

紧急指针位[Urgent]

确认位[Acknowledgement]

推送位[Push]

重置连接位[Reset]

同步位[SYN]

终止位[FIN]

TCP选项部分字段

重传与丢包

重传

当前数据包的sequencenumber小于或等于上一个数据包的next sequencenumber,并且当前数据包的IPID大于上一个数据包的IPID,统计为一个重传包

丢包

当前数据包的sequencenumber大于上一个数据包的next sequence number,标记为一个异常包并且下一个数据包满足重传包的判断条件,则统计一个分段丢失

网络扫描的原理

网络扫描是通过一系列软件对网络中存在的主机/端口进行扫描,其原理是通过TCP协议进行三次握手SYN请求,通过判断对方的响应内容分析端口情况,如果对方返回SYN/ACK则表示端口开放,如果对方返回RST则表示端口关闭或被阻断。由于TCP有不同FLAG,利用不同FLAG扫描能够达到不同的效果,因此又有基于SYN的扫描,基于RST的扫描,基于FIN/PSH/URG的扫描等

TCP的丢包对网络传输性的影响如何计算?

一般我们认为TCP丢包只要产生丢包、就会重复传输一次数据包,因此对网络性能的影响为“多传输一个数据包而已”,这种认知是错误的。

TCP中涉及到发送窗口的概念,发送窗口随传输时间增长,初始的发送窗口很小(只有1个MSS大小),启动后会翻倍增长(慢启动),当窗口大小翻倍到16个MSS大小后,会每次往返+一个MSS大小逐个往17,18,19这样递增(拥塞避免),当网络出现丢包重传时,TCP认为当前发送窗口的大小触及到了网络性能的瓶颈,为了不再引起网络丢包,将当前的窗口大小减半或重置为初始大小的处理,这将大大降低后续一段时间发送性能。所以一旦TCP发生丢包,对网络性能影响绝不止“多传输一个数据包而已”