TCP 三次握手和四次挥手学习记录

三次握手 

名词描述

1.seq(sequence number),序列号随机生成的

2.ack(acknowledgement number)确认号 ack = seq + 1

3.ACK (acknowledgement)确定序列号有效

4.SYN(synchronous)发起新连接

具体步骤讲解

1.首先客户端会发送一个段这个段就是SYN报文,想跟服务端进行连接,并且会携带一个序列号,下次发送的数据序列号还会进行+1。

2.服务端收到了SYN + seq 字段之后,服务端也会生成一个对应服务端seq序列号,这时候就会携带ACK确认号,表示之前的SYN 收到了,还会有一个小写的ack 把 客户端的seq + 1

3.客户端收到服务端的响应之后会发送一个ACK确定序列号有效,并且还会发送seq注意这里的seq会通过算法计算出来是否跟服务端的ack值相等,然后会发送一个新的ack这里的ack是服务端的seq值+1,确保一切正常。

 四次挥手

名词描述

1.seq(sequence number),序列号随机生成的

2.ack(acknowledgement number)确认号 ack = seq + 1

3.ACK (acknowledgement)确定序列号有效

4.SYN(synchronous)发起新连接

5.FIN (FINISH)完成

1.断开连接服务端和客户端都可以主动发起我们拿客户端举例,客户端进行断开操作先发送FIN包生成客户端的seq序列号随后进入wait1状态 ,这是第一次挥手。

2.服务端收到FIN包表示自己进入了关闭等待状态,然后向客户端使用ack验证,验证成功打上ACK标记,随后生成服务端的seq值发送给客户端,这是第二次挥手,服务端此时还可以发送未完成的数据。

3.等待服务端所有任务操作完成之后服务端开始进入最后确认状态,向客户端发送FIN包,并且验证ack,使用客户端第一次的seq + 1去验证,验证成功打上ACK标记,并且生成一个新的序列号seq发送给客户端,这是第三次挥手。

4.客户端收到之后进入超时等待状态2MSL(1-4分钟),经过等到后客户端关闭连接,而服务端收到信息验证完成ack成功之后打上ACk标记随后将关闭连接。

为什么需要超时等待时间?

这是为了保证服务端收到ACK包,假设如果没有2MSL的等待时间,ACK包丢失了,那服务端将永远不会断开连接,有了2MSL,如果一旦发生丢包将会进行超时重传,实现可靠连接。

 

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柑橘乌云_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值