TCPIP 3次握手

2024-02-03

为什么在 TCP 3 次握手的第 3 部分期间没有传输数据? 例如

(A 到 B)SYN

(B 到 A)ACK+SYN

(A 到 B) ACK...为什么数据不能与这个 ACK​​ 一起传输?


我一直认为这是为了将会话建立阶段与数据传输阶段分开,以便no传输真实数据,直到会话两端就序列号和会话选项达成一致,特别是因为到达的数据包可能来自完全不同的先前会话,而该会话恰好具有相同的端点。

However, on further investigation, I'm not entirely certain that transmitting data with the handshake packets is disallowed. The section on TCP connection establishment in my Internetworking with TCP/IP1 book contains the following snippet:

由于协议设计,可以在握手段中连同初始序列号一起发送数据。在这种情况下,TCP 软件必须保留数据,直到握手完成。一旦建立连接,TCP 软件就可以释放所保存的数据并将其快速传送给等待的应用程序。

因为肯定可以使用以下命令构造 TCP 数据包SYN (or ACK) and数据,这很可能是被允许的。我有never我在野外见过这种情况,但话又说回来,我也从未在野外见过毛耳矮狐猴,尽管我确信它们存在。

可能是套接字软件在会话完全建立之前阻止数据流出,但 TCP 似乎认为它有效。看来您可以使用发送数据SYN-ACK数据包(连接建立的第 2 阶段),因为您拥有另一端的序列号和选项。同样,使用阶段 3 发送数据ACK数据包似乎也是可能的。

TCP 软件保留数据直到握手完全完成的原因可能是由于上述原因 - 只有当两端都就序列号达成一致时,您才能确定数据不是来自先前的会话。


1 Internetworking with TCP/IP Volume 1 Principles, Protocols and Architecture, 3rd edition, Douglas E. Comer, ISBN 0-13-216987-8.

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

TCPIP 3次握手 的相关文章

  • 谁在 Mac OS X 上监听给定的 TCP 端口?

    在Linux上 我可以使用netstat pntl grep PORT or fuser n tcp PORT找出哪个进程 PID 正在侦听指定的 TCP 端口 如何在 Mac OS X 上获得相同的信息 在 macOS 上Big Sur然
  • 如何替换`qemu-system -redir`命令参数?

    我有一个使用以下选项启动 qemu 的脚本 qemu system x86 64 net nic model rtl8139 net user hostfwd tcp 5555 1522 net dump file tmp vm0 pcap
  • Java:无安全管理器:RMI 类加载器已禁用

    您好 我有 RMI 应用程序 现在我尝试从客户端调用服务器上的一些方法 我有以下代码 public static void main final String args try Setting the security manager Sy
  • 如何在亚马逊AWS上加载ena驱动程序?

    我正在尝试在 Ubuntu VM 上加载 ena 驱动程序 根据文档 我的虚拟机有vif低性能驱动程序 ubuntu ip 172 31 14 190 ethtool i eth0 driver vif version firmware v
  • ADB TCPIP 连接问题

    我有两台 Galaxy S3 其中一个已扎根 另一个则未扎根 因此 当我尝试通过本地网络连接它们时 计算机可以看到已root的计算机 但是正常的就卡在tcpip这一步了 所以 我写 adb tcpip 5555 It says restar
  • 更改 TFS 构建代理的身份

    我们有一个运行集成测试的 TFS 构建代理 其中一些测试会调用 Internet 上的 Web 服务 我们的网络使用代理与互联网通信 由于构建代理在网络服务上的身份下运行 并且网络服务的设置未配置为使用代理 因此测试失败 我该如何执行以下操
  • HttpRequest 和 XMLHttpRequest 之间的真正区别

    阅读前注意事项 这不是重复的xmlhttprequest 和 httprequest 之间的区别是什么 https stackoverflow com questions 8499062 what are differences betwe
  • 为什么 Kademlia 使用 UDP?

    为什么Kademlia 分布式哈希表 http en wikipedia org wiki Kademlia使用 UDP 作为其网络传输协议 即使它不可靠 主要原因是您快速查询了许多以前从未建立过联系并且可能在查找过程中永远不会再看到的节点
  • 将 CIDR 地址转换为子网掩码和网络地址

    给定一个 CIDR 地址 例如192 168 10 0 24 如何确定掩模长度 24 如何确定掩码地址 255 255 255 0 如何确定网络地址 192 168 10 0 它被 apache utils 覆盖 看这个网址 http co
  • 如何用 C 语言通过 HTTP 协议发送图像?

    我是一名正在做网络服务器练习的学生 我需要一些帮助 我的网络服务器在文本页面上运行良好 但是每当浏览器发送一个 GET img jpg HTTP 1 1请求 我不知道如何处理 我听说 HTTP 协议是基于文本的 那么如何在 HTTP 响应中
  • Java快速检查网络连接

    我的问题相当简单 如果网络连接丢失 我的程序需要立即通知 我正在使用 Java 5 所以我无法使用非常方便的功能网络接口 http download oracle com javase 6 docs api java net Network
  • C#:如何在 Socket.BeginReceive 回调之前终止套接字?

    我有一个接收来自客户端的连接请求的服务器 该服务器使用异步Socket BeginReceive and Socket EndReceive方法 该代码与找到的代码非常相似here http msdn microsoft com en us
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • 以编程方式启用 Internet 连接共享

    我可以手动执行此操作 方法是右键单击网络连接 打开 共享 选项卡 单击 允许其他网络用户通过此计算机的 Internet 连接进行连接 复选框 然后选择 家庭网络连接 在研究这个问题时 我发现了多组 COM 接口 1 Internet 连接
  • 从套接字读取 C HTTP

    我想知道如何判断是否已从套接字接收到所有数据 这是一个简单的网络代理 现在我正在处理请求部分 所以发送的内容应该以 r n r n 结尾 我不知道请求会持续多久 我在这里读过一些帖子 说我应该检查读取函数是否返回 0 但其他人说0只在客户端
  • 用于高效大规模图遍历的数据库

    我有一个大型二分有向图数据集 约 2000 万个元素 在当前的使用中 我运行的遍历算法每次运行约 500 000 个节点 这些算法有效 但历史上运行的是从文本文件加载到内存的数据 文本文件似乎是一个不好的方法 所以我将数据作为邻接列表传输到
  • Java Servlet 中限制 HTTP 请求

    在 java servlet 中 如何根据客户端的 IP 地址限制来自用户的 http 请求 我不想每秒处理来自特定源 IP 地址的超过 X 个请求 其中 X 是可配置的并且具有 0 1 中的实际值 10 范围 从 10 秒内 1 个请求到
  • 无法从亚马逊Windows实例的公共IP访问node.js服务器

    我正在 Windows 服务器的亚马逊微实例上运行 Node js 服务器 我无法使用亚马逊实例的公共IP访问node js服务器 我可以使用 localhost 12345 从实例访问 node js 服务器 但无法使用实例的公共 IP
  • 停止 TcpListener 的正确方法

    我目前正在使用 TcpListener 来处理传入连接 每个连接都有一个线程用于处理通信 然后关闭该单个连接 代码如下 TcpListener listener new TcpListener IPAddress Any Port Syst
  • NodeJS:TCP套接字服务器仅在第一次返回数据

    我正在尝试在 node js 中编写一个小型中继脚本 用于侦听本地套接字上传入的 TCP 连接 当它收到连接时 将流量转发给第三方 它还必须从该第三方获取任何返回的数据并将其发送回原始本地套接字 我试过类似的代码http delog wor

随机推荐

  • 编译时错误和无法访问的代码

    好的 考虑下面的代码 private const int THRESHHOLD 2 static void Main string args string hello if THRESHHOLD gt 1 return Console Wr
  • ggplot更改网格以适应每月数据

    我有一个为期 1 年的数据集 名为afs20 其结构如下 datum包含数据点的日期 maand包含数据点的月份 delta包含目标变量 o ggplot afs20 o geom point aes x datum y delta sta
  • 使用 XPath 获取具有默认命名空间(无命名空间前缀)的元素

    在这个 SOAP XML 文件中 我怎样才能获得7关于使用 XPath 查询
  • Mono 编译器 // 终端模拟器问题

    当我尝试编译 csharp 或 fsharp 文件时出现此错误 使用 gnome 终端或 jetbrain rider 时会发生这种情况 它在 tty 或 xterm 和 urxvt 等终端中运行良好 我还能够编译 c c 和 go 代码
  • 提取服务器证书

    我需要帮助获取适当的代码片段来获取服务器证书 有效和无效 由 CA 签名和自签名 任何链接和参考都将受到高度赞赏 我有一个 UNIX 命令 它可以提供我想要的结果 但我想要使用 Java 得到相同的输出 UNIX 中的命令是这样的 echo
  • ItemTemplate 和 ItemContainerStyle 不能一起使用吗?

    我正在尝试将 ItemTemplate 和 ItemContainerStyle 应用于 ItemsControl
  • 更改 UIActionSheet 中项目的文本颜色 - iOS 8

    我一直在使用以下代码来更改我添加的项目的文本颜色UIActionSheet void willPresentActionSheet UIActionSheet actionSheet for UIView subview in action
  • 如何可移植地扩展使用 mmap() 访问的文件

    我们正在尝试改变 SQLite 一个嵌入式数据库系统 使用 mmap 而不是通常的 read 和 write 调用来访问 磁盘上的数据库文件 对整个数据使用单个大映射 文件 假设文件足够小 我们没有问题 在虚拟内存中为此寻找空间 到目前为止
  • Keras - 从一个神经网络做出两个预测

    我正在尝试组合由同一网络产生的两个输出 该网络对 4 类任务和 10 类任务进行预测 然后我希望将这些输出组合起来 得到一个长度为 14 的数组 我将其用作最终目标 虽然这似乎很有效 但预测总是针对一个类别 因此它会产生一个概率分布 该概率
  • 如何使用 NSVisualEffectView 制作平滑、圆润、类似体积的 OS X 窗口?

    I m currently trying to make a window that looks like the Volume OS X window 为了做到这一点 我有自己的NSWindow 使用自定义子类 它是透明的 无标题栏 无阴
  • 插入到java.util.List中的任意位置

    根据文档 您可以将对象插入列表中的任何位置 该界面的用户可以精确控制每个元素在列表中的插入位置 来源 http download oracle com javase 6 docs api java util List html http d
  • 使用shared_ptr的派生类对象的向量

    我有这些课程 class Element class Button public Element class Label public Element class Input public Element 我希望能够创建一个void add
  • Chart.js:组合线形和条形数据

    我想创建一个图表Chart js http www chartjs org 包含两个不同的数据集 一个线数据集和一个条形数据集 您可以在这里查看我的完整代码 function initCombinedChart canvas each fu
  • ruby 访问静态变量

    class A ololo 1 end A ololo A new ololo NoMethodError undefined method ololo 好的 我需要一个 attr reader class B ololo 1 attr r
  • Tensorflow 安装和导入正确,但在尝试使用时抛出异常

    我在使用张量流时遇到问题 看来安装和导入正确 然而 当我调用它时 解释器会抛出一长串异常 其节略如下 我使用的是 OS X El Capitan v 10 11 6 Macbook Pro 15 英寸 2009 年中 2 8 GHz 英特尔
  • 将 Unix 移植到 Windows - pwd.h 的使用

    我正在尝试编译库尼汉 http sourceforge net projects libunihan 使用 MinGW 编写代码 但遇到了需要移植的功能 该函数的目的是获得规范的路径表示 它用pwd h 这是 POSIX 而 MinGW 不
  • 有没有办法让 Pandas ewm 在固定窗口上运行?

    我正在尝试使用熊猫 ewm 函数 https pandas pydata org pandas docs stable reference api pandas DataFrame ewm html计算指数加权移动平均线 然而我注意到信息似
  • 强制拆包的目的

    在 swift 文档中 您可以找到以下内容 if convertedNumber nil println convertedNumber has an integer value of convertedNumber prints conv
  • 如何从Web Worker调用共享Worker?

    是否可以从 Web Worker 调用 Shared Worker 你能给我举个例子吗 就我而言 我有一些网络工作者 我需要在他们之间共享一个单例服务 您可以使用类似于以下内容的技术https stackoverflow com a 307
  • TCPIP 3次握手

    为什么在 TCP 3 次握手的第 3 部分期间没有传输数据 例如 A 到 B SYN B 到 A ACK SYN A 到 B ACK 为什么数据不能与这个 ACK 一起传输 我一直认为这是为了将会话建立阶段与数据传输阶段分开 以便no传输真