TCP:为什么是三次握手

2023-11-12

定义

HTTP是基于传输层的TCP协议,而TCP是一个端到端的面向连接的协议。所谓的端到端可以理解为进程到进程之间的通信。所以HTTP在开始传输之前,首先需要建立TCP连接,而TCP连接的过程需要所谓的“三次握手”。
在TCP三次握手之后,建立了TCP连接,此时HTTP就可以进行传输了。一个重要的概念是面向连接,既HTTP在传输完成之间并不断开TCP连接。在HTTP1.1中(通过Connection头设置)这是默认行为。
TCP 建立连接需要三次握手,断开连接时需要四次挥手。

如图:
这里写图片描述

一、为什么是三次握手而非两次?

三次握手改成仅需要两次握手,死锁是可能发生。
考虑计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。这样就形成了死锁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP:为什么是三次握手 的相关文章

  • Python套接字模块:Recv()数据响应被切断

    解释 我目前正在尝试使用 python 脚本控制智能电源板 为了实现这一点 我使用了带有套接字模块的 TCP 连接 大约 75 的情况下 我会得到我正在寻找的响应 数据 并且一切都运行良好 然而 大约 25 的情况下 响应会以完全相同的长度
  • 两个http请求可以合并在一起吗?如果可以的话,nodeJS服务器如何处理呢?

    昨天我做了一些关于 NodeJS 的演讲 有人问我以下问题 我们知道nodeJS是一个单线程服务器 多个请求是 到达服务器并将所有请求推送到事件循环 如果什么 两个请求同时到达服务器 服务器将如何处理 处理这种情况 我猜到了一个想法并回复如
  • 如何在Linux中打开端口[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我已经安装了 Web 应用程序 该应用程序在 RHEL centOS 上的端口 8080 上运行 我只能通过命令行访问该机器 我尝试从我的
  • 自动打开命名管道和 tcp\ip

    我正在安装一个需要修改 SQL Server 的新产品 具体来说 启用 tcp ip 并打开命名管道 我知道如何手动完成 我想要的是一种通过 SQL 或 C 代码为新客户自动化执行此操作的方法 我希望有任何关于正确方向的建议 您可以使用 C
  • 无法分配请求的地址 - 可能的原因?

    我有一个由主服务器和分布式从服务器组成的程序 从属服务器向服务器发送状态更新 如果服务器在固定时间内没有收到特定从属服务器的消息 则会将该从属服务器标记为关闭 这种情况一直在发生 通过检查日志 我发现从站只能向服务器发送一个状态更新 然后永
  • 如果其中一台机器死机,TCP 连接如何终止?

    如果两个主机 A 和 B 之间建立了 TCP 连接 假设主机 A 已向主机 B 发送了 5 个八位字节 然后主机 B 崩溃了 由于未知原因 主机 A 将等待确认 但如果没有收到确认 将重新发送八位字节并减小发送者窗口大小 这将重复几次 直到
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • 建立 TCP 连接边界的正确方法

    我的问题是关于如何正确处理使用 tcp 连接接收的数据 事实上 通过建立 tcp 连接 创建了一个流 假设我想发送一条有开头和结尾的消息 由于数据在流中流动而没有指定任何边界 我如何识别消息的开始和结束 我想在消息的开头和结尾处放置一些特殊
  • 将 C++ TCP/IP 应用程序从 IPv4 转换为 IPv6。难的?值得这么麻烦吗?

    多年来 我使用 WinSock 为 Windows 开发了少量 C 服务器 客户端应用程序 路由器 Web 邮件 FTP 服务器等 等等 我开始越来越多地考虑创建这些应用程序的 IPv6 版本 当然 同时也保留原始的 IPv4 版本 问题
  • 通过 TCP/.NET SSLStream 发送文件很慢/无法正常工作

    我正在编写一个与 SSL 配合使用的服务器 客户端应用程序 通过SSLStream 它必须做很多事情 不仅仅是文件接收 发送 目前 它的工作原理是 只有一个连接 我总是使用从客户端 服务器发送数据SSLStream WriteLine 并使
  • 套接字编程-listen() 和accept() 有什么区别?

    我一直在读本教程 http www cs rpi edu moorthy Courses os98 Pgms socket html了解套接字编程 看来listen and accept 系统调用都做同样的事情 即阻塞并等待客户端连接到使用
  • 网络服务发现不是发现服务类型

    我想通过 Android 设备在本地网络中找到服务器 我可以通过使用找到它NSDManager具有服务器服务类型的服务 例如 workstation tcp是服务类型 在我的本地网络中我有一个 无线路由器和无线中继器 两者都有不同的SSID
  • 立即检测客户端与服务器套接字的断开连接

    如何检测客户端已与服务器断开连接 我的代码中有以下代码AcceptCallBack method static Socket handler null public static void AcceptCallback IAsyncResu
  • TCL类C10K事件服务器开发进展如何?

    TCL 是一种很好的简单编程语言 但似乎没有得到认可和 或尊重它deserves http antirez com articoli tclmisunderstood html 我 1995 年在大学时就学过它 但很快就忘记了 直到最近才再
  • python 中的原始套接字和 sendto

    我正在努力将 scapy 与twisted 集成 但我在 OSX 上遇到了这个非常奇怪的错误 我似乎无法弄清楚 基本上我无法通过原始套接字发送有效的 TCP 数据包 包括 IP 标头 这就是我正在做的 import socket from
  • 我首次设置 AWS EB 时创建的默认安全组是什么?

    我对几个组所扮演的角色感到困惑 这些组似乎已自动添加到我的 AWS 安全组列表中 并以我收集的默认配置进行连接 并且想知道它们是如何工作的 以及它们的安全性如何 改变 具体来说 有三个神秘之处 launch wizard 1其中有一条入站规
  • C# P2P聊天应用程序设计

    我想创建一个不使用显式服务器的简单聊天应用程序 主要要求是用户可以同时与许多朋友聊天 就像在 Skype 等上一样 我在这里指的不是会议聊天 而是多个单独的聊天窗口 目前 我只想要一个 LAN 消息应用程序 但如果设计能够轻松扩展到 Int
  • Java 客户端到服务器未知来源

    我有一个简单的乒乓球游戏 需要通过网络工作 服务器将创建一个带有球和 2 个球棒位置的游戏 当客户端连接到服务器时 服务器将创建一个名为 PongPlayerThread 的新类 它将处理客户端到服务器的输入和输出流 我的服务器工作100
  • 多个客户端如何同时连接到服务器上的一个端口(例如 80)? [复制]

    这个问题在这里已经有答案了 我了解端口工作原理的基础知识 但是 我不明白的是多个客户端如何同时连接到端口 80 我知道每个客户端都有一个唯一的 对于他们的机器 端口 服务器是否从可用端口回复客户端 并简单地声明回复来自 80 这是如何运作的

随机推荐

  • 网络***实用战术手册(UNIX)

    摘要 一个系统有很多步骤 阶段性很强的 工作 其最终的目标是获得超级用户权限 对目标系统的绝对控制 从对该系统一无所知开始 我们利用其提供的各种网络服务收集关于它的信息 这些信息暴露出系统的安全脆弱性或潜在入口 然后我们利用这些网络服务固有
  • 基于正点原子STM32F103ZET6工程文件修改成C8T6工程文件

    1 打开一个正点原子的工程 点击魔术棒 2 修改芯片型号为STM32F103C8 3 修改宏定义ZET6是大容量产品用的是STM32F10X HD C8T6是中容量产品 用的是STM32F10X MD 3 更换启动文件将startup st
  • [Vue3+Element-Plus]点击列表中的图片预览时,图片被表格覆盖问题

    问题复现 源代码段
  • matlab simulink 模糊PID控制空调系统温度

    1 内容简介 略 630 可以交流 咨询 答疑 2 内容说明 随着社会不断的发展 能源问题表现的日益突出 因此 节能变得尤其重要 而现 在随着人们物质水平的提高 对中央空调系统的要求也随之提高 希望在耗能最低的情 况下 保持室内合适的温度和
  • 3-Spring笔记

    Spring容器介绍 简介 Spring是一个开源免费的框架 容器 Spring是一个针对bean的生命周期进行管理的轻量级的框架 非侵入式的 控制反转 IoC 面向切面 Aop 对事物的支持 对框架的支持 解决企业应用开发的复杂性 Spr
  • C语言实现离散傅里叶变换DFT

    离散傅里叶变换DFT的计算公式如下 关于对DFT的详细讨论 请阅读前一篇博客基于matlab的FFT分析 include
  • 蓝桥杯C/C++省赛:排它平方数

    目录 题目描述 思路分析 AC代码 题目描述 小明正看着 203879 这个数字发呆 原来 203879 203879 41566646641 这有什么神奇呢 仔细观察 203879 是个6位数 并且它的每个数上的数字都是不同的 并且它平方
  • 常见文件预览实现

    一 word文档预览 1 使用文档预览服务预览 使用微软链接 https view officeapps live com op view aspx src 文档http地址 使用XDOC链接 http view xdocin com xd
  • python/pytorch/pip安装包手动下载的网站

    https www lfd uci edu gohlke pythonlibs python安装pytorch等因为太大总是下载中断 自己手动单个下载的神器网站 conda install use local pytorch 1 3 0 p
  • 如何自己开发漏洞扫描工具

    漏洞扫描工具 核心就是扫描器 而扫描器的设计思想是 灵活 易扩展 易修改 灵活的意思就是可单独执行专项漏洞的扫描 也可以批量执行集成的所有漏洞探测模块 易扩展的意思就是 新的漏洞检测模块可清晰简单的集成进扫描器 易修改 对各个漏洞扫描模块可
  • ssh免密登录配置

    本次测试需要服务器己安装好 ssh keygen和ssh copy id 安装方式如下 安装ssh keygen root localhost yum install y ssh keygen 安装ssh copy id root loca
  • 线性代数知识点整理

    目录 前言 一 行列式 1 行列式求值 2 七大性质 3 特殊行列式的值 二 矩阵及其运算 1 行列向量 2 可逆矩阵 3 常用性质 4 伴随矩阵 三 矩阵的初等变换和线性方程组 1 初等变换 2 矩阵的秩 定义 特性 求秩 3 齐次与非齐
  • Java Swing-JScrollPane,JTable

    同事要一个和Access功能类似的软件 但是要满足她提出的各种要求 她知道我是做软件的 所以让我给写一个 想想她的提的需求很容易实现 所以就答应了 因为Access的功能她就用来管理表格 日常的很多表格很多 都需要进行电子档的登记 此软件肯
  • 【倒计时2天】CCIG文档图像智能分析与处理论坛开启直播预约,共探智能文档处理前沿技术

    文档是人们在日常生活 工作中产生的信息的重要载体 各领域从业者几乎每天都要与金融票据 商业规划 财务报表 会议记录 合同 简历 采购订单等文档 打交道 让计算机具备阅读 理解和解释这些文档图像的能力 在智能金融 智能办公 电子商务等许多领域
  • [深入研究4G/5G/6G专题-59]: 以太网交换平台软件如何升级成基站平台软件

    前言 本文从全局的视角阐述把一个通用的Linux平台软件升级成基站平台软件 一 基站的硬件 1 1 设备硬件 1 2 SOC芯片
  • 不用看网课就能学到python的文章(第三天)

    紧接着上一篇不用看网课就能学到python的文章 第二天 Why does it work的博客 CSDN博客 如果说到语句 那我们应该了解一些一些python python最具特色的就是使用缩进来表示代码块 不需要使用大括号 行与缩进 i
  • spring mvc中log4j的配置与使用

    原文地址 http rockelixir iteye com blog 1902352 如果使用spring插件创建一个spring template project 它会默认带log4j 只要改下log4j的配置就可以使用了 如果自己创建
  • ppt地图分布图一块一块的怎么做_没想到地图还能这么用,简直是PPT图表神器!...

    本期导读 如何让你的PPT看起来高大上 本文教你一个鲜为人知的视觉化技巧 利用电子地图 制作PPT图表 即便你不懂PS 不懂设计 也能轻松上手 PPT地图图表的妙用 三种PPT地图的创建方法 本文是2019年3月推送的第20篇干货 计159
  • 全国电赛K题江苏省二等奖----王澳刚

    2017年TI杯江苏省大学生电子设计大赛 题目 单相用电器分析监测装置 题目编号 K题 参赛队编号 ZJ022 参赛队学校 江苏科技大学 参赛队学生 王澳刚 雷松泽 匡正 指导老师 王宝忠 李垣江 二0一七年八月 摘 要 本系统以STM32
  • TCP:为什么是三次握手

    定义 HTTP是基于传输层的TCP协议 而TCP是一个端到端的面向连接的协议 所谓的端到端可以理解为进程到进程之间的通信 所以HTTP在开始传输之前 首先需要建立TCP连接 而TCP连接的过程需要所谓的 三次握手 在TCP三次握手之后 建立