概念
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发生丢包,对网络性能影响绝不止“多传输一个数据包而已”



