tcp udp数据包长度限制

合集下载

DTU的TCP与UDP的比较

DTU的TCP与UDP的比较

DTU的TCP与UDP的比较DTU概述DTU是数据终端设备(Data Terminal unit)的简写。

广义地讲,在进行通信时,传输数据的链路两端负责发送数据信息的模块单元都称之为DTU,在它的作用下对所传信息进行格式转换和数据整理校验。

狭义地讲,DTU一般特指无线通讯中的下位GPRS/CDMA发射终端设备。

前者是一种模块,而后者则是设备。

后面的介绍如果不加特别说明,都是指后者(下位发射终端设备)DTU应用中的TCP与UDP的比较目前中国移动、中国联通提供的GPRS网络、CDMA网络的数据传输带宽在40Kbps左右,且受带宽的限制,数据采集方案最好采用于主动告警、数据轮巡采集、告警主动回叫等对传输带宽占用较少的采集方式。

同时考虑对前置机实时采集方案的支持,无线Modem传输方案只能作为目前传输方案的补充。

随着无线通讯技术的不断发展,无线传输数据带宽将不断提高,采用3G无线网络,数据传输带宽将达到2M,无线传输方案将逐渐成为监控传输组网的主要应用方案。

目前,由于GPRS和CDMA固有的特性,在各个领域中GPRS和CDMA的应用也越来越广泛,但是关于传输中使用TCP/IP协议还是UDP协议,却争论很多。

中国移动、中国联通推行的GPRS网络、CDMA网络已覆盖大量的区域,通过无线网络实现数据传输成为可能。

无线Modem采用GPRS、CDMA模块通过中国移动、中国联通的GPRS、CDMA网络进行数据传输,并通过TCP/IP协议进行数据封包,可灵活地实现多种设备接入,工程安装简单,在工业现场数据传输的应用中,能很好的解决偏远无网络无电话线路地区的数据传输的难题。

同传统的数传电台想比较,更具有简便性、灵活性、易操作性,同时还降低了成本,无线Modem传输方案是现代化工业现场数据传输最好的选择方案。

这里先简单的说一下TCP与UDP的区别:1。

基于连接与无连接2。

对系统资源的要求(TCP较多,UDP少)3。

UDP程序结构较简单4。

udp 协议

udp 协议

udp 协议UDP 协议。

UDP(User Datagram Protocol)是一种无连接的传输层协议,它不像TCP那样需要在通信之前先建立连接。

UDP主要用于在计算机网络上发送数据报。

在本文中,我们将深入探讨UDP协议的特点、优势和应用场景。

UDP协议的特点。

UDP协议是一种简单的协议,它不提供可靠性、顺序传送和错误检测。

UDP的数据报文最大长度为65507字节,这使得UDP适合于一些对数据传输速度要求较高的应用。

UDP协议不会对数据进行拆分和重组,因此可以更快速地传输数据。

UDP协议的优势。

与TCP相比,UDP具有一些独特的优势。

首先,UDP的无连接特性使其在数据传输过程中不需要建立和维护连接,这降低了网络开销。

其次,UDP不对数据进行拆分和重组,这使得它在传输实时数据时更加高效。

此外,UDP的数据报文格式简单,传输数据的开销较小。

UDP协议的应用场景。

UDP协议广泛应用于各种实时传输场景。

例如,音频和视频流的传输通常使用UDP协议,因为UDP能够更快速地传输数据,并且对实时性要求较高。

此外,一些在线游戏也使用UDP协议来传输游戏数据,因为UDP的快速传输特性能够提供更好的游戏体验。

另外,一些需要快速传输数据但对数据可靠性要求不高的应用也会选择UDP协议。

总结。

UDP协议是一种无连接的传输层协议,它具有简单、高效的特点。

相比于TCP,UDP在实时传输方面具有一定的优势,因此在一些对数据传输速度要求较高的场景中得到广泛应用。

然而,由于UDP不提供可靠性和错误检测,因此在一些对数据可靠性要求较高的场景中并不适用。

在选择使用UDP还是TCP时,需要根据具体的应用场景和需求来进行权衡和选择。

通过本文的介绍,相信读者对UDP协议有了更深入的了解,希望本文能够帮助读者更好地应用和理解UDP协议。

UDP数据包大小

UDP数据包大小
第二个限制来自于TCP/IP的内核实现。可能存在一些实现特性(或差错),使IP数据报长度小于65535字节。
在SunOS 4.1.3下使用环回接口的最大IP数据报长度是32767字节。比它大的值都会发生差错。
但是从BSD/386到SunOS 4.1.3的情况下,Sun所能接收到最大IP数据报长度为32786字节(即32758字节用户数据)。
实际地址 F0-4D-A2-5C-FF-65
IP 地址 192.168.1.108
子网掩码 255.255.255.0
默认网关 192.168.1.254
DHCP 服务器 192.168.1.254
获得了租约 2012-11-26 172755
租约过期 2012-11-27 172755
由于IP能够发送或接收特定长度的数据报并不意味着接收应用程序可以读取该长度的数据。因此,UDP编程接口允许应用程序指定每次返回的最大字节数。如果接收到的数据报长度大于应用程序所能处理的长度,那么会发生什么情况呢?不幸的是,该问题的答案取决于编程接口和实现。
典型的Berkeley版socket API对数据报进行截断,并丢弃任何多余的数据。应用程序何时能够知道,则与版本有关(4.3BSD Reno及其后的版本可以通知应用程序数据报被截断)。
在Solaris 2.2下使用环回接口,最大可收发IP数据报长度为65535字节。
从Solaris 2.2到AIX 3.2.2,发送的最大IP数据报长度可以是65535字节。很显然,这个限制与源端和目的端的实现有关。
主机必须能够接收最短为576字节的IP数据报。在许多UDP应用程序的设计中,其应用程序数据被限制成512字节或更小,因此比这个限制值小。

数据包报文格式(IP包TCP报头UDP报头)

数据包报文格式(IP包TCP报头UDP报头)

数据包报文格式(IP包TCP报头UDP报头)一、IP包格式IP数据包是一种可变长分组,它由首部和数据负载两部分组成。

首部长度一般为20-60字节(Byte),其中后40字节是可选的,长度不固定,前20字节格式为固定。

数据负载部分的长度一般可变,整个IP数据包的最大长度为65535B。

1、版本号(Version)长度为4位(bit),IP v4的值为0100,IP v6的值为0110。

2、首部长度指的是IP包头长度,用4位(bit)表示,十进制值就是[0,15],一个IP包前20个字节是必有的,后40个字节根据情况可能有可能没有。

如果IP包头是20个字节,则该位应是20/4=53、服务类型(Type of Service TOS)长度为8位(bit),其组成:前3位为优先级(Precedence),后4位标志位,最后1位保留未用。

优先级主要用于QoS,表示从0(普通级别)到7(网络控制分组)的优先级。

标志位可分别表示D(Delay更低的时延)、T(Throughput 更高的吞吐量)、R(Reliability更高的可靠性)、C(Cost 更低费用的路由)。

TOS只表示用户的请求,不具有强制性,实际应用中很少用,路由器通常忽略TOS字段。

4、总长度(Total Length)指IP包总长度,用16位(bit)表示,即IP包最大长度可以达216=65535字节。

在以太网中允许的最大包长为1500B,当超过网络允许的最大长度时需将过长的数据包分片。

5、标识符(Identifier)长度为16位,用于数据包在分段重组时标识其序列号。

将数据分段后,打包成IP 包,IP包因走的路由上不同,会产生不同的到达目地的时间,到达目地的后再根据标识符进行重新组装还原。

该字段要与标志、段偏移一起使用的才能达到分段组装的目标。

6、标志(Flags)长度为3位,三位从左到右分别是MF、DF、未用。

MF=1表示后面还有分段的数据包,MF=0表示没有更多分片(即最后一个分片)。

TCP与UDP缓冲区大小及限制浅析

TCP与UDP缓冲区大小及限制浅析

TCP与UDP缓冲区大小及限制浅析这个问题已经是老生常谈了,这里在重新总结下。

主要参考了UNIX网络编程:(1)数据报大小IPv4的数据报最大大小是65535字节,包括IPv4首部。

因为首部中说明大小的字段为16位。

IPv6的数据报最大大小是65575字节,包括40字节的IPv6首部。

同样是展16位,但是IPv6首部大小不算在里面,所以总大小比IPv4大一个首部(40字节)。

(2)MTU许多网络有一个可由硬件规定的MTU。

以太网的MTU为1500字节。

有一些链路的MTU的MTU可以由认为配置。

IPv4要求的最小链路MTU为68字节。

这允许最大的IPv4首部(包括20字节的固定长度部分和最多40字节的选项部分)拼接最小的片段(IPv4首部中片段偏移字段以8个字节为单位)IPv6要求的最小链路MTU为1280字节。

(3)分片(fragmentation)当一个IP数据报从某个接口送出时,如果它的大小超过相应链路的MTU,IPv4和IPv6都将执行分片。

这些片段在到达终点之前通常不会被重组(reassembling)。

IPv4主机对其产生的数据报执行分片,IPv4路由器则对其转发的数据报进行分片。

然后IPv6只有主机对其产生的数据报执行分片,IPv6路由器不对其转发的数据报执行分片。

IPv4首部的“不分片”(do not fragment)位(即DF位)若被设置,那么不管是发送这些数据报的主机还是转发他们的路由器,都不允许对它们分片。

当路由器接收到一个超过其外出链路MTU大小且设置了DF位的IPv4数据报时,它将产生一个ICMPv4“destination un reachable,fragmentation needed but DF bit set”(目的不可到达,需分片但DF位已设置)的出错消息。

既然IPv6路由器不执行分片,每个IPv6数据报于是隐含一个DF位。

当IPv6路由器接收到一个超过其外出链路MTU大小的IPv6数据报时,它将产生一个ICMPv6 “packet too big”的出错消息。

数据包与数据帧大小

数据包与数据帧大小

数据包与数据帧大小概述:在计算机网络中,数据包和数据帧是常用的数据传输单位。

数据包是在网络层上进行传输的数据单位,而数据帧是在数据链路层上进行传输的数据单位。

本文将详细介绍数据包与数据帧的定义、特点以及常见的大小限制。

一、数据包的定义与特点数据包是在网络层上进行传输的数据单位,它包含了源地址、目的地址、协议类型、数据内容等信息。

数据包的特点如下:1. 数据包是逻辑上的概念,是在网络层上进行传输的数据单位,它通过网络传输到目的地。

2. 数据包的大小可以根据不同的网络协议和需求而变化,一般情况下,数据包的大小是有限制的。

二、数据帧的定义与特点数据帧是在数据链路层上进行传输的数据单位,它包含了帧起始标志、目的地址、源地址、长度、数据内容等信息。

数据帧的特点如下:1. 数据帧是物理上的概念,是在数据链路层上进行传输的数据单位,它通过物理介质传输到目的地。

2. 数据帧的大小受到物理介质的限制,不同的物理介质对数据帧的大小有不同的限制。

三、数据包与数据帧的大小限制1. 数据包的大小限制:在以太网中,数据包的最小长度为64字节,最大长度为1518字节。

这是因为以太网的最小帧大小为64字节,其中包含了6字节的目的地址、6字节的源地址、2字节的类型/长度字段以及46-1500字节的数据字段。

超过1518字节的数据包将被称为巨型帧,无法在以太网中传输。

在其他网络协议中,数据包的大小限制可能不同,如IP协议中的数据包最大长度为65535字节。

2. 数据帧的大小限制:数据帧的大小限制取决于物理介质的特性和网络设备的要求。

以太网的数据帧大小限制为最小64字节,最大1518字节。

其中包括了7字节的前导码、1字节的帧起始标志、6字节的目的地址、6字节的源地址、2字节的类型/长度字段、46-1500字节的数据字段以及4字节的帧校验序列(FCS)。

在其他数据链路层协议中,数据帧的大小限制可能不同,如PPP协议中的数据帧最大长度为65535字节。

UDP数据包大小问题

UDP数据包大小问题

UDP数据包大小问题UDP数据包大小问题在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,这里仅对像ICQ一类的发送聊天消息的情况作分析,对于其他情况,或许也能得到一点帮助:首先,我们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,传输层,应用层.UDP属于运输层,下面我们由下至上一步一步来看: 以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.这个1500字节被称为链路层的MTU(最大传输单元).但这并不是指链路层的长度被限制在1500字节,其实这个MTU指的是链路层的数据区.并不包括链路层的首部和尾部的18个字节.所以,事实上,这个1500字节就是网络层IP数据报的长度限制.因为IP数据报的首部为20字节,所以IP数据报的数据区长度最大为1480字节.而这个1480字节就是用来放TCP传来的TCP报文段或UDP传来的UDP数据报的.又因为UDP数据报的首部8字节,所以UDP数据报的数据区最大长度为1472字节.这个1472字节就是我们可以使用的字节数。

:)当我们发送的UDP数据大于1472的时候会怎样呢?这也就是说IP数据报大于1500字节,大于MTU.这个时候发送方IP 层就需要分片(fragmentation).把数据报分成若干片,使每一片都小于MTU.而接收方IP层则需要进行数据报的重组.这样就会多做许多事情,而更严重的是,由于UDP的特性,当某一片数据传送中丢失时,接收方便无法重组数据报.将导致丢弃整个UDP数据报。

因此,在普通的局域网环境下,我建议将UDP的数据控制在1472字节以下为好. 进行Internet编程时则不同,因为Internet 上的路由器可能会将MTU设为不同的值.如果我们假定MTU为1500来发送数据的,而途经的某个网络的MTU值小于1500字节,那么系统将会使用一系列的机制来调整MTU 值,使数据报能够顺利到达目的地,这样就会做许多不必要的操作.鉴于Internet上的标准MTU值为576字节,所以我建议在进行Internet的UDP编程时.最好将UDP的数据长度控件在548字节(576-8-20)以内.理论上,IP数据报的最大长度是65535字节,这是由IP首部16比特总长度字段所限制的。

UDP数据传输大小

UDP数据传输大小

UDP数据传输大小在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对像ICQ一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助:首先,我们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,运输层,应用层.UDP属于运输层,下面我们由下至上一步一步来看:以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的. 这个1500字节被称为链路层的MTU(最大传输单元).但这并不是指链路层的长度被限制在1500字节,其实这这个MTU指的是链路层的数据区.并不包括链路层的首部和尾部的18个字节.所以,事实上,这个1500字节就是网络层IP数据报的长度限制.因为IP数据报的首部为20字节,所以IP数据报的数据区长度最大为1480字节.而这个1480字节就是用来放TCP传来的TCP报文段或UDP传来的UDP数据报的.又因为UDP数据报的首部8字节,所以UDP数据报的数据区最大长度为1472字节.这个1472字节就是我们可以使用的字节数。

:)当我们发送的UDP数据大于1472的时候会怎样呢?这也就是说IP数据报大于1500字节,大于MTU.这个时候发送方IP层就需要分片(fragmentation).把数据报分成若干片,使每一片都小于MTU.而接收方IP层则需要进行数据报的重组.这样就会多做许多事情,而更严重的是,由于UDP的特性,当某一片数据传送中丢失时,接收方便无法重组数据报.将导致丢弃整个UDP数据报.因此,在普通的局域网环境下,我建议将UDP的数据控制在1472字节以下为好.进行Internet编程时则不同,因为Internet上的路由器可能会将MTU设为不同的值.如果我们假定MTU为1500来发送数据的,而途经的某个网络的MTU值小于1500字节,那么系统将会使用一系列的机制来调整MTU值,使数据报能够顺利到达目的地,这样就会做许多不必要的操作.鉴于Internet上的标准MTU值为576字节,所以我建议在进行Internet的UDP编程时.最好将UDP的数据长度控件在548字节(576-8-20)以内.理论上,IP数据报的最大长度是65535字节,这是由IP首部16比特总长度字段所限制的。

Python中的UDP和TCP编程

Python中的UDP和TCP编程

Python中的UDP和TCP编程一、UDP编程UDP是无连接的、不可靠的协议,适用于对数据传输的实时性要求比较高但对数据是否全部成功到达要求不高的应用场景,如视频、语音等应用,UDP的使用非常广泛。

1.1、UDP数据报格式UDP首部长度固定为8个字节,分别为源端口、目的端口、数据长度和校验和,格式如下:![image.png](attachment:image.png)由此可见,UDP数据报文非常简单,但是没有TCP那样的流量控制、拥塞控制和重传机制,因此容易出现数据丢失、乱序等问题,需要应用层自己解决。

1.2、UDP编程实例UDP编程实例如下:```pythonimport socket#创建UDP套接字udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#绑定本地端口local_addr = ('', 7788)udp_socket.bind(local_addr)#接收数据并发送数据while True:recv_data, recv_addr = udp_socket.recvfrom(1024)send_data = 'Hello World!'udp_socket.sendto(send_data.encode('utf-8'), recv_addr) print(recv_data.decode('utf-8'))```可以看到,UDP编程比TCP编程简单,无需建立连接,只需要创建UDP套接字、绑定端口、接收数据、发送数据即可。

二、TCP编程TCP是面向连接的可靠协议,适用于对数据传输的完整性和顺序要求比较高的应用场景,如文件传输、邮件等应用,TCP的使用也非常广泛。

2.1、TCP连接过程TCP连接过程如下:![image-2.png](attachment:image-2.png)一般情况下,客户端发送SYN报文给服务器端,服务器端接收到SYN报文之后回复一个SYN+ACK报文,客户端再发送一个ACK报文作为握手的第三步,至此TCP连接建立成功。

TCP,UDP发送数据包大小浅析

TCP,UDP发送数据包大小浅析

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层组包发生的错误。

一个TCP报文最多传输多少字节(即MSS)

一个TCP报文最多传输多少字节(即MSS)

⼀个TCP报⽂最多传输多少字节(即MSS)
⽬录
答案
⼀个TCP报⽂最多传输多少字节(即MSS)?
答案:1440
分析
报⽂头的长度
TCP: 58 = 18+20+20
UDP: 46 = 18+20+8
其中链路层:18,IP层:20, TCP:32 UDP:8,如下图:(各协议的报⽂详情见附录)
但我们通常说得MTU(最⼤传输单元)并不包括链路层,那么:
TCP: 40 = 20+20
UDP: 28 = 20+8
有些想象⼒丰富的⼩朋友会发现,链路层的协议上写着数据段⼤⼩是46-1500会不会是弄错了?
答:其实这个46和UDP没有⼀⽑钱关系。

因为链路层传输字段的最⼩长度是64,链路协议占了18,64-18=46。

也就是说,不管你发不发数据,这个46的长度是少不了的。

MTU的长度:
以太⽹限制长度:1500
IEEE 802.3要求长度:1492
取较⼩值,也就是真正⽤来传输数据的长度:
1452 = 1492 - 40
百度百科参考的⼀般值:
1460 = 1500 - 40
TCP头的最⼤长度是60,因为偏移位占4bit最⼤值为15,表⽰TCP包头长度,单位4字节(32bit),因此TCP头最多长60字节。

所以我们经常抓包的时候会发现,MSS有时会是1440这个数,表⽰TCP包头占了60字节。

当然经过复杂的⽹络环境MSS会更⼩。

附录
参考⽹址。

网络数据包大小

网络数据包大小

网络数据包大小用UDP协议发送时,用sendto函数最大能发送数据的长度为:65535-20-8=65507字节,其中20字节为IP包头长度,8字节为UDP包头长度。

用sendto函数发送数据时,如果指的的数据长度大于该值,则函数会返回错误。

用TCP协议发送时,由于TCP是数据流协议,因此不存在包大小的限制(暂不考虑缓冲区的大小),这是指在用send函数时,数据长度参数不受限制。

而实际上,所指定的这段数据并不一定会一次性发送出去,如果这段数据比较长,可能会被分段发送,如果比较短,可能会等待和下一次数据一起发送。

我在测试的时候,发现长度一般会被切成16384(16K)或49152(48K),不知道这两个值有什么意义。

比如在send()中设定发送数据的长度为100000,在接收端用recv()函数接收时,接收到的数据长度如下表:start recvLen: 16384 nu: 0 type: 0normal recvLen: 16384 nu: 0 type: 0normal recvLen: 67232 nu: 0 type: 0-------------------normal recvLen: 49152 nu: 1 type: 1normal recvLen: 49152 nu: 0 type: 0normal recvLen: 1696 nu: -1208847736 type: -1207635502-------------------normal recvLen: 49152 nu: 2 type: 1normal recvLen: 49152 nu: 0 type: 0normal recvLen: 1696 nu: -1208847736 type: -1207635502-------------------从表中可以看出每次发送的100000byte的数据被拆成了3段,这3段长度加起来正好是100000。

数据包与数据帧大小

数据包与数据帧大小

数据包与数据帧大小数据包和数据帧是计算机网络中常用的数据传输单位。

数据包是在网络层(OSI模型中的第三层)上进行传输的,而数据帧则是在数据链路层(OSI模型中的第二层)上进行传输的。

它们的大小对于网络性能和数据传输的效率有着重要的影响。

本文将详细介绍数据包和数据帧的大小以及相关的标准和限制。

一、数据包大小数据包是在网络层上进行传输的,它包含了源地址、目标地址、协议类型、数据等信息。

数据包的大小对于网络性能和数据传输的效率有着重要的影响。

在不同的网络协议中,数据包的大小有不同的限制和标准。

1. 以太网协议(Ethernet)以太网是一种常用的局域网技术,它使用以太网协议进行数据传输。

在以太网中,数据包的最大大小为1500字节(不包括帧头和帧尾)。

这个限制是由以太网的物理特性和协议定义所决定的。

超过这个大小的数据包将被拆分成多个数据帧进行传输。

2. 网际协议(IP)网际协议是互联网中常用的网络协议,它定义了数据包在网络中的传输方式。

在IPv4协议中,数据包的最大大小为65535字节(包括IP头部和数据部份)。

然而,在实际应用中,由于网络设备的限制,通常将数据包的大小限制在1500字节以下,以适应以太网的限制。

3. 用户数据报协议(UDP)用户数据报协议是一种无连接的传输协议,它使用数据包进行传输。

在UDP 协议中,数据包的最大大小为65507字节(包括UDP头部和数据部份)。

然而,由于底层网络设备的限制,通常将数据包的大小限制在1500字节以下。

4. 传输控制协议(TCP)传输控制协议是一种可靠的传输协议,它使用数据包进行传输。

在TCP协议中,数据包的最大大小取决于底层网络设备的MTU(最大传输单元)大小。

在以太网中,MTU通常为1500字节。

因此,在TCP协议中,数据包的大小通常限制在1500字节以下。

二、数据帧大小数据帧是在数据链路层上进行传输的,它包含了源MAC地址、目标MAC地址、帧类型、数据等信息。

udp长度定义

udp长度定义

udp长度定义
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,用于在网络中传输数据。

UDP 协议不保证数据的可靠性和顺序性,但它能够提供较高的传输效率和低延迟。

UDP 数据报的长度是指 UDP 协议头和数据部分的总长度。

UDP 协议头包含四个字段:源端口号、目标端口号、数据报长度和校验和。

数据报长度字段表示 UDP 数据报的总长度,包括协议头和数据部分。

在 UDP 协议中,数据报的长度是以字节为单位进行表示的。

UDP 数据报的最大长度受到网络的 MTU(Maximum Transmission Unit,最大传输单元)限制。

一般情况下,以太网的 MTU 为 1500 字节,这意味着 UDP 数据报的最大长度通常被限制在 1500 字节以内。

然而,在实际应用中,为了避免 IP 分片和提高传输效率,通常会将 UDP 数据报的长度限制在更小的范围内。

具体的限制取决于应用程序和网络环境的要求。

需要注意的是,UDP 数据报的长度包括协议头和数据部分。

因此,在计算数据部分的长度时,需要减去 UDP 协议头的长度(通常为 8 字节)。

总之,UDP 长度定义了 UDP 数据报的总长度,包括协议头和数据部分。

它受到网络的MTU 限制,并且在实际应用中通常会根据需求进行限制。

数据包与数据帧大小

数据包与数据帧大小

数据包与数据帧大小数据包和数据帧是计算机网络中常用的数据传输单位。

数据包是在网络层进行传输的数据单元,而数据帧则是在数据链路层进行传输的数据单元。

在网络通信中,了解数据包和数据帧的大小对于网络性能和数据传输的效率至关重要。

本文将详细介绍数据包和数据帧的概念、大小以及相关的标准格式。

一、数据包的概念和大小数据包是在网络层进行传输的数据单元,它包含了源地址、目标地址、协议类型、数据长度等信息。

数据包的大小取决于所使用的网络协议和传输介质的限制。

在以太网中,数据包的大小通常被限制在1500字节(包括数据和头部信息)。

这个大小被称为以太网的最大传输单元(MTU)。

数据包的大小对于网络性能和数据传输的效率有着重要的影响。

较小的数据包可以提供更低的延迟和更快的传输速度,但也会增加网络开销和占用更多的带宽。

较大的数据包可以减少网络开销和带宽占用,但会增加传输延迟。

因此,在设计网络通信时,需要根据具体的应用场景和需求来选择合适的数据包大小。

二、数据帧的概念和大小数据帧是在数据链路层进行传输的数据单元,它包含了目标地址、源地址、帧类型、数据以及校验等信息。

数据帧的大小也受到网络协议和传输介质的限制。

在以太网中,数据帧的大小通常被限制在1518字节(包括数据和头部信息)。

这个大小被称为以太网的帧长。

数据帧的大小包括了数据和头部信息,因此实际传输的有效数据大小会比帧长小。

以太网的帧头部一般占据14字节,帧尾部占据4字节,因此实际的有效数据大小为1500字节。

在实际应用中,数据帧的大小也会根据具体的需求和网络环境进行调整。

三、数据包和数据帧的标准格式数据包和数据帧都有各自的标准格式,以确保数据的正确传输和解析。

1. 数据包的标准格式:- 源地址:指明数据包的发送者。

- 目标地址:指明数据包的接收者。

- 协议类型:指明数据包所使用的网络协议,如IP协议、TCP协议等。

- 数据长度:指明数据包中数据的长度。

- 数据:实际传输的数据内容。

UDP数据包大小问题

UDP数据包大小问题

UDP数据包大小问题UDP数据包大小问题UDP数据包大小问题在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,这里仅对像ICQ一类的发送聊天消息的情况作分析,对于其他情况,或许也能得到一点帮助:首先,我们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,传输层,应用层.UDP属于运输层,下面我们由下至上一步一步来看: 以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.这个1500字节被称为链路层的MTU(最大传输单元).但这并不是指链路层的长度被限制在1500字节,其实这个MTU指的是链路层的数据区.并不包括链路层的首部和尾部的18个字节.所以,事实上,这个1500字节就是网络层IP数据报的长度限制.因为IP数据报的首部为20字节,所以IP数据报的数据区长度最大为1480字节.而这个1480字节就是用来放TCP传来的TCP报文段或UDP传来的UDP数据报的.又因为UDP数据报的首部8字节,所以UDP数据报的数据区最大长度为1472字节.这个1472字节就是我们可以使用的字节数。

:)当我们发送的UDP数据大于1472的时候会怎样呢?这也就是说IP数据报大于1500字节,大于MTU.这个时候发送方IP 层就需要分片(fragmentation).把数据报分成若干片,使每一片都小于MTU.而接收方IP层则需要进行数据报的重组.这样就会多做许多事情,而更严重的是,由于UDP的特性,当某一片数据传送中丢失时,接收方便无法重组数据报.将导致丢弃整个UDP数据报。

因此,在普通的局域网环境下,我建议将UDP的数据控制在1472字节以下为好. 进行Internet编程时则不同,因为Internet 上的路由器可能会将MTU设为不同的值.如果我们假定MTU为1500来发送数据的,而途经的某个网络的MTU值小于1500字节,那么系统将会使用一系列的机制来调整MTU 值,使数据报能够顺利到达目的地,这样就会做许多不必要的操作.鉴于Internet上的标准MTU值为576字节,所以我建议在进行Internet的UDP编程时.最好将UDP的数据长度控件在548字节(576-8-20)以内.理论上,IP数据报的最大长度是65535字节,这是由IP首部16比特总长度字段所限制的。

浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)

浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)

浅谈UDP(数据包长度,收包能⼒,丢包及进程结构选择)UDP数据包长度UDP数据包的理论长度udp数据包的理论长度是多少,合适的udp数据包应该是多少呢?从TCP-IP详解卷⼀第11章的udp数据包的包头可以看出,udp的最⼤包长度是2^16-1的个字节。

由于udp包头占8个字节,⽽在ip层进⾏封装后的ip包头占去20字节,所以这个是udp数据包的最⼤理论长度是2^16-1-8-20=65507。

然⽽这个只是udp数据包的最⼤理论长度。

⾸先,我们知道,TCP/IP通常被认为是⼀个四层协议系统,包括链路层、⽹络层、运输层、应⽤层。

UDP属于运输层,在传输过程中,udp包的整体是作为下层协议的数据字段进⾏传输的,它的长度⼤⼩受到下层ip层和数据链路层协议的制约。

MTU相关概念以太⽹(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太⽹的物理特性决定的。

这个1500字节被称为链路层的MTU(最⼤传输单元)。

因特⽹协议允许IP分⽚,这样就可以将数据包分成⾜够⼩的⽚段以通过那些最⼤传输单元⼩于该数据包原始⼤⼩的链路了。

这⼀分⽚过程发⽣在⽹络层,它使⽤的是将分组发送到链路上的⽹络接⼝的最⼤传输单元的值。

这个最⼤传输单元的值就是MTU(Maximum Transmission Unit)。

它是指⼀种通信协议的某⼀层上⾯所能通过的最⼤数据包⼤⼩(以字节为单位)。

最⼤传输单元这个参数通常与通信接⼝有关(⽹络接⼝卡、串⼝等)。

在因特⽹协议中,⼀条因特⽹传输路径的“路径最⼤传输单元”被定义为从源地址到⽬的地址所经过“路径”上的所有IP跳的最⼤传输单元的最⼩值。

需要注意的是,loopback的MTU不受上述限制,查看loopback MTU值:[root@bogon ~]# cat /sys/class/net/lo/mtu65536IP分包udp数据包长度的影响如上所述,由于⽹络接⼝卡的制约,mtu的长度被限制在1500字节,这个长度指的是链路层的数据区。

TcpUdp发送数据长度问题探讨

TcpUdp发送数据长度问题探讨
网络MTU(路径MTU)查看方法
Windows:ping -f -l <data_length> <gateway_IP> Linux:ping -c <number> -M do -s <data_length>
<gateway_IP>
整理课件
IP数据长度超过MTU时:
发送端IP层分片,接收端IP层重组
整理课件
整理课件
整理课件
整理课件
UDP:
UDP没有流量控制,如果发送端发送的速度较快,接收 端接收到数据后处理的速度较慢,而接收缓冲区的大小 是固定的,就会丢失数据。
TCP:
TCP通过“滑动窗口”机制进行流量控制,保证可靠传 输。
整理课件
整理课件
TCP/UDP数据发送长度选择依据:
UDP应用开发时,要考虑流量控制、应答机制、超时重
发等机制。
整理课件
本地MTU
Windows: 注册表 Linux:ifconfig
网络MTU
以太网(Ethernet)协议:1500字节 PPPoE(ADSL)协议:1492字节 X.25协议(Dial Up/Modem):576字节 Point-to-Point:4470字节 FDDI协议:4352字节
TCP/UDP数据发送长度选择标准:
TCP:
不能超过套接口发送缓冲区长度(非阻塞) 根据系统性能和网络性能,选择一个合适值
UDP:
不能超过报文数据长度上限:65535-20-8=65507(64KB) 不能超过套接口发送缓冲区长度 根据系统性能和网络性能,选择一个合适值 采用流量控制、应答机制、超整时理重课件发等
TCP:
对于需要一次性发送数据长度较大的场景(如大于 10KB),推荐使用阻塞TCP;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

udp tcp 数据包限制收藏/taiyang902/archive/2010/04/16/5490065.aspx
对于以太网环境下UDP传输中的数据包长度问题
首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。

其中以太网(Ethernet)的数据帧在链路层
IP包在网络层
TCP或UDP包在传输层
TCP或UDP中的数据(Data)在应用层
它们的关系是数据帧{IP包{TCP或UDP包{Data}}}
在应用程序中我们用到的Data的长度最大是多少,直接取决于底层的限制。

我们从下到上分析一下:
在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)-(1500+18),其中的18是数据帧的头和尾,也就是说数据帧的内容最大为1500,即MTU(Maximum Transmission Unit)为1500;
在网络层,因为IP包的首部要占用20字节,所以这的MTU为1500-20=1480;
在传输层,对于UDP包的首部要占用8字节,所以这的MTU为1480-8=1472;
所以,在应用层,你的Data最大长度为1472。

(当我们的UDP包中的数据多于MTU(1472)时,发送方的IP层需要分片fragmentation进行传输,而在接收方IP层则需要进行数据报重组,由于UDP是不可靠的传输协议,如果分片丢失导致重组失败,将导致UDP数据包被丢弃)。

从上面的分析来看,在普通的局域网环境下,UDP的数据最大为1472字节最好(避免分片重组)。

但在网络编程中,Internet中的路由器可能有设置成不同的值(小于默认值),Internet上的标准MTU值为576,所以Internet的UDP编程时数据长度最好在576-20-8=548字节以内。

MTU对我们的UDP编程很重要,那如何查看路由的MTU值呢?
对于windows OS: ping -f -l <data_length> <gateway_IP>
如:ping -f -l 1472 192.168.0.1
如果提示:Packets needs to be fragmented but DF set.
则表明MTU小于1500,不断改小data_length值,可以最终测算出gateway的MTU值;
对于linux OS: ping -c <number> -M do -s <data_length> <gateway_IP>
如: ping -c 1 -M do -s 1472 192.168.0.1
如果提示Frag needed and DF set……
则表明MTU小于1500,可以再测以推算gateway的MTU。

当然要修改MTU的值,那就是网管的事了(一般人没这权限呀),我们只能申请加等待了 ^-^ .
转自:/2009-04/1239440118114560.html
IP数据包的最大长度是64K字节(65535),因为在IP包头中用2个字节描述报文长度,2个字节所能表达的最大数字就是65535。

由于IP协议提供为上层协议分割和重组报文的功能,因此传输层协议的数据包长度原则上来说没有限制。

实际上限制还是有的,因为IP包的标识字段终究不可能无限长,按照IPv4,好像上限应该是
4G(64K*64K)。

依靠这种机制,TCP包头中就没有“包长度”字段,而完全依靠IP层去处理分帧。

这就是为什么TCP常常被称作一种“流协议”的原因,开发者在使用TCP服务的时候,不必去关心数据包的大小,只需讲SOCKET看作一条数据流的入口,往里面放数据就是了,TCP协议本身会进行拥塞/流量控制。

UDP则与TCP不同,UDP包头内有总长度字段,同样为两个字节,因此UDP数据包的总长度被限制为65535,这样恰好可以放进一个IP包内,使得UDP/IP协议栈的实现非常简单和高效。

65535再减去UDP头本身所占据的8个字节,UDP服务中的最大有效载荷长度仅为65527。

这个值也就是你在调用getsockopt()时指定SO_MAX_MSG_SIZE所得到返回值,任何使用SOCK_DGRAM属性的socket,一次send的数据都不能超过这个值,否则必然得到一个错误。

那么,IP包提交给下层协议时将会得到怎样的处理呢?这就取决于数据链路层协议了,一般的数据链路层协议都会负责将IP包分割成更小的帧,然后在目的端重组它。

在EtherNet上,数据链路帧的大小如以上几位大侠所言。

而如果是IP over ATM,则IP包将被切分成一个一个的ATM Cell,大小为53字节。

MAC格式:
目的地址:6
源地址:6
长度:2
数据:46-1500
校验和:4
===============1526。

相关文档
最新文档