打印
[ZLG-ARM]

关于ZLG/IP每帧1460字节的疑问???

[复制链接]
3938|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hedynasty|  楼主 | 2008-12-22 09:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
hedynasty|  楼主 | 2008-12-22 13:30 | 只看该作者

谢了,

怪不得,哎,不是研究它,我现在用它,高手推荐个别的吧,ucos下的简单点的 

使用特权

评论回复
板凳
deeploves| | 2008-12-22 18:19 | 只看该作者

楼上这次回答误导楼主

LINUX下的TCP/IP通信就不会有这样的每帧字节数限制是因为它会自动分割数据

使用特权

评论回复
地板
ZLG_LumETH| | 2008-12-23 08:50 | 只看该作者

这就要看具体的协议了

    请问大家知道为什么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,只不过协议内部对其进行了相应的处理。
     说了这么多楼主应该明白了吧!
     在多说一句,在嵌入式领域,以太网主要用于控制,传输的数据量一般也不会太大,即使很大,UDP你完全可以分成较小的数据一次次地发送。UDP是面向无连接的,也不会像TCP一样会在连接上浪费时间。当然要补充一句,TCP适合于传送较大量的数据,传输完毕后关闭连接,而不适合于频繁发送数据;而UDP则适合于频繁地发送数据量较小的数据。

使用特权

评论回复
5
hedynasty|  楼主 | 2008-12-23 10:46 | 只看该作者

谢谢!

学习了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

458

帖子

0

粉丝