为什么 TCP 连接的建立需要三次握手

时间:2021-08-23 12:22:12

TCP 的通讯双方需要发送 3 个包(即:三次握手)才能建立连接,本文将通过 3 副图来解释为什么需要 3 次握手才能建立连接。

TCP 连接的建立过程本质是通信双方确认自己和对方都具有通信能力的过程。TCP 通信双方都需要发送数据和接收数据,通信能力包括:客户端发送数据能力,客户端接收数据能力,服务端发送数据能力,服务端接收数据能力。完成了这些能力的确认,连接才算成功建立。

第一次握手,客户端发送 SYN 包给服务端之后。服务端收到了来自客户端的包,服务端可以确定:服务端具有接收能力,客户端具有发送能力。而客户端则什么也不能确定,不知道发送的包是否到达了服务端。

.st2 {fill:#000000;font-family:Times New Roman;font-size:9pt}
.st1 {fill:#191919;font-family:Times New Roman;font-size:12pt;font-weight:bold}
.st3 {fill:#191919;font-family:Times New Roman;font-size:12pt}
服务端客户端SYN客户端发送能力客户端接收能力服务端发送能力服务端接收能力客户端发送能力客户端接收能力服务端发送能力服务端接收能力客户端视角服务端视角

第二次握手,服务端发送 SYN/ACK 包给客户端之后。客户端知道了服务端成功接收了自己发送的 SYN 包,并且自己成功接收了来自服务端的 ACK/SYN 包,所以客户端可以确定:客户端具有发送能力,服务端具有接收能力,服务端具有发送能力,客户端具有接收能力,客户端完成了能力确认。而服务端并不知道更多的信息。

.st2 {fill:#000000;font-family:Times New Roman;font-size:9pt}
.st1 {fill:#191919;font-family:Times New Roman;font-size:12pt;font-weight:bold}
.st3 {fill:#191919;font-family:Times New Roman;font-size:12pt}
服务端客户端ACK/SYN客户端发送能力客户端接收能力服务端发送能力服务端接收能力客户端发送能力客户端接收能力服务端发送能力服务端接收能力客户端视角服务端视角

第三次握手,客户端发送 ACK 包给服务端。服务端知道了自己发送的 SYN/ACK 被客户端成功接收了,服务端可以知道更多信息:客户端具有接收能力,服务端具有发送能力。

.st2 {fill:#000000;font-family:Times New Roman;font-size:9pt}
.st1 {fill:#191919;font-family:Times New Roman;font-size:12pt;font-weight:bold}
.st3 {fill:#191919;font-family:Times New Roman;font-size:12pt}
服务端客户端ACK客户端发送能力客户端接收能力服务端发送能力服务端接收能力客户端发送能力客户端接收能力服务端发送能力服务端接收能力客户端视角服务端视角

基于 TCP 通信的双方进行握手连接的过程是从双方视角确认通信能力的过程。而通信能力的确立需要至少发送 3 个数据包,所以说 TCP 连接的建立需要三次握手。当然,在 SYN 包丢失的情况下重传机制会重新发送 SYN 包,连接过程中实际发送包的数量也有可能超过 3 个。

为什么 TCP 连接的建立需要三次握手的更多相关文章

  1. TCP连接的建立(三次握手和四次挥手)

    写到最后发现我描述的挺水的,这个老哥的用语比较专业一点https://blog.csdn.net/qq_38950316/article/details/81087809  (老哥这篇有些许错别字 大 ...

  2. tcp连接过程中的三次握手和四次挥手

    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手握手建立连接 @第一次握手: 建立连接是,客户端A发送SYN包到服务器B,并进入SYN_SEND状态,等待B确认. @第二次握手: 服务 ...

  3. [TCP/IP]TCP连接的建立和终止

    TCP 是支持全双工通信的传输层协议,为了开发出更好的网络通信应用,清楚了解其中的交互过程是非常必要的. 下面用比较直白的话来描述&理解一下这个过程: TCP 连接建立:三次握手 服务器依次调 ...

  4. 简述TCP连接的建立与释放(三次握手、四次挥手)

    在介绍TCP连接的建立与释放之前,先回顾一下相关知识. TCP是面向连接的运输层协议,它提供可靠交付的.全双工的.面向字节流的点对点服务.HTTP协议便是基于TCP协议实现的.(虽然作为应用层协议,H ...

  5. TCP连接的建立与释放(三次握手与四次挥手)

    TCP连接的建立与释放(三次握手与四次挥手) TCP是面向连接的运输层协议,它提供可靠交付的.全双工的.面向字节流的点对点服务.HTTP协议便是基于TCP协议实现的.(虽然作为应用层协议,HTTP协议 ...

  6. 第三次作业:使用Packet Tracer分析TCP连接的建立与释放过程

    0 个人信息 张樱姿 201821121038 计算1812 1 实验目的 使用路由器连接不同的网络 使用命令行操作路由器 通过抓取HTTP报文,分析TCP连接建立的过程 2 实验内容 使用Packe ...

  7. TCP连接的建立和终止

    TCP的简要要说明 标签(空格分隔): TCP 网络编程 Linux 面试 在此输入正文 一.TCP是什么 TCP全称传输控制协议(Transmission Control Protocol).TCP ...

  8. 计算机网络(11)-----TCP连接的建立和释放

    TCP连接的建立和释放 概述 TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程,运输连接有三个阶段:连接建立,数据传送和连接释放. TCP连接的建立 如图所示,假定A主机是客户端程序, ...

  9. TCP/IP详解学习笔记(13)-- TCP连接的建立与终止

    1.TCP连接的建立            设主机B运行一个服务器进程,它先发出一个被动打开命令,告诉它的TCP要准备接收客户进程的连续请求,然后服务进程就处于听的状态.不断检测是否有客户进程发起连续 ...

随机推荐

  1. 无法打开登录所请求的数据库 "xxx"登录失败用户 'NT AUTHORITY\NETWORK SERVICE'

    解决:添加用户,选择NT AUTHORITY\SYSTEM登录名,选择当前数据库的架构. 勾选架构 勾选成员身份.如果不勾选,也会报异常:拒绝了对对象 'FW_ORG' (数据库 'ZW_DWSJ', ...

  2. 自己画WinForm 皮肤包括默认控件

    好久没来博客园,今天捣鼓到现在就是为了把之前的皮肤控件完善好, 之前也看了很多技术文章,大多数都是自己重写系统控件实现换肤,几乎没有像东日的(IrisSkin)控件一样 添加一个组件 把系统的皮肤全换 ...

  3. css3属性flex弹性布局设置三列(四列)分布样式

    参考:阮一峰的网络日志 <!doctype html> <html lang="en"> <head> <meta charset=&qu ...

  4. VS问题汇总——竹子整理

    VS这个宇宙第一IDE有时候也会淘气一把,此贴记录下日后遇到的VS本身的问题 1.VS显示正忙!!!其他项目能打开,就这个不行,关闭vs进程重启vs还是无法解决. 这个问题从VS2010开始就遇到过, ...

  5. Java多个数字求和输出

    设计思想: 首先为了能够输入数字,先引入一个类import java.util.Scanner;因为是多个数字求和,所以为了方便声明一个数组double[] num;再声明一个变量int number ...

  6. UUID的具体用法

    String deleteUuid = UUID.randomUUID().toString(); java.util 类 UUID java.lang.Object java.util.UUID 所 ...

  7. ssh连接慢

    suse刚装完,开始用ssh的时候,总会遇到这样的问题:输入了用户名以后,等半天才出输入密码的框,很是急人.这是dns反查造成的.解决方法:编辑 /etc/ssh/sshd_conf , 将 #Use ...

  8. Displaying Alerts with UIAlertView

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"You've ...

  9. 2018&sol;03&sol;21 每日一个Linux命令 之 scp

    在平常的工作和学习中,难免要和远程服务器产生一些文件的交互. 当然也有 xftp 这种工具在,干的事情是一样的,不过今天还是介绍命令行下 scp 的用法,毕竟每天都在和命令行打交道. -- scp 命 ...

  10. spring---aop(1)---AOP概念

    写在前面 由于spring的事务系列,可以带出spring的aop.spring的事务只是spring的一个具体实现 名词解释 通知.增强处理(Advice) 就是你想要的功能,也就是上说的安全.事物 ...