【问题标题】:About HTTP 1.1 persistent connection and TCP关于 HTTP 1.1 持久连接和 TCP
【发布时间】:2016-03-22 22:10:07
【问题描述】:

当我被介绍给 HTTP 1.0 和 1.1 时,有人强调主要区别在于 1.1 允许所有对象使用单个 TCP 连接,而 1.0 则为每个对象下载建立一个新连接。

我的问题是,由于连接不是真正连续的而是离散的(即在数据包中),那么每个正在下载的对象的每个不同数据包为什么不需要通过 ACK、SYN TCP 协议?

他们是怎么知道第一个 ACK​​、SYN 的? (甚至可能制作到与对象不同的服务器?)

【问题讨论】:

  • 听起来你只是不明白什么是持久连接,应该只是阅读 HTTP 1.1 规范或阅读解释它们的好页面。
  • 那么阅读 HTTP 1.1 规范中的持久连接就足够了?还有其他建议吗? @大卫施瓦茨
  • 您确实需要了解诸如 OSI 模型以及网络是如何分层的。 This PDF 将引导您浏览各个层并提供 Web 请求示例。

标签: http networking tcp connection


【解决方案1】:

你的问题没有多大意义。 HTTP keepalive 仅对到同一目标的连接进行操作,而不是“针对所有对象”。关于数据包的部分与 HTTP 没有任何关系:您实际上是在问 TCP 是如何工作的;答案是每个 TCP 段都包含源和目标 IP 地址和端口,它们对于连接是唯一的,以及用于数据排序目的的序列号。

【讨论】:

  • 也许一个例子会让我的问题更清楚,比如我们想从一个网页下载两张图片(我们称之为 X),这些图片托管在两个不同的主机和地址上,所以我们制作ACK,SYN加X,然后我们要下载这两张图片,为什么那些图片不需要另外ACK,SYN就可以直接下载了?
  • 他们不能。这个建议没有意义。您需要与每个目标建立单独的连接。 HTTP keepalive 将多个连接保存到到同一主机。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 2021-12-12
相关资源
最近更新 更多