TCP的三次握手:
How:
- C → S:我想和你建立连接
- S → C:收到,我同意你的请求
- C → S:收到
Why:
1.
如果C的请求在网络中滞留很久,C也没有收到回应,那么C会重发请求;
如果C的多次请求到达S,但是没有最后一次确认操作,S可能会打开多个连接;
有了第三次确认,就不会出现这种情况,C不对后面的请求确定,S就不会打开这么多连接。
2.https://blog.csdn.net/lengxiao1993/article/details/82771768
TCP的四次挥手:
为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤
如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认
How:
- A → B:我想关闭连接
- B → A:好的,你先关吧,我还有需要传输的东西,等下再关(半关闭状态)
- B → A:我的东西传完了,关吧(有时候这一步会和上一步同时进行,发ACK+FIN)
- A → B:好的