TCP/IP 7 UDP
1、UDP简介
UDP和TCP是我们比较常用的协议,他们都是位于传输层,但是UDP提供的是不可靠的协议,也就是说不会有TCP的超时重传和出错重传等等。
2、UDP的端口号和校验和
UDP是上层直接使用的协议,所以会有很多的软件使用它,这样他就要提供端口号给不同的软件使用,可以有2^16这么多的端口号,因为端口号占用了16个bit。
UDP的校验和对于发送端来说不是必须的(TCP是必须的),他的校验和和IP是不一样的UDP的校验覆盖了整个报文,但是IP是有头部,如果发送端没有使用校验和但是接收端开启了校验和那个这个UDP数据包就会被丢弃,从这里也可以看出UDP的协议是不可靠的。
3、IP分片传输
当UDP把数据包给IP时,IP和搜索路径MTU,如果数据包过大会进行分片,在IP头里面,16bit识别号唯一记录了一个IP包的ID,具有同一个ID的IP片将会被重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表示中间的3bit标志则标示着该分片后面是否还有新的分片。这三个标示就组成了IP分片的所有信息,接受方就可以利用这些信息对IP数据进行重新组织,这样做到了数据的有序。
4、UDP和ARP之间的交互
当ARP高速缓存还是空的时候,如果数据包过大需要分片的时候,主机会把每一个IP包都发送一个arp查询,但是接收到了ARP的回应之后,却只会发送最后一个分片,却抛弃了其他,这是为了防止接收方被大量的无法组装的分片占满(同时接收方也会有一个超时的时间来避免),同时发送一个组装超时的报文,要求重新发送。