网际层主要实现两个功能:
-
逻辑寻址
-
路由选择
寻址与发送
在一个路由式网路中,TCP/IP软件受用如下策略在网络上发送数据。
- 如果目标地址与源地址在同一网段,源计算机就把数据包直接发送给目的计算机,IP地址被ARP解析为物理地址,数据被直接发送到目的网络适配器。
- 如果目的地址与源地址不在一个网段,就如下执行
- 直接发送到网关,网关地址被ARP解析为物理地址,数据被发送到网关的网络适配器。
- 数据报被网关路由到较高级别的网段,再次重复上述过程。如果目的地址在这个网段,数据就被发送到目的,否则就会发送到另一个网关。
- 在目的网段,目的IP地址被ARP解析为物理地址,数据被发送到目的网络适配器。
IP报头字段
- 版本:四个字节
- 网际报头长度(IHL):表示IP报头以多少个32位为单位的长度,四个字节
- 服务类型:区分优先度,8字节
- 总长度:表示IP数据报的总长度,16字节
- 标识:16个字节依序变大,用于接收端重组分段的数据报
- 标记:这个字段表示分段的可能性 4字节
- 分段位移
- 生存时间(TTL):当TTL为0的时候,数据报被抛弃
- 跳数:到达目的之前必须经过的路由器的数量
- 协议:例如TCP,UDP,ICMP
- 报头校验和:检验报头是否有效
- 源IP地址
- 目的IP地址
- IP选项:一些可选的报头设置
- 填充:保证报头是32的倍数
- IP数据载荷
IP地址
A类地址: 以0开头(0~127)
排除地址:10.0.0.0~10.255.255.255 127.0.0.1~127.255.255.255
B类地址:以10开头(128~191)
排除地址:172.16.0.1~172.31.255.255
C类地址:以110开头(192~223)
排除地址:192.168.0.0~192.168.255.255
不过现在流行的CIDR,于IP地址的分类已经不是那么的重要
ARP
ARP缓存
RARP
ICMP
路由选择
为什么要路由,前面章节提到过,网咯中网络适配器需要监听网络中的每一个传输,以确保是否消息发送到它的物理地址。随着网络的发展,这显然不能实现,所以我们要使用设备(像路由器)将网络分段,而IP地址则是在路由中和路由与路由之间寻址的方法。
IP地址只属于网络适配器,而不是属于计算机。一台计算机可以有多个IP地址,这取决于它拥有多少个网络适配器。
路由选择过程
当路由器的端口超过两个时,将数据传输到哪里就是一个问题,而且路由器不仅在子网内传输数据,也需要和其他网络连接。
路由选择一般有这5个步骤:
- 路由器从所连接的网络之一接受数据
- 路由器将数据传递到协议栈的网际层,抛弃底层的报头,找到IP报头信息。
- 路由器检查IP报头中的目的地址
- 如果IP在其他的网络,路由器就会根据路由表决定去哪里转发数据
- 让数据通过选择好的适配器进行传输
其中路由表的建立至关重要,路由的类型主要有两种,也是路由表来源的两种途径:
- 静态路由
- 路由表更新依靠系统管理员
- 动态路由
- 路由表更新依靠其他路由器
静态路由需要手动配置,所以不能根据网络的变化实时更新,除了一些特别的场合,并不会使用。
路由表就是把目的网络ID映射到下一跳的IP地址,即数据报通往目的网络的下一站,,下一跳可以是目的网络,也可以是通向目的网络的下一个下游路由器。
动态路由算法
- 距离矢量路由
路由器周期性地接受邻居的路由器传来的报告,如果有新的网段,就跳数加1添加。如果有重复,就比较跳数和跳数+1,小者添加。
- 连接状态路由
每台路由器都定期向网络发送信息,列出自己直连的其他路由器以及链路的状况,路由器利用从其他路由器收到的状态消息建立网络拓扑的映射,在需要发送数据的时候,寻找最优的路线。