传输层如何从数据报包中检索源IP地址? 从我所了解的IP地址是在网络层头和传输层头只包含源端口和目标端口。请让我知道如果我缺少的东西传输层如何从数据报包中检索源IP地址?
回答
简单的答案是传输层不检索来自数据报包的IP地址。
当数据报被从源发送到目的地,下面是IP是如何工作的,当数据报行进用简单的步骤:
- 上层应用发送一个数据包到网络层。
- 数据计算与校验和一起。
- 构造IP头和数据报。
- 通过网关路由。
- 每个网关的IP层执行校验和。如果校验和不匹配, 的数据报将被丢弃,并且会出现错误信息发送回 发送机。一路上,如果TTL递减到0,将会发生相同的 结果。并且,当数据报沿着网络传递时,目的地址路由路径将在每个站点确定为 。
- 数据报到达目的网络层。
- 执行校验和计算。
- 取出IP标头。
- 消息传递给上层应用程序。
EDIT
的应用将套接字绑定到其数据传输的端点,该端点是IP地址和服务端口的组合。然后使用此绑定来确定应用程序层上的哪个应用程序需要进行此操作。
例如应用程序A所提供的有关某个端口X的UDP服务应用。然后A开始时,它会尝试绑定到端口X.如果无法绑定到它,因为端口正在使用,操作系统会引发应用程序必须处理的错误。同样在OSI体系结构中,每层都依赖于其下面的层来实际传输数据,为其自己的预期目的添加或提供特定的功能。
按照RFC
的伪报头概念性前缀到UDP报头包含 源地址,目的地址,协议,以及UDP 长度。这些信息可以防止错误的数据报。 该校验和过程与TCP中使用的相同。
有关细节请查看RFC User Datagram Protocol
这没有回答这个问题。他问的是传输层(甚至应用层)等高层如何确定IP地址,因为他们显然无法访问IP标头。 –
他的问题是,由于上层显然知道IP地址,所以很明显他们从某处获得IP地址。他们怎么得到它? –
@JonathanM我添加了一些更多的澄清和链接到RFC。 –
- 1. 从DAO层检索IP地址
- 2. 从数据包中检索远程IP地址的准确性
- 3. 应用层如何将IP地址传输到网络层?
- 4. 如何使用Winsock从数据报的IP头获取源IP地址?
- 5. ip地址检索
- 6. 如何从Grails中的IP地址检索地理位置?
- 7. 如何检索远程IP地址?
- 8. 如何检索Meteorjs上的IP地址?
- 9. 如何从python数据包中获取IP地址?
- 10. 将IP数据包从一个IP地址转发到另一个IP地址
- 11. 如何将数据流式传输到IP地址?
- 12. 在Go中,如何从开放的TCPConn *中检索IP地址?
- 13. 如何确认数据报包的源地址?
- 14. 从Tomcat会话ID检索IP地址?
- 15. 检索的IP地址与RKA IP地址的中间件
- 16. 检索从pymongo MongoDB的IP地址数据
- 17. 传输源地址为0.0.0.0的UDP包
- 18. 如何从Java的HTTP标头中检索IP地址
- 19. 如何从特定的IP地址读取数据包?
- 20. 从R中检索自己的IP地址的函数?
- 21. 如何使用从源地址到目标主机的IP地址发送udp数据包?
- 22. 传输层(TCP和UDP)读取/检查IP头(源IP,目标IP等)?
- 23. 如何从IP地址检索网站列表?
- 24. 获取UDP数据包的IP地址
- 25. IP数据包和MAC目标地址
- 26. 如何从IP地址列表中查找IP地址范围
- 27. 使用Scapy获取数据包的源IP地址
- 28. 检查IP地址并下载数据
- 29. 如何从IP地址
- 30. 如何从IP地址192.168.1.98,193,148
我猜更多的细节,你不知道如何调用像'recvfrom'源地址填写?我建议阅读Linux,BSD或任何其他具有开放网络堆栈的操作系统的源代码,因为这取决于操作系统。 –