[ZLG-ARM] 关于ZLG/IP每帧1460字节的疑问???

[复制链接]
4692|4
 楼主| hedynasty 发表于 2008-12-22 09:49 | 显示全部楼层 |阅读模式
版主及各位熟悉ZLG/IP的朋友:<br />请问大家知道为什么ZLG/IP每一帧传输的数据量只能是1460字节?为什么其他的例如LINUX下的TCP/IP通信就不会有这样的每帧字节数限制?麻烦帮忙解答一下,多谢!!!
 楼主| hedynasty 发表于 2008-12-22 13:30 | 显示全部楼层

谢了,

怪不得,哎,不是研究它,我现在用它,高手推荐个别的吧,ucos下的简单点的&nbsp;
deeploves 发表于 2008-12-22 18:19 | 显示全部楼层

楼上这次回答误导楼主

LINUX下的TCP/IP通信就不会有这样的每帧字节数限制是因为它会自动分割数据
ZLG_LumETH 发表于 2008-12-23 08:50 | 显示全部楼层

这就要看具体的协议了

&nbsp;&nbsp;&nbsp;&nbsp;请问大家知道为什么ZLG/IP每一帧传输的数据量只能是1460字节,这主要原因是TCP/IP协议中的IP协议。众所周知,IP协议是TCP/IP协议栈最核心的协议,它提供不可靠无连接的数据报传输服务。我们可以把它的工作比作邮政通信,它会尽最大努力帮你传输数据,但是即使丢失了,也不负责任(当然邮政加了保险的除外)。当今世界,90%的网络是通过以太网接入的,当然也纯在各种各样不同的网络,比如令牌环、令牌总线、X.25、点到点网络等。这几种网络在传送数据时,都有一个最大传输单元,我们称之为MTU,以太网的MTU的典型值是1492,但根据具体的协议校验不同可能会有一些变化。当在以太网之间传输数据时,如果数据的大小超过了MTU,那么TCP/IP协议就将数据分片发送。到达目的地后再来重组。这无疑增加了IP协议的复杂性。当在不同的网络间传输数据时,不如以太网和令牌环网直接,则MTU则是小的那个为准。在实现TCP/IP协议的时候,程序员会根据需要来实现各个功能,尤其是在嵌入式领域,为了节省资源,协议栈的UDP协议往往都不支持分片机制,比如ZLG/IP的UDP就不支持分片机制,于是就有最大传输字节只有1460的限制。楼主也说了,在LINUX下的TCP/IP通信不会有这样的限制,当然了,在PC这样一个资源丰富的条件下,它实现的一定是一个完整的TCP/IP协议,它是支持分片机制的。当传输的数据大于1492时,协议会自动将其分片发送,事实上每次传输数据的最大值仍然是1492,只不过协议内部对其进行了相应的处理。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;说了这么多楼主应该明白了吧!<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在多说一句,在嵌入式领域,以太网主要用于控制,传输的数据量一般也不会太大,即使很大,UDP你完全可以分成较小的数据一次次地发送。UDP是面向无连接的,也不会像TCP一样会在连接上浪费时间。当然要补充一句,TCP适合于传送较大量的数据,传输完毕后关闭连接,而不适合于频繁发送数据;而UDP则适合于频繁地发送数据量较小的数据。
 楼主| hedynasty 发表于 2008-12-23 10:46 | 显示全部楼层

谢谢!

学习了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

458

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0