UDP:用户数据报协议

UDP是一个简单的面向数据报的运输层协议。进程的每个操作都刚好产生一个UDP数据报,并组装成一份带发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。

UDP封装格式如下:


UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能够成功达到目的端。任何可靠性必须由上层来提供。

UDP首部如下:


端口号表示发送进程和接受进程。UDP检验和覆盖UDP首部和数据。注意UDP检验和是可选的,而TCP检验和是必需的。

如果发送端没有计算检验和而接收端检测到检验和有差错,那么UDP数据报就要被悄悄地丢弃,不产生任何差错报文(当IP层检测到IP首部检验和有差错时也要这样做)。


IP分片

物理网络层一般要限制每次发送数据帧的最大长度。任何时候IP层接收到一份将要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询获取该接口的MTU。IP把MTU与数据报长度进行比较,如果需要则进行分片。分片即可发生在源发送主机上,也可以发生在中间路由器上。

把一份IP数据报分片以后,只有达到目的地时才进行重新组装。重新组装由目的端的IP层来完成,其目的是使分片和重新组装过程对运输层透明以及防止性能降低。

IP首部中的用于分片的字段有:

  • 标识字段,用于标识发送端发送的每份IP数据报,该值在数据报分片时被复制到每个分片中;
  • 标志字段中有3个比特MFNFDF,分别表示更多的片,后面没有片以及不分片;
  • 片偏移字段,表示该片偏移原始数据报开始处的位置;
  • 数据报分片后其总长度要修改为该片的长度;

如果把标志字段的DF置为1表示不分片,相反会把数据报丢弃并发送一个ICMP差错报文。

IP分片的缺点:即使只丢失了一片数据也要重传整个数据报。所以要避免分片。


广播和多播

TCP/IP协议中有三种IP地址:单播地址、广播地址、多播地址。

广播和多播仅应用于UDP,它们对需要将报文同时传给多个接收者的应用来说十分重要。TCP是面向连接的,这意味着分别运行与俩主机内的俩进程间存在一条连接。

广播是指一个主机要向网络上所有主机发送帧。多播是指帧仅传送给属于多播组的多个主句。

协议栈对收到帧的处理过程:

  1. 首先网卡查看由信道传送过来的帧,如果目的地址是网络物理地址或广播地址,则将它传送给设备驱动程序;
  2. 然后设备驱动程序查看帧类型字段指定的协议(IP、ARP),传给指定的上层协议;
  3. 每次UDP收到由IP传来的数据报,就根据目的端口号进行处理,如果没有进程使用该端口,就丢弃该数据报并产生一个ICMP不可达报文;

使用广播的问题在于它增加了对广播数据不感兴趣主机的处理负荷。可使用多播。

IP广播地址有四种:

  • 受限的广播——255.255.255.255,在任何情况下,路由器都不会转发目的地址为受限的广播地址的数据报,这样的数据报仅会出现在本地网络中;
  • 指向网络的广播,是广播地址是主机号全为1的地址;
  • 指向子网的广播,是指有特定子网号且主机号全为1的地址;
  • 指向所有子网的广播,是指子网号和主机号全为1的地址;
D类IP地址中分配28bit作为多播组号。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值