protocols - 传输层如何从数据报包中检索源 IP 地址?

标签 protocols

传输层如何从数据报包中检索源 IP 地址?
据我了解,IP地址在网络层 header 中,而传输层 header 仅包含源端口和目标端口。如果我遗漏了什么,请告诉我

最佳答案

简单的答案是传输层不会从数据报包中检索 IP 地址。
当数据报从源发送到目的地时,以下是数据报传输时 IP 如何使用的简单步骤:

  • 上层应用程序向网络层发送一个数据包。
  • 数据计算以及校验和。
  • 构造 IP 头和数据报。
  • 通过网关路由。
  • 每个网关的 IP 层执行校验和。如果校验和不匹配,
    数据报将被丢弃,错误消息将发送回
    发送机。一路上,如果 TTL 递减到 0,同样
    结果会发生。并且,目标地址路由路径将是
    在数据报通过时在每一站确定
    网络。
  • 数据报到达目的地的网络层。
  • 执行校验和计算。
  • IP header 已取出。
  • 消息传递给上层应用程序。

  • 编辑
    应用程序将套接字绑定(bind)到其数据传输的端点,该端点是 IP 地址和服务端口的组合。然后使用此绑定(bind)来确定需要转到应用程序层的哪个应用程序。
    例如,应用程序 A 在某个端口 X 上提供 UDP 服务。然后当应用程序 A 启动时,它将尝试绑定(bind)到端口 X。如果由于端口正在使用而无法绑定(bind)到它,操作系统将引发然后应用程序必须处理的错误。同样在 OSI 体系结构中,每一层都依赖于它下面的层来进行数据的实际传输,为自己的预期目的添加或提供特定的功能。
    根据 RFC

    The pseudo header conceptually prefixed to the UDP header contains the source address, the destination address, the protocol, and the UDP length. This information gives protection against misrouted datagrams. This checksum procedure is the same as is used in TCP.


    有关细节的更多详细信息,请查看 RFC User Datagram Protocol

    关于protocols - 传输层如何从数据报包中检索源 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8395166/

    相关文章:

    swift - 使简单元组符合 Hashable,因此可以是 Dictionary Key

    swift - 协议(protocol)扩展和子类化问题

    swift - 为什么我不能将 Protocol.Type 传递给通用 T.Type 参数?

    objective-c - Swift Does not conform to protocol 报错采用Objective C Protocol

    java - 在 Java 应用程序中监听自定义协议(protocol)

    ios - 如何将类型删除与使用关联类型的协议(protocol)一起使用

    iphone - 正确实现委托(delegate)和协议(protocol)

    c - 协议(protocol)-c : Nested structure with optional string throws seg fault

    swift - 使用观察者模式设置委托(delegate)时遇到问题

    c++ - 为什么我的服务器总是响应 "No certificates"?