我一直在研究软件定义网络,我有这个问题:假设我们有 2 个主机和 2 个路由器的拓扑:
[H1]---->(R1)----->(R2)----->[H2]
一个消息M从H1已经准备好用于所有传输至H2这样它被分成P数据包,使得每个p_i = M/P。当第一个数据包到达第一个路由器时R1,有没有办法确定H1仅给定第一个数据包的应用程序生成的剩余数据包总数p1。
我一直在研究软件定义网络,我有这个问题:假设我们有 2 个主机和 2 个路由器的拓扑:
[H1]---->(R1)----->(R2)----->[H2]
一个消息M从H1已经准备好用于所有传输至H2这样它被分成P数据包,使得每个p_i = M/P。当第一个数据包到达第一个路由器时R1,有没有办法确定H1仅给定第一个数据包的应用程序生成的剩余数据包总数p1。
确定预期还有多少数据包的能力由传输层协议或应用层协议(题外话)决定。例如,UDP 是一种尽力而为、即发即忘的传输层协议,它没有这种能力,因为接收 UDP 甚至并不真正期望接收更多数据包;这取决于应用层协议(题外话)。
来自应用程序的消息将被传输层协议分成段。包括传输层报头在内的段必须适合 MTU 大小的数据包的有效载荷,然后必须适合链路帧的有效载荷。
您需要知道传输层协议的标头大小以及该链接类型的网络协议的有效负载大小,以便确定消息需要多少数据包。
如果路径中的一个链接的 MTU 大小小于原始链接的大小,它会变得更加混乱。这可能会导致分段,其中较大的数据包需要分段以遍历链路。接收主机将需要重新组装构成原始数据包片段的数据包。每个片段都是一个数据包,所以你把它们算作数据包吗?