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以后的数据均丢失。通信两方在一定时间内没有不论什么信息交换。连接自己主动释放。
TCP/IP 三次握手,温故知新的更多相关文章
- 在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP
如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...
- 使用tcpdump探测TCP/IP三次握手
读计算机应该就同说过TCP/IP三次握手,但是都没有去验证过,今天心血来潮,去验证了一下,于是乎写下了这篇博客,可能写的可能有问题,还请多多指教 包括我学习,还有从很多资料来看资料,第三次握手,应该会 ...
- 31.TCP/IP 三次握手与四次挥手
TCP/IP三次握手 TCP建立连接为什么是三次握手,而不是两次或四次? TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6. 顺便说一句,原则上任何数据传输都无法确保绝对可靠,三次握手 ...
- TCP/IP三次握手与四次挥手的正确姿势
0.史上最容易理解的:TCP三次握手,四次挥手 https://cloud.tencent.com/developer/news/257281 A 理解TCP/IP三次握手与四次挥手的正确姿势http ...
- 需要知道的TCP/IP三次握手
TCP/IP三次握手是TCP协议中比较重要的一个知识点,但是在很多博客中看到的三次握手的过程图很多都不是很正确.我在google找到了一篇写的非常不错的介绍TCP/IP技术文章期中就有三次握手的讲解, ...
- TCP/IP 三次握手,四次断开
TCP/IP 三次握手,四次断开 一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷 本. 下面是TCP报文格式图: 图 ...
- WireShark抓包分析以及对TCP/IP三次握手与四次挥手的分析
WireShark抓包分析TCP/IP三次握手与四次挥手 Wireshark介绍: Wireshark(前称Ethereal)是一个网络封包分析软件.功能十分强大,是一个可以在多个操作系统平台上的开源 ...
- TCP/IP 三次握手
网络连接状态 网络连接状态(11种)非常重要这里既包含三次握手中的也包括四次断开中的,所以要熟悉. LISTEN 被动打开,首先服务器需要打开一个socket进行监听,监听来自远方TCP端口的连接请求 ...
- TCP/IP三次握手与四次握手
原文地址 http://blog.csdn.net/whuslei/article/details/6667471 http://blog.csdn.net/wo2niliye/article/det ...
- 通俗了解TCP/IP三次握手四次挥手
前言: tcp/ip通信机制是计算机中很重要的一个知识点,不是一句两句就能解释清楚的,需要反复推敲其中的玄妙. 通俗理解: 但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?我 ...
随机推荐
- 〖Android〗sshd for android, 及映射根文件系统至本地盘符
严重问题: 若移植失败将可能直接导致手机***无法开机***,导入相关文件需慎重! 达成效果: 1. ssh 远程登录 Android 终端: 2. sftp 挂载/映射 Android 根文件系统至 ...
- Ubuntu x86-64汇编(4) 数值操作指令
整数乘法指令 Integer Multiplication 对于有符号数的乘法有特殊的规则, 因此无符号数乘法和有符号数乘法对应着不同的指令mul和imul. 乘法会产生两倍尺寸的数值结果, 即两个n ...
- Ubuntu16.04下的英文词典Artha
地址: http://artha.sourceforge.net http://artha.sourceforge.net/wiki/index.php/Download 在Ubuntu下可以直接安 ...
- git clone时RPC failed; curl 18 transfer closed with outstanding read data remaining
git clone时报RPC failed; curl 18 transfer closed with outstanding read data remaining 错误 原因1:缓存区溢出 解决方 ...
- 内存问题的排查工具和方法– Clang的AddressSanitizer
1 概述 Valgrind可以有效地监测处大多数内存问题,你肯定忍不住会想,既然c/c++的内存问题这么常见,为什么不在编译器中加入内存问题检测的功能呢? 很可惜,GCC中还目前还不支持内存检测,可喜 ...
- mysql之limit m,n
limit是mysql的语法 select * from table limit [m],n; 其中,m—— [m]为可选,如果填写表示skip步长,即跳过m条. n——显示条数.指从第m+1条记录开 ...
- 快排法求第k大
快排法求第k大,复杂度为O(n) import com.sun.media.sound.SoftTuning; import java.util.Arrays; import java.util.Ra ...
- Python装饰器几个有用又好玩的例子
装饰器是一种巧妙简洁的魔术,类似于Java中的面向切面编程,我们可以再函数执行前.执行后.抛出异常时做一些工作.利用装饰器,我们可以抽象出一些共同的逻辑,简化代码.而简化代码的同时,就是在增加代码鲁棒 ...
- 基于matplotlib的数据可视化 - 热图imshow
热图: Display an image on the axes. 可以用来比较两个矩阵的相似程度 mp.imshow(z, cmap=颜色映射,origin=垂直轴向) imshow( X, cma ...
- SharePoint 中时间轴 Timeline的实现
客户需要在OA中实现每日动态功能,能够记录每一位员工的每天的工作动态,我很快想到了时间轴,因为时间轴能很直观的现实员工每一刻的动态.就像Facebook的Timeline效果(点击查看). 尝试着搜索 ...