TCP的握手
1.TCP协议:安全协议,传输过程中三次握手。 速度慢,连接三次握手,断开四次挥手。
-
第一次客户端发给服务器说明建立连接(SYN和自己的序列号seq)
-
第二次服务器给客户端响应ACK(SYN+1)和自己的SYN,说明我已经接收到了你的请求
-
第三次是客户端发给服务器ACK确认收到服务器的SYN
-
为什么是三次?原因
- 首先肯定不可能是一次,TCP是面向连接的协议,是双向的传输,仅靠一次握手不可能完成连接;
- 其次两次也不行;比如A发SYN给B,B因为网络中断或者连接失败等原因而没收到A发送的请求,然后A就再次发送SYN,当B收到了由A发送的请求时,会认为是一个请求链接,给A发送回应的B的ACK,A认为自己已经建立了连接而并不需要B发来的ACK,丢弃该数据,而B就会一直给A发送ACK,导致网络资源的浪费和占用;
- 三次就是解决了A自认为的无效连接,第二次B发送ACK给A时,A需要返回说明已经收到了连接,否则就是无效链接,再次建立连接。
-
断开的四次握手是什么
- 第一次握手是客户端对服务器发送FIN,说明要断开连接
- 第二次是服务端收到FIN后,返回一个ACK
- 第三次是服务器发送FIN,关闭连接;
- 第四次是客户端发送ACK确认消息;
-
为什么建立连接是三次,断开连接时四次?
当客户端发送SYN给服务器时,服务器返回的是ACK+SYN,其中ACK是响应的,SYN是同步用的
当客户端发送FIN时,服务器断开连接之前就知道A不再发送数据了,当然B就不再接收数据了,可能不会直接关闭。此时先发 送一个ACK说明我知道要关闭了,然后等B要发送的报文全部都发送结束了,在发出一个FIN,这时就关闭了连接。
所以在关闭时候,是不能同时发送的。
-
2.UDP:不安全协议,可能丢失数据 和不保证数据的顺序正确性 占用资源 速度快 数据报模式发送数据 面向无连接的形式。
扫描二维码关注公众号,回复:
12899878 查看本文章
![](/qrcode.jpg)