TCP为什么需要握手
一、TCP握手流程

二、为什么不是4次握手
TCP的每次请求都是成对的,原则上应该是四次
- 【Client to Server】第一次SYN,seq=x
- 【Server to Client】第二次ACK,seq=y,ack=x+1(没有携带数据的ACK不消耗序列号)
- 【Server to Client】第三次SYN,seq=y,
- 【Client to Server】第四次ACK,seq=x+1,ack=y+1.
可以看出第二次和第三次都是Server to Client,且他们之间没有任何事件发生,所以可以合并,不是四次的原因是2,3步骤合并,增加效率。
三、为什么需要握手(为什么需要三《”四“》次握手)
要回答为什么先看看什么是TCP链接。ref https://tools.ietf.org/html/rfc793
The reliability and flow control mechanisms described above requirez
that TCPs initialize and maintain certain status information for
each data stream. The combination of this information, including
sockets, sequence numbers, and window sizes, is called a connection.
Each connection is uniquely specified by a pair of sockets
identifying its two sides.
为了保证可靠性传输,TCP需要两边维护socket,序列号,和窗口大小(流量控制用),握手就是为了在数据开始传输前让客户端和服务器准确无误的交换上述信息。
需要握手的原因:
- 阻止已经失效的历史请求的初始化【谢希仁】
- 只有通过三次握手才能交换序列号
3.1 阻止已经失效的历史请求的初始化
ref:https://tools.ietf.org/html/rfc793
The principle reason for the three-way handshake is to
prevent old duplicate connection initiations from causing confusion.
假如只有两次握手

假如服务端在ack以后就建立了链接,当有延迟的数据在链接关闭后到达服务端,
- 服务端不知道这是旧链接,直接建立返回ack,且建立了链接。
- 因为上一次链接已经关闭,客户端不认识这个ack,直接丢弃。
这样会导致服务端资源被这种失效的链接给浪费。
3.2 只有通过三次握手才能交换序列号
序列号是可靠性传输的根本,通过序列号,接收方可以去重,可以保证TCP流按照顺序最终被接受。
初始序列号是随机生成的(为了安全),所以在链接建立之初需要双方通过SYN来告知对方自己的初始序列号。
同时每一个发出去的序列号,都需要一个接收方的ACK,来告诉发送方:我已经收到了--可靠性保证
所以两次握手不行:服务端的SYN,没有办法ACK。
由于第二次和第三次可以合并,所以最终把逻辑上的四次握手变成了三次。
TCP为什么需要握手的更多相关文章
- TCP三次握手/四次挥手详解
一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...
- wireshark抓包工具简介以及tcp三次握手的一些含义
wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了.为了安全考虑, ...
- TCP三次握手四次挥手
看到一篇总结很好的TCP三次握手,学习一下,原文链接. 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,S ...
- TCP ,UDP概念和TCP三次握手连接 的知识点总结
OSI 计算机网络7层模型 TCP/IP四层网络模型 传输层提供应用间的逻辑通信(端到端),网络层提供的是主机到主机的通信,传输层提供的是可靠服务. TCP 中常说的握手指的是:连接的定义和连接的建立 ...
- TCP三次握手和四次挥手状态变迁解析
TCP是TCP/IP的传输层控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 首先需要了解几个名词:tcp标志位,有6种分别为:SYN(synchronous建立联机) .ACK(ackn ...
- Wireshark基本介绍和学习TCP三次握手
wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
- iOS 开发:TCP三次握手连接
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握 ...
- 用tcpdump分析tcp三次握手,四次挥手
1.tcpdump 简介 tcpdump是一个对网络上的数据包进行截获的包分析工具,一般linux系统以命令的形式使用 2.tcp三次握手 建立一个tcp连接会发生下面三个过程: 1.服务器必须准备好 ...
- TCP三次握手,数据传输,四次挥手
TCP包结构 一个TCP包结构如下: 一个TCP包主要由TCP包头和数据部分组成,包头固定部分为20字节,选项和数据部分根据实际情况设置为4N(N可以为0)字节. 1.16bit源端口和目的端口号,它 ...
随机推荐
- Fortify Audit Workbench 笔记 Privacy Violation: Heap Inspection 隐私泄露(堆检查)
Privacy Violation: Heap Inspection 隐私泄露(堆检查) Abstract 将敏感数据存储在 String 对象中使系统无法从内存中可靠地清除数据. Explanati ...
- Python pass语句
Python pass语句:空语句,主要用于保持程序结构的完整性 或者 函数想要添加某种功能,但是还没有想好具体应该怎么写. 在 for 循环中使用 pass: lst = [7,8,9,4] for ...
- PHP date_timezone_get() 函数
------------恢复内容开始------------ 实例 返回给定 DateTime 对象的时区: <?php$date=date_create(null,timezone_open( ...
- 7.9 NOI模拟赛 A.图 构造 dfs树 二分图
啥都想不出来的我是不是废了/dk 这道题考的主要是构造 而我想的主要是乱搞. 一个很假很假的做法:直接暴力4种颜色染色 我也不知道对不对.. 不过成功的话一定是对的. 然后考虑奇环的问题 一个很假很假 ...
- 区块链钱包开发 - USDT - 三、实战(nodejs版本)
一.安装钱包 请参考另一篇随笔: 入口 二.获取测试usdt(TestOmni)步骤: 1.导入地址到钱包,往该地址充值测试比特币, 2.然后往 moneyqMan7uh8FqdCA2BV5yZ8qV ...
- Jmeter(二十) - 从入门到精通 - JMeter监听器 -下篇(详解教程)
1.简介 监听器用来监听及显示JMeter取样器测试结果,能够以树.表及图形形式显示测试结果,也可以以文件方式保存测试结果,JMeter测试结果文件格式多样,比如XML格式.CSV格式.默认情况下,测 ...
- 薪资高,福利好,会Python的人就是这么豪横!
很多人可能会有这样的疑问,数据分析Excel挺强大的,会Excel就行,为什么还要去学python? 是的,Excel和python对于数据分析而言,这两者都只是不同的工具而已. 很多人学习pytho ...
- Ternary weight networks
Introduction 这两天看了一下这篇文章,我就这里分享一下,不过我还是只记录一下跟别人blog上没有,或者自己的想法(ps: 因为有时候翻blog时候发现每篇都一样还是挺烦的= =) .为了不 ...
- CSS网页排版
自印刷出版物诞生以来,排版就一直是平面设计的基础. 同样,排版在网页设计中也扮演着重要角色. 1.CSS的基本排版技术 1.1 文本颜色 对应网页而言,文本颜色也许是最基本的样式之一. 默认情况下,浏 ...
- PyCharm 2020.1专业版安装教程及破解方法
一.安装第一步下载 版本一定得是:2020.1 其他版本下载地址:https://www.jetbrains.com/pycharm/download/other.html 安装不多说了: 二.破解 ...