TCP三次握手/四次挥手过程

TCP是面向字节流的可靠协议,传输的数据单元叫报文段,报文段包括:首部和数据。

TCP报文段首部的几个字段的含义:

  1. 序号:本报文段发送的数据的第一个字节的序号
  2. 确认号:希望收到对方下一个报文段的第一个字节的序号
  3. 确认ACK:连接请求报文段的ACK=0,建立连接后ACK=1(ACK=1时确认号有效,ACK=0时确认号无效)
  4. 同步SYN:当SYN=1,ACK=0这是连接请求报文段,若对方同意则响应报文段SYN=1,ACK=1
  5. 终止FIN:当FIN=1,表示此报文段发送方的数据已发送完毕,要请求释放连接

三次握手过程:

  1. A向B发连接请求报文段,同步SYN=1确认ACK=0序号seq=x(不携带数据也要消耗1个序号),确认ACK=0确认号ack无效
  2. B收到连接请求报文段后,若同意建立连接,向A发送确认报文段,同步SYN=1确认ACK=1序号seq=y(不携带数据也要消耗1个序号),确认号ack=x+1(不携带数据)
  3. A收到B的确认后,还要发送确认报文段,同步SYN=0(SYN不需要了),确认ACK=1序号seq=x+1确认号ack=y+1

四次挥手过程:

  1. A的数据传送完毕,A向B发送连接释放报文段,终止FIN=1序号seq=u(不携带数据也要消耗1个序号)
  2. B收到连接释放报文段后,若同意释放,向A发送确认报文段,确认ACK=1序号seq=v(v=B已发送的数据的最后一个字节序号+1),确认号ack=u+1
  3. 此时A到B方向的连接就释放了,TCP处于半关闭状态,B到A方向的连接未关闭,若B要发送数据,A仍要接收。若在半关闭状态B又发送了一些数据,B的数据传送完毕,B向A发送连接释放报文段,终止FIN=1确认ACK=1序号seq=w(w=B已发送的数据的最后一个字节序号+1),确认号ack=u+1
  4. A收到连接释放报文段后,向B发送确认报文段,确认ACK=1序号seq=u+1确认号ack=w+1

注:若B收到A的连接释放报文段后,不再发送数据了,第2和3步合并为一个即只发送一个确认报文段,终止FIN=1确认ACK=1序号seq=v(w=B已发送的数据的最后一个字节序号+1),确认号ack=u+1,第4步变为:A收到连接释放报文段后,向B发送确认报文段,确认ACK=1序号seq=u+1确认号ack=v+1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值