为啥tcp服务器可以获取客户端的ip?
Posted
技术标签:
【中文标题】为啥tcp服务器可以获取客户端的ip?【英文标题】: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 的定义。 【参考方案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 非常好,但在常用的情况下,正如我所说的那样。以上是关于为啥tcp服务器可以获取客户端的ip?的主要内容,如果未能解决你的问题,请参考以下文章