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. react路由初探(1)

    import React from 'react'; import logo from './logo.svg'; import './App.css'; class About extends Re ...

  2. 将一个数组转化为需要的格式,来自react官网的商品列表示例

    //原来的格式 const PRODUCTS = [ { category: 'Sporting Goods', price: '$49.99', stocked: true, name: 'Foot ...

  3. Social Infrastructure Information Systems Division, Hitachi Programming Contest 2020 D题题解

    将题意转换为一开始\(t = 0\),第\(i\)个操作是令\(t \leftarrow (a_i + 1) t + (a_i + b_i + 1)\).记\(A_i = a_i + 1, B_i = ...

  4. DVWA各等级XSS

    xss原理及基本介绍 XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器 ...

  5. 精尽Spring MVC源码分析 - 一个请求的旅行过程

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  6. SpringBoot整合Swagger2详细教程

    1. 简介   随着前后端分离开发模式越来越流行,编写接口文档变成了开发人员非常头疼的事.而Swagger是一个规范且完整的web框架,用于生成.描述.调用可视化的RESTful风格的在线接口文档,并 ...

  7. Jmeter之分布式执行测试 (2)

    一. 安装Java 1.1下载JDK 1) Windows安装jdk,下载完成后,双击安装 2) Linux解压:tar -zxvf jdk-8u74-linux-x64.gz 1.2 Java环境变 ...

  8. Linux查看、开启、关闭防火墙操作

    一.防火墙区别 CentOS6自带的防火墙是iptables,CentOS7自带的防火墙是firewall. iptables:用于过滤数据包,属于网络层防火墙. firewall:底层还是使用 ip ...

  9. Linux后台命令导入MySQL语句

    1.首先输入命令: mysql -u root -p 然后输入MySQL的密码会进入到MySQL的命令界面. 2.输入命令use+数据库名字: use databaseName 3.最后输入命令sou ...

  10. [日常摸鱼]poj2420 A Star not a Tree?

    题意:给定$n$个点,找一个点使得这个点到所有点的距离之和最小,求出这个最小距离 传说中的模拟退火- #include<cstdio> #include<ctime> #inc ...