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通信机制是计算机中很重要的一个知识点,不是一句两句就能解释清楚的,需要反复推敲其中的玄妙. 通俗理解: 但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?我 ...
随机推荐
- C#与Java同步加密解密DES算法
在实际项目中,往往前端和后端使用不同的语言.比如使用C#开发客户端,使用Java开发服务器端.有时出于安全性考虑需要将字符加密传输后,由服务器解密获取.本文介绍一种采用DES算法的C#与Java同步加 ...
- Android开发之欢迎界面标准
import java.util.ArrayList; import android.app.Activity; import android.content.SharedPreferences; i ...
- mysql从时间字符串中取出日期数据
addtime='2016-09-03 18:12:44' substr(addtime,1,10) as 创建日期 SUBSTR(string, string charcter, number o ...
- Ubuntu下的init.d管理update-rc.d
计算机在启动的时候会自动执行一些脚本,用于启动一些应用程序服务,update-rc.d 是管理这些脚本的常用命令之一. 首先这是 LinuxQuestions 中对 update-rc.d 的定义: ...
- 管理多tomcat实例的shell脚本
为了简化tomcat的部署复杂度, 把以前单独配置的脚本提出来做了一个带参数的, 可以用于单机环境下的多tomcat实例管理. 其中deploy功能, 会将指定的模块war按日期时间更名备份后, 再部 ...
- Kafka流处理平台
1. Kafka简介 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性 ...
- PHP-Windows下搭建PHP-MSF环境【原创】
环境: Windows7 64位 php-7.0.19 php-swoole-1.9.15 php-yac-2.0.2 php-redis-3.1.2 php-mongodb-1.2.10 遇坑: C ...
- [转载]virtual box如何生成新的UUID
原文地址:virtual box如何生成新的UUID作者:阿昭 问题描述:在为Virtual Box加载多台虚拟机器(显然这些虚拟机器都来自一个模板)的时候,出现如下错误: "Cannot ...
- 严重: The web application [] registered the JDBC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDB
idea项目启动报如下错误, 网上的方法都试了都没用, 一直没解决, 干掉项目, 重新从svn检出就好了...坑 啊 Root WebApplicationContext: initializatio ...
- 解决『Manifest merger failed with multiple errors, see 』
Error:Execution failed for task ':app:processDebugManifest'.> Manifest merger failed with multipl ...