问题带入 --- 个人阅读别人的笔记自己的理解 -- 具体底层有待以后提升后补充完成
1.HTTP请求 为什么是三次握手四次挥手?
2.为什么是三次握手不是两次握手?
TCP 报文格式:
标志位含义: 1.ACK : 确认序号有效 2.SYN:发送一个新的链接 3.FIN:释放一个链接
三次握手过程
**注意:**三次握手的主要目的是确保连接是双工的,可靠的通过更多的重传机制来保证连接
三次握手,建立TCP连接需要客户端和服务端总共至少发送三个包确认连接。
第一次握手:
-客户端发送一个TCP的SYN标志位置1的包指明发送的服务器端口,以及初始化序号 X
第二次握手:
-服务器返回确认包ACK应答,及SYN标志位和ACK标志位均为1,同时将确认序号设置为 X+1
第三次握手:
-客户端再次发送确认(ACK) SYN标志为0,ACK标志为1,并把服务器发送过来的ACK序号字段+1
第一次握手: 客户端什么都不确定。服务端确认对方发送正常。
第二次握手: 客户端发送/接受正常,对方发送接收正常。服务端确认自己发送正常,客户端发送正常。
第三次握手: 客户端发送/接受正常,服务端发送接受正常。服务端确认自己发送/接受正常,客户端发送接受正常。
tcp为什么三次握手
当网络原因服务端没有收到客户端的请求,且没有给客户端反馈。超时后客户端会再次向服务端发送请求。当网络畅通后服务器段收到最开始的请求并反馈给客户端。导致客户端认为自己未发送这个请求,服务端认为自己发送了一个新的请求,导致服务端性能浪费。