【问题标题】:Why tcp server can get client's ip?为什么tcp服务器可以获取客户端的ip?
【发布时间】:2021-11-05 22:25:22
【问题描述】:

ip 协议头中的ip 消息。当 tcp 协议接收到一个数据包时,它只有一个 tcp 头,没有 ip 地址。为什么我们可以从套接字中获取客户端的 IP 地址。

【问题讨论】:

  • 没有"tcp 协议接收数据包" 但是有操作系统的网络栈接收数据包。此数据包包含 TCP 有效负载、TCP 标头、IP 标头... - 即客户端源 IP 包含在数据包中。
  • IP头包含源IP地址,对TCP服务器可用。事实上,它可用于 TCP 层,无论他们在大学里教过你什么有关 OSI 的无关紧要的东西。
  • tcp 协议不接收数据包,它接收段
  • 一个 TCP 连接由源和目标网络层地址以及源和目标传输层地址标识。这在 RFC 793,传输控制协议中明确说明,这是 TCP 的定义。

标签: networking tcp ip


【解决方案1】:

TCP 基于 IP:它使用 IP 数据包在 Internet 上传输数据。更具体地说,整个 TCP 数据包在发送之前被装入 IP 数据包的主体中。

所以你不会在 TCP 数据包中找到 IP 地址,因为这些信息属于 IP 数据包。当客户端收到一个 TCP 段时,它会在一个包含 IP 地址的 IP 数据包中接收它。

【讨论】:

  • IP有包; UDP有数据报; TCP有段;为了更完整一点,以太网有帧。
  • @user207421 你确定吗? “互联网协议用于传输称为数据报的数据块” - 来源:datatracker.ietf.org/doc/html/rfc791#section-1.1
  • 非常好,但在常用的情况下,正如我所说的那样。
猜你喜欢
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 2010-11-29
相关资源
最近更新 更多