TCP三次握手 与 四次挥手
了解这些过程之前,我们应该先了解TCP首部
作为传输层的两大协议之一,tcp(传输控制协议),相较于udp(用户数据报协议) tcp更可靠,更适合传输大型的 不能中断的(比如视频会话)的过程
作为传输层的协议其数据段首部内容应该有 目标端口号 和 源端口 还有一系列的标志 比如 SYN(请求) ACK(应答) seq(序号) ack(确认号)urg(发送方快速处理) psh(接收方快速处理)FIN(结束传输)rst(重启传输)
三次握手
认识之后我们就可以开始了解tcp的三次握手了 为何要进行三次握手 是因为 tcp协议替工可靠传输 在传输信息之前 要先建立连接 这时就需要三次握手
以上就是tcp三次握手的具体情况 客户端向服务端发起连接请求 服务端进行应答 并向客户端发起连接请求 然后 客户端进行应答
可以发现 前两个数据段已经足以使得双方建立连接了为何还需要客户端再次确认呢?
我们可以假设 第一个客户端发送的连接请求信息 由于其他原因使得到达服务端的时间延迟了 这时客户端会再一次发起连接请求 服务端已经收到了客户端的一个连接请求 并已经建立了连接 此时又收到一个连接请求 服务端会回应这一连接请求 向客户端发送应答和连接请求 而客户端早与服务端建立了链接 此时会导致 服务端的请求无人应答 服务端会等待应答 浪费服务端资源
如果此时客户端发送应答 就不会使得 服务器资源浪费
四次挥手
当传输结束后 服务器与客户端要断开连接 此时客户端想要断开连接 发送FIN请求 服务器进行应答
然后服务器也想断开连接 于是也发送FIN请求 客户端进行应答
为什么是四次挥手 :
当客户端想要断开连接时 发送断开请求 服务器收到后响应客户端 此时客户端不会再发送数据
服务器传完自己的数据之后 给客户端发送结束请求 客户端收到后同意然后服务器断开连接
为了确保可靠性 客户端发出断开请求之后没有收到服务器的确定 那么客户端会重发断开请求
如果客户端在第三次挥手之后直接断开 服务器将无法确认对端有没有与自己断开此时需要第四次挥手 如果第四次挥手发送失败 客户端还存在2msl的等待时间 在等待时间内服务器由于没有收到第四次挥手 会重发第三次挥手 如果过了等待时间 双方都将断开连接