TCP建立连接,三次握手
主要目的是确定双方都能通信,并且有通信的意愿。核心的东西有两点:
- 确定双方能够通信
- 通信的意愿
三次通信见下图:

- 第一次由机器A发起连接请求,并且发送一个SYN a,表明A有通信的意愿
- 第二次由机器B向A确认连接,并且发送一个SYN k和ack a+1。SYN k表明机器B有和机器A通信的意愿 ;ack a+1表明机器B有能力和A建立连接
- 第三次由机器A向机器B发送ack k+1,表明A有能力向B建立连接
确认机制,在某种程度上是在证明是否有能力建立连接
TCP断开连接,四次挥手

断开连接与建立连接类似。但是在被动关闭的一方,不能通过一次信息,将FIN和ACK都发送过去原因如下。
- 是断开连接需要“先关读,再关写”。步骤如下:
- 机器A向机器B发送关闭连接的请求用,FIN标识;
- 机器B接收到机器A的请求,并向机器A发送ack表示确认收到了请求(有关闭连接的能力);但是此时还不能发送FIN给机器A,因为需要把关闭连接的善后工作搞定;
- 机器B完成了善后工作,就向机器A发送FIN,表示自己可以关闭了;
- 机器A收到FIN之后,向机器B发送ACK表示确认。
后续会有更新。。。