IP包的上限决定了TCP和UDP的上限。
去掉包头大小就是他们理论的最大值。但是,由于MTU的关系。IP包会被分片。分片的包丢了一片,整个包就被丢弃了。所以在实际中,不会用到那么大的包。
去掉包头大小就是他们理论的最大值。但是,由于MTU的关系。IP包会被分片。分片的包丢了一片,整个包就被丢弃了。所以在实际中,不会用到那么大的包。
解决方案 »
- MFC ADO连接Access用户管理添加新用户,RecordSet返回-1的问题
- VC2008 下mysql操作问题
- 数据库连接问题~请教
- 各位大侠,请问按钮成员类型:CBCGPURLLinkButton是怎样定义的?
- 在对话框程序中,怎样实现拖动一个控件,主窗口跟着被拖动,就像拖动标题栏一样效果?
- URLDOWNLOADTOFILE 下载一个文件后, 为什么拔掉网线后还能将文件下载下来
- 怎么做虚拟打印机如:fineprint
- 我从网上下了一个dll的源程序,怎么编译也没出现dll文件,只有里lib文件,这怎么回事
- 求解
- 怎么把我已完成的软件做成控件形式呢?
- COM+组件在A类地址网络中的调用问题!
- VC++6是否会被VC++7取代?MFC呢?
-----------------------------------
16 Mbit/Sec Token Ring 17914
4 Mbits/Sec Token Ring 4464
FDDI 4352
Ethernet 1500
IEEE 802.3/802.2 1492
X.25 576
moden的MTU似乎是300左右的样子,ATM的更小些,记忆中是几十字节。所以UDP包,情况而定,别太大就行了,网络条件好的话,分个几片也关系不大。
也就是由于udp这个缺陷,使他用的比较少。虽然udp更快
不过这对应用层编程不受影响,ip层会自动分片的.
-----------------------------------
16 Mbit/Sec Token Ring 17914
4 Mbits/Sec Token Ring 4464
FDDI 4352
Ethernet 1500
IEEE 802.3/802.2 1492
X.25 576 受到分片的限制,本来开发中可以不考虑底层怎么分片的,但实际上有些应用还是受到影响的。
所以,开发中你应该根据系统的需要来分包。
好比DeltaForce这样的网络游戏,为了保证即便数据丢了,影响不大,每个udp包都很小,在很短的时间间隔中不停的发很小的包,丢一两个也可以接受。
比如语音通讯,如果你的采样频率很高,则每秒的数据量很大,为了保证即便丢包也能听到连贯的语音,可能会把发包频率调整到(比如)50ms间隔,然后根据采样频率来决定是否有必要减小发包的大小而缩短时间间隔 <50ms
UPD數據包到底能有多大,與什么有關系?
SOCKET s; unsigned short aa;
int bb;
char bbuf[1024];
getsockopt(s,SOL_SOCKET,SO_MAX_MSG_SIZE,(char*)&aa,&bb);
sprintf(bbuf,"%d",aa);
AfxMessageBox(bbuf);显示看
[email protected]
应用层
|
|
TCP层
§
§
IP
§
§
DATALINK如果作者是问TCP数据包能够带的数据长度
则是2的16次方减去首部长度,这是理论上,至于是否超过IP报文或者DATALINK最长能够携带的报文段,这由IP层和DATALINK自己处理。
这就是TCP/IP设计的分层原理。
TCP数据包的长度受接收方接收窗口大小的限制。
另外TCP协议避免分片,所以在TCP/IPILLUSTRATE的24章介绍了TCP路径发现。
我认为UDP,TCP包最大的大小为IP包的大小65535
当你调用SENDTO发送UDP包的时候,如果报文长度大于MTU则由IP来自动分片,而对于你来说这是不用知道的。所以在目标机,你RECVFROM的时候你收到的是由目标机将分片重组后的UDP包。所以UDP的最大包,应该与MTU无关。
对于TCP当你发送一个报文的时候,实际上报文是发送给了IP的写缓冲区,而每帧报文的大小,你是不能加以控制的。与接收方的窗口大小,网络拥塞等有关。由IP层自动加以处理。但每帧的大小最大为IP帧的大小65535。而一般情况下要小得多。
至于ping,采用的是imcp,建议你了解<<tcp/ip技术》三卷书相关内容
不知是这本所谓的“TCP/IP详解”讲的不清楚还是你们读的不仔细……
有兴趣的人还是去看看Cisco出的认证教材吧……
tcp,udp在实际中都会分片,分片大小与MTU确实相关。但分片是IP层的事情,由ip层来负责把片重组。所以在TCP,UDP层不应该知道MTU,它们只与IP层打交道。我认为这就是分层的精髓,不知这样对不对。
最大65535,因为IPV4 ip字头上有包长字节,32位,故最大只能是2^32=65535,见tcp/ip详解第1卷
有问题吗?
[email protected]