TCP/IP 三次握手,温故知新

今天看网络编程,又重新看了一遍三次握手,以前只知道连接有三次握手,今天发现原来断开也有三次握手。
三次握手:指通信双方彼此交换三次信息。
三次握手是在存在数据报丢失、重复和延迟的情况下,确保通信双方信息交换确定性的充分必要条件。

  • CR:请求连接
  • ACC:接收连接请求
  • SEQ:信息序列号
  • DR:终止连接

    三次握手的操作过程如下:
    1.建立连接时的三次握手

  • 正常情况

    这里写图片描述

  • CR出现重复
    这里写图片描述
    1.延迟的CR(SEQ = X);
    2.在规定的时间内未收到ACK而导致计时器超时,重发CR(SEQ = Y);
    3.接收方收到延迟的CR(SEQ = X),,发ACK=X, ACC (SEQ=Y);
    4.接收方收到重发的CR(SEQ = Z),认为是新的连接请求,发ACK =Z, ACC (SEQ = R)
    5.发送方收到一个对超时CR的确认,发REJEST = Y;
    6.发送方收到一个重发的CR的确认,发DATA (SEQ = Y),ACK = R.
    注意:在CR由于延迟而造成的计时器超时后,该连接请求变为无效的连接请求,对于发送方而言,该连接请求已经不存在了!当接收方连续收到两个CR时,并不认为第一个CR或第二个CR是无效的 ,仅仅认为第二个CR为另一个新的连接请求,并对其回应。

    2.释放连接
    释放连接可以分成两种,对称释放和非对称释放。对称释放就是指双方均同意的释放连接。非对称释放时指单方同意后的强行释放连接。由于非对称释放会造成数据的丢失,因而采取对称释放的策略。在释放连接时,为避免产生两军问题(Two Arrmy problem),我们采用三次握手加计时器的解决方案。分四种情况来讨论

  • 正常情况
    这里写图片描述

  • 异常情况1:最后的ACK丢失,如图
    这里写图片描述

1.发送方发DR(SEQ =X);
2.接收方同意,发DR(SEQ = Y),ACK = X;
3.发送方收到DR(SEQ = Y),发ACK=Y后释放连接。但ACK = Y丢失,导致丢失接收方计时器超时,自动释放连接。

  • 异常情况2:第二个DR丢失
    这里写图片描述
    1.发送方发DR(SEQ = X);
    2.接收方同意,发DR(SEQ = Y),ACK =X,但ACK =X该信息丢失;
    3.发送方计时器超时重发DR(SEQ = Z),新的三次握手开始

  • 异常情况3:第一个DR以后的数据均丢失,通信双方在一定时间内没有任何信息交换,连接自动释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值