一个3200位长的TCP报文传到IP层,加上160位的首部后成为数据报。下面的互联网由两个局域网通过路由器连接起来。但第二个局域网所能传送的最长数据帧中的数据

tempnonody 2011-12-09 09:54:17
一个3200位长的TCP报文传到IP层,加上160位的首部后成为数据报。下面的互联网由两个局域网通过路由器连接起来。但第二个局域网所能传送的最长数据帧中的数据部分只有1200位。因此数据报在路由器必须进行分片。试问第二个局域网向其上层要传送多少比特的数据(这里的“数据”当然指的是局域网看见的数据)?
答:第二个局域网所能传送的最长数据帧中的数据部分只有1200bit,即每个IP数据片的数据部分<1200-160(bit),由于片偏移是以8字节即64bit为单位的,所以IP数据片的数据部分最大不超过1024bit,这样3200bit的报文要分4个数据片,所以第二个局域网向上传送的比特数等于(3200+4×160),共3840bit。



即每个IP数据片的数据部分<1200-160(bit), 这里我觉得应该是<= <1200-160(bit) 啊。到底用不用加等于?

由于片偏移是以8字节即64bit为单位的,所以IP数据片的数据部分最大不超过1024bit 这里的1024又是怎么得来的?
...全文
28099 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
severinnanaz 2021-07-07
  • 打赏
  • 举报
回复 4

1024是因为他要取64bit的倍数,1200-60=1040 距离1040最小的64倍数就是1024

cash1943 2012-05-14
  • 打赏
  • 举报
回复 27
传输层用户数据位是3200bit,向下传到网络层的时候要添加160bit的首部,因网络层的首部含有IP地址等路由信息,所以每个数据帧中的肯定都要有网络层的首部。在网络层就要考虑分片,因数据链路层数据帧中的数据位最长1200bit即是网络层数据包的长度,减去网络层首部1200-160=1040bit,所以一个数据包能承载的用户数据是1040bit,那么需要分成3200/1040=3.08个,即需要分成四个数据包,前三个数据包大小都是最大值1200bit,第四个数据包大小3200-1040×3+160=240bit,所以4个数据包总大小是1200×3+240=3840bit=3200+160×4。这是网络层数据包,传到数据链路层,仍然要添加链路层首部,然后才转化为2进制进入物理层传输,到对端物理层向数据链路层呈送数据,数据链路层去掉首部之后把3840bit呈送到网络层,网络层向传输层呈送3200bit,再往上就不清楚了。

70,036

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧