TCP/IP学习笔记(4)
2010-04-03 20:34:36 来源:WEB开发网3、IP分片
任何IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据,并查询该接口的MTU。IP把MTU与数据报的长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发送在中间路由器上。IP数据报分片后,只有到达目的主机后才进行重装。
IP首部与分片有关的字段:
(1)对于每份IP数据报来说,都有一个标识字段,该值在分片时被复制到每个片中。
(2)标志字段用其中一个bit表示“更多的片”,除最后一片外,其他每个分片都要设置为1。
(3)片偏移字段指的是该片偏移原始数据报开始处的位置。
(4)数据报被分片后,每个片的总长度要改为该片的长度值。
(5)标志字段中有一个bit表示“不分片”,如果该位1,IP将不对数据报进行分片。IP报即使丢失一片数据报也要重传整个数据报。为什么呢?因为IP层没有超时重传的机制,必须由更高层负责超时重传。
4、ICMP不可达差错(需要分片)
当路由器收到一份需要分片的数据报,而在IP首部又设置了不分片(DF)的标志位。如果需要判断到达目的端的路途中最小MTU是多少,就可以通过这个差错实现。
报文格式如下:
类型3 | 代码4 | 检验和 |
保留,必须为0 | 下一站的MTU | |
IP首部+原始IP数据报中数据前8位 |
可以用Traceroute确定路径MTU。要做的是发送分组,并设置“不分片”标志位。发送的第一个分组的长度正好与出口MTU相等,每次收到ICMP“不能分片”差错时,就减少分组的长度。如果路由器发送的ICMP差错报文是上面格式,包含出口的MTU,那么就用该MTU值来发送,否则就用下一个最小的MTU值来发送。MTU值的个数是有限的,因此可以取得路径的MTU。
5、UDP服务器的设计:
(1)客户IP地址及端口号:Ip首部包括源端和目的端IP地址,UDP首部包括了远端和目的端的端口号。
(2)目的IP地址
(3)UDP输入队列:通常程序所使用的每个UDP端口都与一个有限大小的输入队列相联系。也就是来自不同客户的差不多同时到达的请求将由UDP自动排队,接收到的UDP数据报以其接收顺序交给应用程序。
(4)限制本地IP地址:大多数UDP服务器在创建UDP端口时都使其本地IP地址具有通配符的特点,表明进入的UDP数据报如果其目的地位服务器端口,那么在任何本地接口均可接收到它。如果该端口设置位某接口的端口号,则只有发送给该接口的UDP数据报能收到。可以在同一个端口上启动多个服务器,如以太网有一个,以太网广播有一个。
(5)限制远程IP地址:UDP也可以设定只能收到指定IP地址和端口号的UDP数据报。
二、广播
1、受限的广播:受限的广播地址是255.255.255.255,该地址用于主机配置过程中IP数据报的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。在任何情况下,路由器都不转发目的地址为受限广播地址的数据报,这样的数据报只出现在本地网络中。
2、指向网络的广播:指向网络的广播地址是主机号全为1的地址,A类网络广播地址为netid.255.255.255,其中netid为A类网络的网络号。
3、指向子网的广播:指向子网的广播地址是主机号全为1的地址,作为子网直接广播的IP地址需要知道子网的掩码。如果B类网络128.1的子网掩码是255.255.255.0,则地址128.1.2.255就是对应子网的广播地址。
4、指向所有子网的广播:指向所有子网的广播也需要知道目的网络的子网掩码。这些广播地址的子网号和主机号全为1。如果目的子网掩码是255.255.255.0,那么IP地址128.1.255.255就是一个指向所有子网的广播地址。
更多精彩
赞助商链接