全部博文(403)
分类: 系统运维
2006-09-26 17:11:56
TCP/IP学习笔记(四)
作者:
一、UDP协议
UDP 是一个简单的面向数据报的运输层协议,进程的每个输出操作都产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP不提供可靠性。
UDP封装格式:
IP首部(20) | UDP首部(8) | UDP数据 |
1、UDP首部:
16位源端口号 | 16位目的端口号 |
16位UDP长度 | 16位UDP检验和 |
数据(如果有) |
端口号表示发送和接收的进程。
UDP长度字段指的是UDP首部和UDP数据的字节长度,该字段的最小值是8,表示没有数据。该长度不包括IP首部长度。
UDP检验和包括UDP首部和UDP数据的检验和。由于UDP数据报的长度可以为奇数字节数,因此计算时在最后增加填充字节0,这只是为了检验和的计算。
2、 UDP检验和
UDP和TCP首部都包含一个12字节的伪首部,包含了IP首部和自身的一些字段,主要是为了计算检验和而设置的。伪首部是不占实际空间的。伪首部包含IP首部的一些字段,目的是让UDP两次检查数据是否已经到达目的地,以及IP层是否正确地传输了数据。
UDP伪首部格式如下:
32位源IP地址 | ||
32位目的IP地址 | ||
0 | 8位协议(17) | 16位UDP长度 |
16位源端口 | 16位目的端口 | |
16位UDP长度 | 16位UDP检验和 | |
数据(如果有) |
前12个字节就是UDP伪首部。
注意:UDP数据报的长度在检验和计算过程中出现两次。如果检验和的计算结果为0,则存入的值为全1(65535),如果传送的检验和是0,则说明发送端没有计算检验和。如果有错误,该报就被丢弃,不产生任何差错报文。
3、 IP分片
任何IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据,并查询该接口的MTU。IP把MTU与数据报的长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发送在中间路由器上。IP数据报分片后,只有到达目的主机后才进行重装。
IP首部与分片有关的字段:
类型3 | 代码4 | 检验和 |
保留,必须为0 | 下一站的MTU | |
IP首部+原始IP数据报中数据前8位 |
可以用Traceroute确定路径MTU。要做的是发送分组,并设置“不分片”标志位。发送的第一个分组的长度正好与出口MTU相等,每次收到ICMP“不能分片”差错时,就减少分组的长度。如果路由器发送的ICMP差错报文是上面格式,包含出口的MTU,那么就用该MTU值来发送,否则就用下一个最小的MTU值来发送。MTU值的个数是有限的,因此可以取得路径的MTU。
5、 UDP服务器的设计:
1 | 1 | 1 | 0 | 28位多播组ID |
1、多播地址包括为1110地最高4位和多播组号:
范围为:224.0.0.0到239.255.255.255。能够接收发往一个特定多播组地址数据地主机集合称为主机组,一个主机组可以跨越多个网络。主机组中成员可随时加入或离开主机组,主机组中对主机地数量没有限制,同时不属于某一主机组地主机可以向该组发送信息。
一些多播组地址为知名地址:
224.0.0.1-该子网内地所有系统组 224.0.0.2-该子网内地所有路由器组 224.0.1.1-网络时间协议NTP 224.0.0.9-RIP2 224.0.1.2-SGI公司的dogfight应用
2、多播地址到以太网地址的转换:
IANA拥有一个以太网地址块,即高位24位为00-00-5e,这意味这该地址块所拥有的地址范围从00-00-5e-00-00-00到00-00-5e-ff-ff-ff。IANA将其中的一般分配为多播地址。为了指明一个多播地址,任何以太网地址的首字节必须为01,这意味者与IP多播相对应的以太网地址范围从01-00-5e-00-00-00到01-00-5e-7f-ff-ff。
这种地址分配将使以太网多播地址的23位与IP多播组号相对应起来,通过将多播组号中的低23位映射到以太网地址中的低23位事项。
由于多播组号中的最高5位在映射过程中被忽略,因此每个以太网多播地址对应的多播组是不唯一的,32个不同的多播组号被映射位一个以太网地址。例如,多播地址224.128.64.32(16进制为e0-80-40-20)和224.0.64.32(16进制为e0-00-40-20)都映射为同一以太网地址01-00-5e-00-40-20。
既然地址映射不是唯一的,那么设备驱动层或IP层就必须对数据报进行过滤,因为网卡可能收到主机不想接收的多播数据帧。
四、IGMP:Internet组管理协议
IGMP 让一个物理网络上的所有系统知道主机当前所在的广播组。多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。IGMP也被当作IP层的一部分,IGMP报文通过IP数据报进行传输,其报文格式如下:
4位版本1 | 4位类型(1-2) | 未用 | 检验和 |
32位组地址(D类IP地址) |
IGMP类型位1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。
检验和的计算和ICMP协议一样。
组地址为D类IP地址,在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。
1、加入一个多播组
进程以某种方式在给定的接口上加入某个多播组,进程也能离开先前加入的多播组。一个进程可以在多个接口上加入同一多播组。主机通过组地址和接口来标识一个多播组。主机必须保留一个表,该表中包含所有至少含有一个进程的多播组及多播组中的进程数量。
2、IGMP报告和查询
多播路由器通过IGMP报文来记录与该路由器相连网络中组成员的变化情况,规则如下:
作者:肖进
单位:南京中萃食品有限公司 资讯部
邮件:
电话:025-58642091