tcp && ip
目录
TCP
面向连接、可靠、面向字节流,即应用程序对数据的发送和接收是没有边界限制的.
-
TCP数据流:交互数据流(对实时性要求高,传输的数据流少,如ssh,telnet,一般对每一个报文段,都会对其进行回复ACK)、成块数据流(对传输效率要求高,如ftp,一般对连续多个报文段共同回复一个ACK)
-
ssh回显使用延时确认:客户端发送一个字符,服务器收到后并不立刻发送确认,而是和回显字符一起发送。可减少发送报文段的数量,提高通信效率。然而对客户端则并不是这样也不可能是,因为客户端收到数据后,并不是马上就有数据发送给服务端。
-
TIME_WAIT状态存在的原因:
- 当对服务器发送来的FIN进行应答ACK时,若ACK丢失,则可以重新进行发送
- 等待2MSL(maximum segment lift, 报文段最大生存时间),等待网络中延迟的数据包消失,避免影响下次连接(同IP同端口)
-
复位报文段发送场景:
- 访问不存在的端口,对方会发送复位报文段
- 通过发送异常报文段,来进行异常终止连接
- 处理半打开的连接:如果向处于半打开状态的连接发送数据,对方会回应一个复位报文段
-
TCP拥塞控制:慢启动,拥塞避免,快重传,快恢复;算法:reno,vegas,cubic(Linux默认)。可通过
cat /proc/sys/net/ipv4/tcp_congestion_control查看。判断拥塞依据:- 传输超时:同样执行慢启动和拥塞避免算法
- 连续收到3个重复确认报文段:执行快恢复和快重传算法