浅学三次握手

 

 数据要完成传输,必须要建立连接。由于建立TCP连接的过程需要来回3次,所以,将这个过程形象的叫做三次握手。

299701d5179d45d18709864815f69d07.png


结合上面的图来看更清楚。

先说三次握手吧,连接是后续数据传输的基础。就像我们打电话一样,必须保证我和对方都拿着电话在听,才能保证我们两个说的话对方能够接收到。

 

 

三次握手大概就是这个意思:

张三想跟李四聊聊天,于是张三拨通了李四的手机号,李四听到铃声响起,按了接听按钮。张三:Hi,李四,是你吗?唠两块钱的呀!

李四:Hi,张三,是我,可以唠。

张三:好,我确定是你了,接下来我要开始和你唠了。

看上去多少有点儿死板,但程序上确实就是这样的。

 

 

1、第一次握手

首先客户端发起连接请求,向服务器发送 TCP段,段中包含了目标端口和本机端口,设置 SYN 标志位为1,序号为 x,也就是初始序号 ISN,如果是第一个连接,很有可能就是 0。当然,此时服务器对应的端口要处于监听状态。此时,客户端进入 SYNC_SENT 状态,等待服务器的确认。

 

2、第二次握手

服务端收到客户端发来的 SYN 段,对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1),这就是确认序号。同时,服务端还要发送 SYN 请求信息,将SYN位置为1,Sequence Number为 y(服务端的TCP段序号)。服务器端将上述所有信息放到一个TCP段(即SYN+ACK段)中,一并发送给客户端,此时服务器进入SYN_RECV状态。

 

3、第三次握手

客户端接收到服务端发来的 SYN+ACK 段后,发送一个 ACK 给服务端,将 Acknowledgment Number 设置为 y+1。此时客户端进入 ESTABLISHED(已连接)状态,服务端接收到此 TCP段,也将进入 ESTABLISHED 状态,也就标志着三次握手结束,连接成功建立。

f2b66b521df146e194f7119411a5c944.png

 

三次握手完成之后,连接就建立了,之后就可以愉快的传输数据了。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值