(009)TCP/IP协议-UDP

一、引言

UDP(User Datagram Protocol
用户数据中国包装技术组织议)是1个简练的面向数据包的运输层协议。进度的每二回输出操作都碰巧产生一个UDP协议(有长度限制)。那是面向流字符协议分裂。UDP商谈是封装在IP数据包中的。UDP不提供可信性:它把应用程序传给
I P层的多寡发送出去,但是并不保险它们能抵达目标地。

二、UDP结构

图1. UDP结构

  • 源端口号:长度2字节,标识该数量包来至于源主机的哪位端口;
  • 指标端口号:长度2字节,标识该数量包指标主机端口号;
  • UDP长度:长度3个字节,指明是UDP首部和UDP数据的字节长度,单位字节长度;该字段的最小值为
    8字节(发送一份0字节的UDP数据包是OK的)。这么些UDP长度是有冗余的。IP数据包长度指的是数量包全长,由此UDP数据报长度是全长减去IP首部的尺寸。
  • UDP检验和覆盖UDP首部和UDP数据。回顾IP首部的检查和,它只覆盖IP的首部。UDP数据报和TCP段都带有2个12字节长的伪首部,它是为着总结检验和而设置的。伪首部涵盖IP首部一些字段。其指标是让UDP三次检查数据是还是不是已经不易到达指标地。
图2. UDP校验和技术过程中的结构

说明
  由于IP层已经把IP数据包分配给TCP或UDP(依据IP首部中说道字段值),由此TCP端口号由TCP来查阅,而UDP端口号由UDP来查看。TCP端口号与UDP端口号是互为独立的。

三、IP分片

大体网络层一般要限量每便发送数据帧的最大尺寸。当要发送的数据长度超越了最大尺寸(MTU),就要对数码进行分片处理传输。
  把一份IP数据包分片今后,唯有到达目标地才举办再一次组建(那里的重复组建与其它网络协议不相同,它们供给在下一站就开始展览拓展双重组建,而不是在结尾的目标地)。重新组建由目标端的IP层来成功,其目标是使分片和重复组建进度对运输层(TCP与UDP)是透明的,除了少数恐怕的越级操作外。

图3.IP数目包结构

  • 十三人标识字段(Identity):对于发送端发送的每份IP数据包的话,其标识字段都蕴涵3个唯一值。该值在数据报分片时被复制到各样片中。
  • 三位标志字段(flag):标志字段用尾数比特来表示“愈来愈多的片”。除了最终一片外,其余种种组成数据报的片都要把该比特置
    1。中间比特为“不分片”位。如若将这一比特置
    1,IP将不对数据报开展分片。
  • 1四人片偏移字段(offset):该片偏移原始数据包开端处的岗位。此外,当数码包被分片后,各种片的路程度值要改为该片的长度值。

抓包,执行如下PHP代码:

<?php
$handle = stream_socket_client("udp://110.12.15.10:9999", $errno, $errstr);
if( !$handle ){    
      die("ERROR: {$errno} - {$errstr}\n");
}
$str = 'start';
for($i=0;$i<500;$i++){    
      $str .= 'abcdefjhijklmnopkrstuvwxyz1234567890';
}
$str .= 'end';
fwrite($handle, $str."\n");

图4.IP分片抓包

如上三个udp数据被分为了一个ip数据包。

相关文章