IP分组及转发
使用TCP/IP协议的网络层传输的基本数据单元(PDU)称为IP分组。通过IP分组完成不可靠、无连接的数据传输。IP分组由分组头(IP头)和数据区两部分组成。IP头包括20个字节的固定部分和变长(最长40字节)的可选部分
IP分组头
• 版本域(VERS)
长度为4bit,表示与IP分组对应的IP协议版本号,目前广泛使用的是IPv4
• 头部长度(HLEN)→ 接收方根据头部长度取后面的有用的信息
IP分组头长度,最小为5,最大为15,单位为32位(4个字节)
• 服务类型域(Type of Service,TOS),1个字节
3个优先级位(从000取到111);3个标志位D(Delay 延时)、T(Throughput 吞吐量)、R(Reliability 可靠性);2个保留位
※在IPv4协议中是没有使用到“服务于类型”的,因为IPv4是一个无连接的数据报的方式,因此所有的分组是独立地进行路由的,没有办法去指定哪一个分组的优先级高让它先传输的。但是在后面的版本中用到了
• 总长度域(Total length)
占16bit,指IP分组头和数据部分的总长度,单位为字节,因此数据报的最大长度为65535(216-1)字节
• 标识域(identification)
占16bit,用于唯一标识IP分组(相当于序号),用于IP分组的分段和重组
• 标志位
DF:Don't Fragment,用于指明IP分组是否允许分段,DF=0时允许
MF:More Fragments,用于表明是否有后续分段,MF=0标识最后一个分片
• 段偏移量(Fragment offset)
用于表明报文片在原始分组中的位置,分段和重组必用。除最后一个段外的所有段的长度必须是8字节(基本段长)的倍数
IP分段与重组举例
IP分段与重组举例.png需要传输的数据长度为4000,MTU(最大传输单元)为1500时,一次最大可以传1500字节,而这其中包含20字节的头部,因此第一个包和第二个包实际传输的数据长度均为1480,这样4000-1480x2=1040,再加上第三个包的头部20,因此要传的第三个包的长度为1060
1500-20(20:IP头部的固定长度)=1480,1480/8(8:基本段长)= 185(第二个分组的偏移量),接下来每个分组的偏移量都是185的倍数
例:一个IP分组,数据部分长度为8192字节,欲通过MTU=1500的局域网,如何分片,给出每个分片长度以及偏移量
答:标准IP头部20字节,MTU=1500,数据长度最多1480字节
第1个包:IP头20,数据1480,偏移量0,MF=1
第2个包:IP头20,数据1480,偏移量185,MF=1
第3个包:IP头20,数据1480,偏移量370,MF=1
第4个包:IP头20,数据1480,偏移量555,MF=1
第5个包:IP头20,数据1480,偏移量740,MF=1
第6个包:IP头20,数据792,偏移量925,MF=0
• 生存期(Time to live)
8比特,用于指明IP分组在网络中传输的最长时间。IP包每经过一个路由器TTL减1,为0则分组被丢弃
• 协议域(Protocol)
上层为哪种传输协议,TCP、UDP等
• 头校验和(Header checksum)
只对IP包头做校验
算法:每16位求反,循环相加(进位加在末尾),和再求反
有简单算法
• 源地址(Source address)和目的地址(Destination address)
32位IP地址
• 选项(Options)
变长,长度为4字节的倍数,不够则填充,最长为40字节
IP分组的转发
在Internet中,IP分组的转发具有如下特点:
每个IP分组包含目的主机的IP地址;IP地址中的网络地址唯一标识Internet中的一个物理网络;所有连接到相同物理网络的主机和路由器共享其地址中的网络地址部分,它们在这个网络上可以直接通信;Internet中的每个物理网络至少有一个与之相连的路由器
在路由器中根据目的IP地址,进行路由转发。路由器中的路由表格式如下表所示
IP分组的转发.png在路由表,目标网络通常是使用IP地址和子网掩码的形式来描述
☆在电脑命令中输入“route print”可以打印出该主机的路由表
子网互联示例
子网互联示例.png 路由器.png路由器总是具有两个或两个以上的IP地址。路由器的每一个端口都有一个不同网络号的IP地址
生成的R1的路由表
R1路由表.png最后的60.0.0.0的下一个路由也可以是30.0.0.0,距离为1
☆从一个节点到另一个结点可能会有很多条路径,但是路由表里会保存跳数最小的路径
IP分组的发送
IP分组的发送.pngIP地址与硬件地址
IP地址与硬件地址.pngIP分组的发送过程
IP分组的发送过程.png即当A和B在同一子网的时候如↓
A和B在同一子网.png当A和B不在同一子网并且和A相连的路由器为R1,和B相连的路由器为R2,通过R1,R2两个路由就可以把数据发给B的时候如↓
A和B不在同一子网.png与IP地址相关的一组协议
ARP:地址解析协议,解决网络层地址(IP地址)与数据链路层地址(MAC地址)的映射问题
ARP表用于中存放(IP地址,MAC地址)对:
☆可以在电脑命令中输入“Arp - a”来查看本主机的ARP表。每一台主机在开机的时候就会把它的MAC地址和IP地址以广播的方式发送出去,这样的话所有的这个网络号的主机都会有MAC地址和IP地址的映射,当有一个主机关机了,那么在其它主机上这台关机的主机的MAC地址和IP地址也会被删除
ARP报文格式
ARP报文格式.png ARP协议解释图.png在发送数据的时候是从网络层到数据链路层这样的顺序,因此知道IP地址之后也必须知道MAC地址才能找到目的主机。这时源主机(图中的A)会先发一个ARP请求包进行询问某IP地址的主机的MAC地址是什么。当这个主机(C)收到这样的请求包就会给A一个ARP响应包。然后A就会在它的ARP表里添加C的IP地址和MAC地址的内容
网关对帧的处理.png反向地址解析协议RARP
用于将一个已知的MAC地址映射到IP地址
RARP要依赖于RARP服务器,该服务器中有一张MAC地址与IP地址的映射表。
需要查找自己的IP地址的站点向网上发送包含有其MAC地址的RARP广播,RARP服务器收到后将该MAC地址翻译成IP地址予以响应
网友评论