TCP
概述
TCP是在不可靠的IP层之上实现的可靠的数据传输协议。它主要解决传输的可靠、有序、无丢失、无重复的问题。主要特点:
1)面向连接
2)每条连接只能是点对点的
3)全双工通信(三次握手协议的原因)
4)面向字节流
TCP报文段
确认号字段:确认号字段为 N,表明我已经收到你 N-1号字段了,你下次给我发 N 号字段开始的字段。
握手协议
1. 为什么是三次握手?
TCP是全双工,意思就是 A给B发消息的时候,B也能给A 发消息。
- 第一次握手: A给B打电话说,你可以听到我说话吗?
- 第二次握手: B收到了A的信息,然后对A说: 我可以听得到你说话啊,你能听得到我说话吗?
- 第三次握手: A收到了B的信息,然后说可以的,我要给你发信息啦!
在三次握手之后,A和B都能确定这么一件事: 我说的话,你能听到; 你说的话,我也能听到。 这样,就可以开始正常通信了。
并且三次握手也避免以下的情况:
假设A第一次发送连接请求的报文因为网络问题长时间滞留,因为长时间等不到回复,所以A又发送了报文,然后跟B建立了连接,
四次挥手
分别关闭连接。
为什么A在TIME-WAIT状态必须等待2MSL的时间?
MSL是数据包在网络中的最大生存时间。
1) 保证A发送的最后一个ACK报文段能够到达。 如果A一发送完就关闭连接, 而A发送的最后一个ACK报文段丢失,那么B就无法正常进入CLOSED状态;但是如果
2) A在发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失,使下一个新的连接中不会出现这种旧的连接请求报文段。