TCP和UDP协议发送数据包的大小方面的知识介绍

MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,EthernetII帧的结构DMAC+SMAC+Type+Data+CRC由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64bytes最大不能超过1518bytes,对于小于或者大于这个限制的以太网帧我们都可以视之为错误的数据帧,一般的以太网转发设备会丢弃这些数据帧。
由于以太网EthernetII最大的数据帧是1518Bytes这样,刨去以太网帧的帧头(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes这个值我们就把它称之为MTU。
PPPoE所谓PPPoE就是在以太网上面跑PPP协议,有人奇怪了,PPP协议和Ethernet不都是链路层协议吗?怎么一个链路层跑到另外一个链路层上面去了,难道升级成网络层协议了不成。其实这是个误区:就是某层协议只能承载更上一层协议。
为什么会产生这种奇怪的需求呢?这是因为随着宽带接入(这种宽带接入一般为Cable Modem或者xDSL或者以太网的接入),因为以太网缺乏认证计费机制而传统运营商是通过PPP协议来对拨号等接入服务进行认证计费的.
PPPoE带来了好处,也带来了一些坏处,比如:二次封装耗费资源,降低了传输效能等等,这些坏处俺也不多说了,最大的坏处就是PPPoE导致MTU变小了以太网的MTU是1500,再减去PPP的包头包尾的开销(8Bytes),就变成1492。
UDP 包的大小就应该是 1492 - IP头(20) - UDP头(8) = 1464(BYTES)
TCP 包的大小就应该是 1492 - IP头(20) - TCP头(20) = 1452(BYTES)
目前大多数的路由设备的MTU都为1500
我对上面的理解是:如果我们定义的TCP和UDP包小于1452,1464,那么我们的包在IP层就不用分包了,这样传输过程中就避免了在IP层组包发生的错误。如果使用UDP协议,如果IP层组包发生错误,那么包就会被丢弃,UDP不保证可靠传输。但是TCP发生组包错误时,该包会被重传,保证可靠传输。所以,我们在用Socket编程时,包的大小设定不一定非要小于1400,UDP协议要求包小于64K,TCP没有限定。
总结:
我们设定包的大小对于UDP和TCP协议是不同的,关键是看系统性能和网络性能,网络是状态很好的局域网,那么UDP包分大点,提高系统的性能。不好,就分小于1464,这样可以减低丢包率。对于TCP来说,这个就要靠经验了,因为,TCP丢包可以自动重传,分大了,系统性能提高了,分包和错误重组可能会耗费时间,使传送时间延长,分小了,系统性能又降低了。

(0)

相关推荐

  • TCP、UDP端口,TCP、UDP协议如何区别

    TCP.UDP是一种端口,还是一种协议?与我们接触认识比较多的地方是家用路由器.软件使用过程中.它们如何区分呢?TCP用于可靠性较高的局域网,UDP用于可靠性较差的广域网? TCP 和 UDP 都是 ...

  • 路由器网络中数据包传输分析

    本篇介绍一个基础的知识,关于数据包在路由器中是如何进行传输和交换的,只要明白这点,那么对你配置出一个好的网络环境会有很大的帮助。 一、输入的问题 1、原始套接口可以接收到任何TCP或UDP报文。 2、 ...

  • 金浪路由器数据包的过滤方法介绍

    一、数据包过滤有时也称为静态数据包过滤,它通过分析传入和传出的数据包以及根据既定标准传递或阻止数据包来控制对网络的访问,当路由器根据过滤规则转发或拒绝数据包时,它便充当了一种数据包过滤器。当数据包到达 ...

  • 电脑本地连接为何会出现收到数据包字节很少的问题

    相信每一个电脑用户都知道,电脑连接了网络后,本地连接要连接上,且发送数据包字节和收到数据包字节两者都要正常,网络才能够正常使用,否则就会出现这样或是那样的问题。不过有的时候,人们会碰到本地连接收到数据 ...

  • 路由器数据包分析包括哪些

    数据包也就是TCP/IP协议通信传输中的数据单位,单个消息被划分为多个数据块,这些数据块称为包,它包含发送者和接收者的地址信息.这些包然后沿着不同的路径在一个或多个网络中传输,并且在目的地重新组合. ...

  • 死亡扳机数据包放哪

    很多在下载好数据包之后,对数据包的位置存放表示不解,下面就告诉大家,下载好数据包之后解压存放位置:android/obb即可 死亡扳机DEAD TRIGGER是一个使用unity引擎支持,高品质的画面 ...

  • 查看本地连接状态时发现数据包发送少收到多是怎么回事

    打开网络图标的本地连接状态查看,发现网络数据包发送少收到多是怎么回事呢?(见下图) 数据包发送少收到多,大多数情况都是这样,因为上网本来下载普遍比上传多,比如你访问一个网页,你所发送的仅仅是一个连接命 ...

  • UDP协议的几个特性介绍

    UDP协议的几个特性 1. UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应 ...

  • TCP和UDP有什么区别?

    TCP(传输控制协议): 1)提供IP环境下的数据可靠传输(一台计算机发出的字节流会无差错的发往网络上的其他计算机,而且计算机A接收数据包的时候,也会向计算机B回发数据包,这也会产生部分通信量),有效 ...