TCP三次握手 四次挥手
来源:互联网 发布:如何做淘宝优惠券推广 编辑:程序博客网 时间:2024/06/01 08:54
TCP三次握手 四次挥手
预备知识
TCP的标志位
- SYN(请求建立连接)
- ACK(确认)
- PSH(传送)
- FIN(结束)
- RST(重置)
- URG(紧急)
TCP是面向连接的字节流协议,是全双工的。
三次握手
例图:
- 第一次握手:客户端发送一个连接请求(SYN位置为1)
- 第二次握手:服务端接收到连接请求,发送确认(SYN位置为1, ACK位置为1)
- 第三次握手:客户端接受到服务端的确认,发送一个ACK(ACK位置为1)
为什么一定是三次握手呢?
考虑两次握手:客户端发送一个连接请求,服务端接受到连接请求,发送一个确认(开始分配资源),如果服务端的ACK丢失,客户端就无从知道连接已经建立。为什么不是四次呢?三次都已经够了,为什么还要多加一次
四次挥手
例图:
第一次挥手:客户端的数据到达尾部,向服务端发送请求断开(FIN位置1)
相当于我这边数据传送完了,准备断开连接了
第二次挥手:TCP的连接是全双工的双向连接,关闭必须从两边关闭,服务端收到FIN标志位后,并不会立即向客服端发送FIN标志位,而是发送一个ACK的应答信息
相当于:你请求关闭的请求我已经收到,但我可能还有数据没有接受完(数据传送需要时间),你再等下,等我数据传输完成了我就告诉你
第三次挥手:服务端接受数据完成,向服务端发送一个FIN=1
第四次挥手:客户端接收到服务端发送来的断开连接请求,发送一个确认。并把自己设置成TIME_WAIT状态,并启动计时器
如果服务端没有收到ACK, 服务端的TCP的定时器到达后,会要求客户端重新发送ACK, 服务端收到ACK就断开连接,当客户端等待2MSL(2倍报文最大生存时间)后,没有收到服务端的重传请求后,就知道服务端已经接收到ACK,此时关闭自己的连接。
参考博客:三次握手,四次挥手
为什么一定是三次握手
阅读全文
0 0
- TCP三次握手/四次挥手
- TCP三次握手/四次挥手
- TCP三次握手/四次挥手
- TCP三次握手&四次挥手
- TCP三次握手/四次挥手
- TCP 三次握手 四次挥手
- TCP三次握手四次挥手
- TCP三次握手/四次挥手
- TCP三次握手/四次挥手
- TCP三次握手/四次挥手
- TCP三次握手/四次挥手
- TCP三次握手/四次挥手
- TCP三次握手/四次挥手
- TCP三次握手+四次挥手
- TCP三次握手/四次挥手
- TCP三次握手/四次挥手
- tcp 三次握手/四次挥手
- TCP 三次握手 四次挥手
- python3中字典key取值
- MySQL 事务操作
- 背景图片始终居中的两种方式
- node.js Basic routing
- 文本处理sed
- TCP三次握手 四次挥手
- Codeforces Round #429(Div 1)
- Android--WebView开发项目使用这些就够了
- CentOS7使用lvm动态添加磁盘到逻辑卷/data (适用xfs文件系统)
- android-自定义View解决wrap_content无效的问题
- Android之Activity生命周期总结(一)
- FreeRTOS简介与源码下载
- css隐藏和显示
- webpack 构建Vue项目