【问题标题】:Where is the source and destination address fields in TCP header?TCP头中的源地址和目的地址字段在哪里?
【发布时间】:2014-08-20 05:49:55
【问题描述】:

据我所知,TCP 位于应用程序和 IP 之间的层,并处理设置数据包、检查错误、排序等,因此应用程序本身不必这样做。

但是,当我查看 TCP 标头时,我感到困惑。根据我的理解,一些数据从应用程序传递给 TCP,并被赋予一个目标地址来发送数据。 TCP 层将其打包,然后发送到 IP 层,IP 层又将其交给,一直到物理层。

但是看TCP header on Wikipedia,没有提到目标地址!只有一个目标端口号,我很确定它不是地址。

所以我的问题是,TCP 如何获取地址?和/或,如果 TCP 没有将地址传递给它,IP 如何获取地址?

【问题讨论】:

  • 地址在 IP 层处理。 TCP 将地址交给 IP,因此无需将它们包含在 TCP 标头中。
  • 根据 OSI 模型,您正在寻找错误的层。网络层负责客户端/服务器之间的信息传输——en.wikipedia.org/wiki/OSI_model
  • @MikeW "TCP 将地址交给 IP..." 这不是发生在 via 标头中吗??
  • 没有。 TCP 报头总是附有一个或多个 IP 数据包。您将目标地址传递给 create TCP packet,但 TCP header 不需要包含地址。

标签: tcp ip ip-address packet


【解决方案1】:

运行在传输层之上的应用程序选择一切。

如果应用程序的设计考虑到可靠性,它会选择面向连接的协议,如 TCP。

相同的应用程序告诉 TCP 源端口和目标端口应该是什么,仅 TCP 无法决定这一点。

示例:如果您正在访问一个网站,您的应用程序将是浏览器,因为访问网站通常是通过 HTTP/HTTPS 进行的,并且 HTTP/HTTPS 被设计为可靠,因此它选择 TCP。端口 80(HTTP) 或 443(HTTPS) 是用于访问网站的标准端口,因此在 Destination Port 字段中使用这两个端口中的任何一个,而 Source Port 可以是任何随机更大数字的端口。

此组合用于识别称为传输层 VC(虚拟电路)的东西。

说到 IP,同一个应用程序告诉目标 IP 地址是什么,而源 IP 是运行浏览器的机器。

网络层中的 IP 和传输层中的 TCP 不能选择任何东西,是应用程序告诉他们选择什么,考虑到他们是被选择的。

【讨论】:

    猜你喜欢
    • 2021-01-24
    • 2016-09-15
    • 2016-05-16
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    相关资源
    最近更新 更多