TCP三次握手及关闭时的2MSL分析
TCP/IP三次握手四次挥手,是非常重要的,这个链接与关闭过程也是非常easy的。但为什么是三次握手?以及为什么要等待2MSL的状态?大部分人或许听到这个问题就蒙了。这篇博客就综合《TCP/IP具体解释:卷一》来分析一下原因:
以下看TCP三次握手四次挥手的原理图:
1.为什么要三次握手?
为了避免已失效的连接报文段又到达可server。
考虑这样一个正常的情况:
如果TCP连接是两次握手。
当client发送了一个请求连接的报文时,因为网络原因这个报文丢失了,那么client一段时间内没有收到server的确认就会再次发送请求连接报文,这次server收到了,两方都建立了连接,然后传输数据,最后关闭连接。
可是考虑一下,上文中的丢失数据包若没有丢失,仅仅是在一个网络节点长时间滞留了,这时两方都已经关闭了连接,此时server又收到了丢掉了的数据包。觉得client又要建立连接,由于是两次握手所以server向client发送了确认报文,并变 为 建立连接状态。
可想而知client并没有发起连接所以会忽略server的确认,这样就浪费了server的资源。
2.为什么要等待2MSL时间?
1. 当client的最后一次确认连接的报文丢失(第四次挥手发送的)。server会再次发送FIN报文,等待client的确认,client在2MSL内收到server重传的报文再次确认(防止此时client已经关闭)。
2. 2MSL 的时间能够使全部已失效的报文都消失(防止对新建的连接造成影响)。若在不等待2MSL,立即建立新的连接。那么在关闭连接前发送的失效报文段非常可能影响本次连接。
然而,TCP规定处于2MSL状态的的插口对(clientIP/port和serverIP和port)不能再次被使用。 若在2MSL状态下新建连接能够使用这个插口对,当已失效的数据包再次到达这个新连接,推断插口一致就会接受这个报文。但实际上这不是新建连接交互的数据,因此不能使用此无效数据包。
TCP三次握手及关闭时的2MSL分析的更多相关文章
- TCP三次握手(建立连接)/四次挥手(关闭连接)
TCP数据包格式 顺序号(32位):用来标识从TCP源端向TCP目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号.如果将字节流看作在两个应用程序间的单向流动,则TCP用顺序号对每个 ...
- 为什么 TCP 建立连接是三次握手,关闭连接确是四次挥手呢?
Java技术栈 www.javastack.cn 优秀的Java技术公众号 作者:小书go https://blog.csdn.net/qzcsu/article/details/72861891 背 ...
- TCP三次握手/四次挥手详解
一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...
- wireshark抓包工具简介以及tcp三次握手的一些含义
wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了.为了安全考虑, ...
- TCP三次握手四次挥手
看到一篇总结很好的TCP三次握手,学习一下,原文链接. 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,S ...
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
- tcp三次握手和四次握手
建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资 ...
- iOS 开发:TCP三次握手连接
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握 ...
- TCP三次握手原理详解
TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族. 从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层.网络层.传输层.应用层. TCP协议:即传输控制 ...
随机推荐
- JavaScript 浏览器事件解读
1. 事件基本概念 事件是指在文档或者浏览器中发生的一些特定交互瞬间,比如打开某一个网页,浏览器加载完成后会触发 load 事件,当鼠标悬浮于某一个元素上时会触发 hover 事件,当鼠标点击某一个元 ...
- css的选择器效率分析
我们都知道,CSS具有叠加性(同一个元素被多条样式规则指定),继承性(后代元素会继承前辈元素的一些样式和属性)和优先级 (由于CSS的叠加性和继承性,将产生优先级,这指的是哪条样式规则会最终作用于指定 ...
- 如何在Eclipse中创建Web服务器
使用Eclipse开发Web项目时,需要先配置Web服务器,如果已经配置好Web服务器,就不需要再重新配置了.也就是说,本节的内容不是开发每个项目时,都必须经过的步骤.创建Web服务器的具体步骤如下: ...
- 关于MVC4.0版本以上的RegisterBundles用法
public class BundleConfig { //新建了一个项目文件,打开App_Start下的BundleConfig看看, public static void RegisterBund ...
- OpenCV: Kmeans的使用一维和二维点集
OpenCVKmeans算法默认使用了Kmeans++选取种子点 参考:OpenCv中Kmeans算法实现和使用 //效果:根据半径聚类,并不一定能得到好的结果. float CBlotGlint:: ...
- mqtt-client回调方法简介
mqtt-client回调方法简介 毫无疑问Callback方式是最复杂的一种,但是其也是能够提供更好的服务,因此有必要好好研究,下面就是对使用回调方式的简单介绍: 一.在使用回调方式前,先通过MQT ...
- ASP.NET MD5加密
protected void Button1_Click(object sender, EventArgs e) { string pwd = TextBox2.Text.Trim(); Respon ...
- 【笔记】Linux就该这么学-第六课第四章
vim使用 a 在光标后一位置插入 i 在光标当前位置插入 o 在光标下面创建个空行 dd 删除(剪切)光标所在行 5dd 删除(剪切)从光标处开始的5行 yy 复 ...
- [luogu4158 SCOI2009] 粉刷匠(dp)
传送门 Solution 把状态都记上暴力转移即可 Code //By Menteur_Hxy #include <queue> #include <cmath> #inclu ...
- [luogu1155 NOIP2008] 双栈排序 (二分图染色)
传送门 Description Input 第一行是一个整数 n . 第二行有 n 个用空格隔开的正整数,构成一个 1−n 的排列. Output 共一行,如果输入的排列不是"可双栈排序排列 ...