当前位置:网站首页>三次握手与四次挥手
三次握手与四次挥手
2022-07-31 05:09:00 【城南花开了^】
三次握手
1. 第一次握手:客户端发送位码为 SYN = 1(SYN 标志位置位),随机产生初始序列号 Seq = J 的数据包到服务器。服务器由 SYN = 1(置位)知道,客户端要求建立联机。
2. 第二次握手:服务器收到请求后要确认联机信息,向客户端发送确认号Ack = (客户端的Seq +1,J+1),SYN = 1,ACK = 1(SYN,ACK 标志位置位),随机产生的序列号 Seq = K 的数据包。
3. 第三次握手:客户端收到后检查 Ack 是否正确,即第一次发送的 Seq +1(J+1),以及位码ACK是否为1。若正确,客户端会再发送 Ack = (服务器端的Seq+1,K+1),ACK = 1,以及序号Seq为服务器确认号J 的确认包。服务器收到后确认之前发送的 Seq(K+1) 值与 ACK= 1 (ACK置位)则连接建立成功。经过了这三步之后,客户端与服务器端就成功建立起一个 TCP连接。这三个步骤统称为三次握手.
上面Seq表示序列号,Ack表示确认号,SYN和ACK以及FIN等都是标志位。ACK 被设置为 1表示确认号字段是有效的,如果 ACK为 0,则该段不包含确认信息。SYN 被用于建立连接过程,在连接请求中,SYN = 1 和 ACK = 0 表示该段没有捎带确认字段。连接应答会捎带一个确认,所以应答时会有 SYN= 1 和 ACK= 1。另外发送ACK无需任何代价,所以我们会看到一旦一个连接建立起来,ACK标志总是被置为1
四次挥手
1.客户端发送一个FIN Seq = M(FIN置位,序号为M)包,用来关闭客户端到服务器端的数据传送。
2.服务器端收到这个FIN,它发回一个ACK,确认序号Ack 为收到的序号M+1。
3.服务器端关闭与客户端的连接,发送一个FIN Seq = N 给客户端。
4.客户端发回ACK 报文确认,确认序号Ack 为收到的序号N+1。
对于四次挥手,其实仔细看是两次,因为TCP是全双工的,必须双方都关闭才可以,单方会有两次,共有四次。终止的时候,有一方是被动的,所以看上去就成了四次挥手.
边栏推荐
- torch.normal函数用法
- MySQL8.0.26安装配置教程(windows 64位)
- ES 源码 API调用链路源码分析
- MySQL database installation (detailed)
- MySQL-如何分库分表?一看就懂
- Duplicate entry ‘XXX‘ for key ‘XXX.PRIMARY‘解决方案。
- Redis Advanced - Cache Issues: Consistency, Penetration, Penetration, Avalanche, Pollution, etc.
- 面试Redis 高可靠性|主从模式、哨兵模式、Cluster集群模式
- tf.keras.utils.pad_sequences()
- numpy和pytorch中的元素拼接操作:stack,concatenat,cat
猜你喜欢
随机推荐
ERROR 2003 (HY000) Can't connect to MySQL server on 'localhost3306' (10061)
DVWA shooting range environment construction
Multiple table query of sql statement
再见了繁琐的Excel,掌握数据分析处理技术就靠它了
Workflow番外篇
mysql使用on duplicate key update批量更新数据
目标检测学习笔记
MySQL开窗函数
DVWA安装教程(懂你的不懂·详细)
110 MySQL interview questions and answers (continuously updated)
centos7安装mysql5.7
MySQL事务(transaction) (有这篇就足够了..)
关于小白安装nodejs遇到的问题(npm WARN config global `--global`, `--local` are deprecated. Use `--location=glob)
CentOS7 —— yum安装mysql
Numpy中np.meshgrid的简单用法示例
MySQL (updating)
SQL语句中对时间字段进行区间查询
ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
[C language] Detailed explanation of operators
Anaconda配置环境指令