您的位置:首页 > 理论基础 > 计算机网络

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

2017-08-16 11:37 274 查看
今天看网络编程。又又一次看了一遍三次握手。曾经只知道连接有三次握手。今天发现原来断开也有三次握手。

三次握手:指通信两方彼此交换三次信息。

三次握手是在存在数据报丢失、反复和延迟的情况下,确保通信两方信息交换确定性的充分必要条件。

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以后的数据均丢失。通信两方在一定时间内没有不论什么信息交换。连接自己主动释放。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: