IP层的目标地址从哪里来

看到有人有这样的疑问“...根据OSI七层模型的概念,网络层的IP报头中的数据实际上应该就是传输层TCP/UDP数据包。但对于TCP/UDP包来说,只有源/目的端口的信息,没有源/目的IP地址的信息的。那么网络层的IP报头中源/目的IP地址的信息中如何得来的呢? ...”

其实这里是混淆了几个基本概念,协议(protocol), 接口 interface(service, primitive). 咱们说TCP包,TCP包头等都是在两个机器之间的同一层怎么通信(约定,也即协议(protocol))的环境下说的,也即是在传输线路上数据的格式。而说一个机器上TCP要传给IP什么,则是IP层和上层之间的接口问题,或者说IP层给上层提供的服务(service)。这里TCP传给IP的,那就不是(不只是)标准上规定格式的那个TCP包。

 可以这么理解。IP层能干什么事呢?你给IP层 数据和目标地址,它会将数据往目标送。那么TCP想让IP层给它传数据,那么除了给IP一个TCP包之外,自然也要告诉它IP地址,至于这个IP地址怎么来,自然要从TCP上面的应用中来。


IP和上层的接口随实现可以有不同。但IP协议RFC791上面还是给出了一些说明:
×××××××××××××××××××××××××××××××××
For example, a TCP module would call on the internet module to take a
TCP segment (including the TCP header and user data) as the data
portion of an internet datagram. The TCP module would provide the
addresses and other parameters in the internet header to the internet
module as arguments of the call.
××××××××××××××××××××××××××××××××

SS7网络中的网络层MTP3跟上层的接口也类似的有目标地址(DPC)做为参数:

IP层的目标地址从哪里来_第1张图片

- 千里

你可能感兴趣的:(网络/通信/协议,tcp,primitive,service,网络,interface)