UDP协议与IP协议

TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层,每层都有相应的协议,如下图 

TCP/IP协议


 
所谓的协议就是双方进行数据传输的一种格式。整个网络中使用的协议有很多,所幸的是每一种协议都有RFC文档。在这里只对IP、UDP协议头做一个分析。 
首先来看看在网络中,一帧以太网数据包的格式: 

太网数据包的格式


UDP协议


UDP协议也是传输层协议,它是无连接,不保证可靠的传输层协议。在传输过程中没有流量控制和确认机制,数据报可能会丢失,延迟,乱序到达信宿。
UDP只是提供了利用校验和检查数据完整性的简单差错控制。
UDP支持一对一、一对多、多对一和多对多的交互通信。
它的协议头比较简单,只有8字节,比TCP的20字节首部开销要小很多。


UDP报文格式

 UDP报文格式
Length占用2个字节,标识UDP头和数据的长度和。 
Checksum : 校验和,包含UDP头和数据部分。

IP协议

IP报文格式

IP报文格式

IP地址分类

IP地址由32位二进制数组成,地址空间是0—-2^32-1 
点分十进制表示法:192.168.1.1 
IP地址分为两部分:  网络地址和主机地址

IP 地址分类(A、B、C、D、E类)

 IP 地址分类
如上图首字节整数:A类–0开始,B类–27=128 开始,C类–27+ 26=192 开始,D类–27+ 26+ 25 =224开始,E类–27+ 26+ 25 + 24=240开始,示例如下 

这里写图片描述


有特殊用途的IP地址:


直接广播地址:在A,B,C类地址中,如果主机地址全为“1”,则该地址为直接广播地址,即可以同时向指定网络的所有主机发送数据报.
受限广播地址:如果IP地址的32位全部为“1”,表示当前网络的一个广播地址,可以实现对本网络广播通信。
本网络本主机地址:IP地址的32位全部为“0“,表示当前网络的本主机地址。
本网络上特定主机地址:网络地址全为“0”的ip地址。
环回地址:IP地址中,首字节数值为“127”的地址,发送到这个地址的数据报不输出到线路上,直接返回。


子网与掩码:

两级结构      网络地址,主机地址 
三级结构      网络地址,子网地址,主机地址(原主机地址分隔开来)

子网掩码是一个32位的地址掩码,对应于网络地址和子网地址位设置为“1”,对应于主机地址的设置为“0”。

超网:

超网的功能是将多个连续的C类的网络地址聚合起来形成一个大型网络,因此超网是借用一部分网络地址位作为主机位,从而达到减小因特网路由表的目的。

无类别域间路由(classless interdomain routing, CIDR)


在CIDR中,去掉了A,B,C类地址的概念,采用了无类地址的概念,每个地址仅仅包含网络地址和主机地址两部分
无类地址也是用掩码来划分网络地址和主机地址的分界点。
无类地址常采用斜线表示法,将地址的掩码一起表示出来,格式是: W.X.Y.Z/n
斜线前面是IP地址,斜线后面是IP地址的网络地址部分的长度。即掩码中连续“1”的长度。 
eg: 195.160.0.1/24 对应的掩码是 255.255.255.0
 

IP协议: 报文头的前 20 个字节是固定的,后面的可变,其报文头格式如下:

版本:占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)
           首部长度:占 4 位,可表示的最大数值是 15 个单位(0000~1111,一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节
           区分服务:,占 8 位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.1998年这个字段改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用这个字段
           总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU,以太网的MTU值是1500 字节

标识:占 16 位,它是一个计数器,用来产生数据报的标识
           标志(flag):占 3 位,目前只有前两位有意义

MF标志字段的最低位是 MF (More Fragment)MF=1 表示后面“还有分片” 。 MF=0 表示最后一个分片

DF标志字段中间的一位是 DF (Don't Fragment)只有当 DF=0 时才允许分片

片偏移:占 12 位,指较长的分组在分片后某片在原分组中的相对位置.片偏移以 8 个字节为偏移单位

生存时间:占 8 位,记为 TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit 字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送ICMP 回显应答时经常把 TTL 设为最大值 255

协议:占 8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程, 1 表示为 ICMP 协议, 2 表示为 IGMP 协议, 6 表示为 TCP 协议, 17 表示为UDP 协议

首部检验和:占 16 位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法

源地址和目的地址:都各占 4 字节,分别记录源地址和目的地址

UDP协议定义及运用:UDP 协议包只是 IP 包中的一种,UDP 是 User Datagram Protocol(用户数据报协议)的英文缩写。 UDP 只提供一种基本的、低延迟的被称为数据报的通讯。所谓数据报,就是一种自带寻址信息,从发送端走到接收端的数据包。 UDP 协议经常用于图像传输、网络监控数据交换等数据传输速度要求比较高的场合。

UDP组成:数据报首( 源端口号、目标端口号、数据报长度、校验值)+数据,除数据外每个部分各占两个字节,一字节八位。

UDP 协议使用端口号为不同的应用保留其各自的数据传输通道。 数据发送一方将 UDP 数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。从理论上说,包含报头在内的数据报的最大长度为 65535 字节。不过,一些实际应用往往会限制数据报的大小。数据报的长度是指包括报头和数据部分在内的总字节数。因为报头的长度是固定的(共8字节),所以数据长度可测。UDP 协议使用报头中的校验值来保证数据的安全,校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。虽然 UDP 提供有错误检测,但检测到错误时,错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。

以太网传送IPv4报文,其最大MUT为1500字节,而IP报头占20字节,UDP报头占8字节,所以以太网使用UDP协议时,一帧数据长度最好不要超过1472字节。若超过了,则会分片传送,如数据出错,那问题可能就多了,而且重组也麻烦。
 

猜你喜欢

转载自blog.csdn.net/sinat_22510827/article/details/106827013
今日推荐