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. Tomcat启动报错org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file

    错误: 今天SVN导入新项目后启动项目时控制台报错,之后在网上搜了很多方法.下面列了一些大佬的解决方案: 1. 检查日志配置文件-logging.properties:https://www.cnbl ...

  2. nodjs html 转 pdf

    var fs = require('fs');var pdf = require('html-pdf');//模块//读取html 文件 var html = fs.readFileSync('./s ...

  3. 深入理解.NET/WPF内存泄漏

    众所周知,内存管理和如何避免内存泄漏(memory leak)一直是软件开发的难题.不要说C.C++等非托管(unmanaged)语言,即使是Java..NET等托管(managed)语言,尽管有着完 ...

  4. oracle 时间段查询

    <select id="selectByRzrq" resultMap="BaseResultMap" parameterType="java. ...

  5. ORACLE 10g、11g批量刷新用户密码

    一.ORACLE 10g批量刷新用户密码 select 'alter user ' || username ||' identified by values '''||password ||''';' ...

  6. 目前市面上比较流行的devops运维平台汇总

    1,spug 1,Spug简介 Spug是面向中小型企业设计的无 Agent的自动化运维平台,整合了主机管理.主机批量执行.主机在线终端.应用发布.任务计划.配置中心.监控.报警等一系列功能.演示地址 ...

  7. JAVA中创建线程池的五种方法及比较

    之前写过JAVA中创建线程的三种方法及比较.这次来说说线程池. JAVA中创建线程池主要有两类方法,一类是通过Executors工厂类提供的方法,该类提供了4种不同的线程池可供使用.另一类是通过Thr ...

  8. Ubuntu16.04网卡配置

    新安装的Ubuntu16.04系统容易出现无法连接有线网络的问题,主要是因为网卡配置不完善,下面通过实操讲解如何解决该问题. 1. 查看网络设备 ifconfig 发现只有enp2s0和lo,没有et ...

  9. 4. 上新了Spring,全新一代类型转换机制

    目录 ✍前言 版本约定 ✍正文 PropertyEditor设计缺陷 新一代类型转换 Converter 代码示例 不足 ConverterFactory 代码示例 不足 GenericConvert ...

  10. 图解HTTP权威指南 | HTTP报文

                                                                                    一.问题 1.报文流是如何流动的 2.H ...