TCP 详解三次握手

TCP协议:传输控制协议,顾名思义,就是对数据的传输进行一定的控制。在传送数据之前必须先建立连接,数据传送完成后要释放连接。因此TCP是一种可靠的运输服务,今天我们来讲讲如何建立连接。

三次握手过程

TCP在建立连接时主要解决三个层面问题:

  • 是连接的每一方都能知道对方的存在
  • 协商连接参数
  • 各位对运输资源如缓存大小,连接表等

 我们都知道TCP连接采用的是C/S模式,主动发起连接的叫客户端client,被动等待连接的是服务器Server。那TCP建立连接的过程是什么样的呢

 

 默认情况下客户端client和服务器server的TCP进程都处于close状态。服务器TCP服务进程先建立传输控制块TCB,然后服务端进入listen状态等待连接请求。

  1. 第一次握手:客户端TCP进程先建立控制块TCB,然后向服务端发送连接请求报文段,此时SYN=1,随机选定一个初始序号seq=x,此报文不携带数据,但要消耗一个序列号,发送完毕后客户端进入SYN-SENT状态(同步已发送)
  2. 第二次握手:服务端收到客户端请求连接报文段后,若同意建立连接,则发送确认报文,确认报文中SYN=1,ACK=1,确认号ack=k+1,同时随机选定一个自己的序列号seq=y,确认报文段也不携带数据,但要消耗一个序列号,发送完毕后服务端进入SYN-RCVD状态(同步接受)。
  3. 第三次握手:客户端收到确认报文后,检查ACK=1,ack=x+1是否正确,若正确,则向服务端发送确认报文,确认报文中ACK=1,ack=y+1,seq=x+1,发送后进入ESTAB-LISHED状态,服务端收到确认报文后也进入ESTAB-LISHED状态,此时TCP连接建立成功。

 小结:三次握手的关键主要是为了确认对方收到了自己的数据包,这个目标就是通过“确认号(ack)”字段实现的。计算机会记录自己发送的数据包序号seq,等收到对方传过来的数据包后,检测“确认号”字段,看ack=seq+1是否成立,如果成立说明对方收到了自己的数据包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值