当前位置:网站首页>TCP中的三次握手和四次断开
TCP中的三次握手和四次断开
2022-07-20 05:52:00 【aweike】
关于 TCP
1.TCP 提供一种面向连接的、可靠的字节流服务
2.在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCP
3.TCP 使用校验和,确认和重传机制来保证可靠传输
4.TCP 给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复
5.TCP 使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制
三次握手是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。
第一次握手([SYN], Seq = x) 客户端发送一个SYN标记的包,Seq初始序列号x,发送完成后客户端进入SYN_SEND状态。
第二次握手([SYN,ACK], Seq = y, ACK = x + 1) 服务器返回确认包(ACK)应答,同时还要发送一个SYN包回去。ACK = x + 1,表示确认收到(客户端发来的Seq值 + 1),Seq = y, 表示让客户端确认是否能收到。发送完成后服务端进入SYN_RCVD状态。
第三次握手([ACK], ACK = y + 1) 客户端再次发送确认包(ACK),ACK = y + 1, 表示确认收到服务器的包(服务端发来的Seq值 + 1)。客户端发送完毕后,进入ESTABLISHED状态,服务端接收到这个包,也进入ESTABLISHED状态, TCP握手结束。
TCP连接的断开需要发送四个包,所以称为四次挥手。
第一次挥手([FIN], Seq = u) 客户端发送一个FIN标记的包,告诉服务器需要关闭连接,表示自己不用发送数据了,但是还可以接收数据。发送完成后,客户端进入FIN_WAIT_1状态。
第二次挥手 ([ACK], ACK = u + 1, Seq = v) 服务端发送一个ACK的确认包,告诉客户端接收到关闭的请求,但是还没有准备好。发送完成后,服务端进入CLOSE_WAIT状态,客户端收到这个包后,进入FIN_WAIT_2,等待服务器关闭连接。
第三次挥手 ([FIN], Seq = w, ACK = u + 1) 服务端准备好关闭连接时,发送FIN标记的包,告诉客户端准备关闭了。发送完成后,服务端进入LAST_ACK状态,等待客户端确认。
第四次挥手 ([ACK], ACK = w + 1) 客户端接收到服务端的关闭请求,再发送ACK标记的确认包,进入TIME_WAIT状态,等待服务端可能请求重传的ACK包。 服务端接收到ACK包后,关闭连接,进入CLOSED状态。 客户端在等待固定时间(两个最大段生命周期)后,没有接收到服务的ACK包,认为服务器已关闭连接,自己也关闭连接,进入CLOSED状态。
边栏推荐
猜你喜欢
Account and authority management
Gestion des processus et des tâches prévues
Rust installs and implements a HelloWorld
系统安全及应用
DHCP原理与配置
进程与计划任务管理
Regular expression and shell Three Musketeers (grep, egrep, SED, and awk) tools
Shell脚本之正则表达式
SSH Remote Management and sshd service support verification method
PXE高效网络装机、Kickstart无人值守安装
随机推荐
三层交换机
Shell循环语句详解--while、until循环
CPU平均负载过高检查(iowait负载高)
One bite of Stream(2)
磁盘管理和文件系统
Quickly understand shell scripts
RAID disk array
DHCP configuration
服务器防火墙软件—iptables
安装及管理程序
磁盘的配额
bond网络模式
条件判断if语句case语句
Yum install
expect
Simple realization of unity life game
RAID磁盘阵列
File system and log analysis
Istables firewall
McCabe measurement method to calculate program complexity