为什么客户端A还要发送一次确认呢?(为什么需要第三次握手)

  这主要是为了防止已失效的连接请求报文段突然又传送到了B(服务器端),因而产生错误。

  所谓“已失效的连接请求报文段”是这样产生的:

  正常情况,A发出连接请求,但因连接请求报文丢失而未收到确认,于是A再重传一次连接请求。 后来收到了确认,建立了连接。 数据传输完毕后,就释放了连接。 A共发送了两个连接请求报文段,其中第一个丢失,第二个到达了B。  没有“已丢失的连接请求报文段”。

  异常情况,即A发出的第一个连接请求报文段并没有丢失,而是在某些网络节点长时间滞留了,以致延误到连接释放以后的某个时间才能到达B。 本来这是一个早已失效的报文段。   但B收到此失效的连接请求报文段后,就误认为A又发出了一次新的连接请求。    于是又向A发出确认报文段,同意建立连接。    假定不采用三次握手,那么只要B发出确认,新的连接就建立了。  由于现在A并没有发出建立连接的请求,因此不会理财B的确认,也不会向B发送数据。 但B却以为新的运输连接已经建立了,并一直等待A发来数据。 B的许多资源就这样浪费了。

  采用三次握手的方法可以防止上述异常现象的发生。

TCP三次握手中,为什么需要第三次握手?的更多相关文章

  1. TCP三次握手中SYN,ACK,seq ack的含义

    转至:https://www.cnblogs.com/muyi23333/articles/13841268.html 1.TCP 为什么三次握手而不是两次握手 1.防止已失效的连接请求又传送到服务器 ...

  2. TCP三次握手中SYN,ACK,Seq含义

    TCP(Transmission Control Protocol)传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示 ...

  3. SSL握手中win xp和SNI的那点事

    SSL握手中win xp和SNI的那点事 一.背景需求server1-3使用不同的域名对外提供https服务,用nginx作为前端负载均衡器并负责https集中解密工作(以用户访问的域名为依据进行流量 ...

  4. LVS(Linus Virtual Server):三种负载均衡方式比较+另三种负载均衡方式

    还有个姊妹篇也可以参考这个文章:六大Web负载均衡原理与实现 什么是LVS (Linux Virtual Server)?   首先简单介绍一下LVS (Linux Virtual Server)到底 ...

  5. uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式

    前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...

  6. 乒乓球队比赛,甲队有abc三人,乙队有xyz三人。 抽签得出比赛名单:a不和x比,c不和x,z比, 利用集合求出比赛名单

    import java.util.HashMap; import java.util.Map; /** * 乒乓球队比赛,甲队有abc三人,乙队有xyz三人. * 抽签得出比赛名单:a不和x比,c不和 ...

  7. TCP 三次握爪 四次挥手

    TCP三次握手和四次挥手过程 1.三次握手 (1)三次握手的详述 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向 ...

  8. TCP三次握手抓包理解

    TCP建立连接需要三次握手,分手需要四次握手,平时在网上看到很多次,但是还没有很理解.为什么分手要多一次?可能是刚开始追求女生的时候比较容易,到分手的时候就比较麻烦了吧... 了解某个东西要从它的基础 ...

  9. tcp的半连接与完全连接队列(三)源码分析

    TCP 协议中的 SYN queue 和 accept queue 处理 若要理解本文意图说明的问题,可能需要以下知识背景: listen 系统调用的 backlog 参数含义,以及与 net.cor ...

随机推荐

  1. WCF全双工数据传输

    项目结构: 客户端: using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  2. 用python写爬虫

    Python提供了许多Module,通过这些Module,可以很简单的做一些工作.比如,要获得cloga这个词在百度搜索结果页中的排名结果(排名结果+URL),这就是一个很简单的爬虫需求. 首先,要通 ...

  3. samba安装与配置

    1.安装软件包rpm -q samba samba-common samba-client cifs-utilsyum -y install samba samba-common samba-clie ...

  4. UIView类绘图出现错误提示

    一:问题: Jan 16 15:49:53  CUBOT Band Ⅲ[2082] <Error>: CGContextSetLineWidth: invalid context 0x0. ...

  5. Web window.print() 打印

    web打印 window.print() 我只给出比较有效的,方便的打印方法,有些WEB打印是调用ActiveX控件的,这样就需要用户去修改自己IE浏览器的Internet选项里的安全里的Active ...

  6. CMD常用指令

    列出所有端口使用情况 netstat -ano 只查看端口5060使用情况 netstat -ano|findstr "5060" 查看进程8612的信息 tasklist|fin ...

  7. hdu 1564 Play a game(博弈找规律)

    题目:一个n*n的棋盘,每一次从角落出发,每次移动到相邻的,而且没有经过的格子上. 谁不能操作了谁输. 思路:看起来就跟奇偶性有关 走两步就知道了 #include <iostream> ...

  8. WebForm 分页与组合查询

    1.封装实体类 2.写查询方法 //SubjectData类 public List<Subject> Select(string name) { List<Subject> ...

  9. java.lang.IllegalArgumentException: View not attached to window manager

    公司项目线上bug: java.lang.IllegalArgumentException: View not attached to window manager at android.view.W ...

  10. Mammoth官方文档翻译

    用于.NET的.docx转HTML的Mammoth Mammoth可用于将.docx文档(比如由Microsoft Word创建的)转换为HTML.Mammoth致力于通过文档中的语义信息生成简洁的H ...