这是我参与更文挑战的第2天,活动详情查看: 更文挑战
五层的网络模型
网络层
向上层提供简单灵活, 无连接的, 尽最大努力交付的数据报服务
网络在发送分组时无需先建立连接. 每个分组独立发送.
网络层不提供服务质量的承诺. 即分组可能丢失, 出错, 重复和失序.
网际协议IP
IP是网络层TCP/IP体系中最重要的协议之一
IP协议通常与ARP(地址解析协议), ICMP(网际控制报文协议), IGMP(网际组管理协议)配套使用
如何将异构的网络互相连接起来
可以通过中间设备将网络互相连接起来
中间设备有以下五种
- 转发器 - 物理层中继系统
- 网桥或桥接器 - 数据链路层中继系统
- 路由器 - 网络层中继系统
- 桥路器 - 网格和路由器的混合物
- 网关 - 网络层以上的中继系统
虚拟互连网络的意义
物理网络上的异构性是客观存在的, 逻辑上网络是互连的, 在用户看来就像是一个统一的网络
当互联网上的主机间进行通信时, 就像在一个网络上一样, 而看不见各个具体网络的异构细节
IP地址的结构
IP地址的分类
IP地址采用点分十进制记法, 可以提高可读性
32位的IP地址: 11000000 10101000 00000001 00001010
每八位转换为十进制数: 192.168.1.10
IP地址的指派范围
网络类别 | 最大可指派网络数 | 第一个可指派网络号 | 最后一个可指派网络号 | 每个网络中最大主机数 |
---|---|---|---|---|
A | 126(2^7 -2) | 1 | 126 | 16777214 |
B | 16383(2^14-1) | 128.1 | 191.255 | 65534 |
C | 2097151(2^21 - 1) | 192.0.1 | 223.255.255 | 254 |
IP地址的特点
- IP地址是一种分等级的地址结构, 方便管理, 减少路由表所占用存储空间
- IP地址标志一个主机和一条链路的接口, 一个路由器至少应当有两个不同的IP地址
- 用转发器或网桥连接起来的局域网仍为一个网络, 具有同样的网络号
- 所有分配到网络号的的网络, 不论范围大小, 都是平等的
ARP地址解析协议
通过IP地址, 使用ARP找出相应的硬件地址
ARP从网络层使用的IP地址, 解析出在数据链路层使用的硬件地址
每一个主机都有一个ARP高速缓存, 用来存储IP地址到硬件地址的映射表
ARP的运行过程
当主机A向本局域网中的主机B发送IP数据报时, 先在ARP高速缓存中查看有无主机B的IP地址
如果有, 取出对应的硬件地址, 并写入MAC帧, 然后通过局域网将该MAC帧发往此硬件地址
如果没有, ARP在局域网上广播一个ARP请求分组. 收到ARP响应分组后, 将IP地址到硬件地址的映射写入ARP高速缓存
如果主机A和主机B不在同一个局域网时, 要通过ARP找到一个位于本局域网的某个路由器的硬件地址, 然后把分组发送给这个路由器, 再由这个路由器把分组转发给下一个网络.
ARP高速缓存的作用
存放最近获得的IP地址到MAC地址的映射, 以减少ARP广播的数量
主机A发送ARP请求分组时, 将自己的IP地址到硬件地址的映射写入ARP请求分组
主机B收到A的ARP请求分组时, 就将分组中的地址映射写入主机B的ARP高速缓存.
###使用ARP的四种典型情况
- 发送方是主机, 把IP数据报发送到本网络的另一个主机. 使用ARP找到目的主机的硬件地址
- 发送方是主机, 把IP数据报发送到另一网络的一个主机. 使用ARP找到本网络上的一个路由器的硬件地址. 剩下的工作由这个路由器来完成
- 发送方是路由器, 把IP数据报发送到本网络的另一个主机. 使用ARP找到目的主机的硬件地址.
- 发送方是路由器, 把IP数据报发送到另一个网络的主机. 使用ARP找到本网络上的另一个路由器的地址. 剩下的工作由这个路由器来完成
IP数据报的格式
IP数据报由首部和数据现部分组成
首部的前一部分是固定长度20字, 所有IP数据报必有
首部的后一部分是可选字段, 长度是可变的
版本 - IP协议的版本, 占4位, 目前常用的版本为IPv4
首部长度 - 占4位, 可表示的最大数值为15个单位, 一个单位为4字节, 因此IP首部的最大长度为60字节
区分服务 - 占8位, 一般情况下不使用这个字段
总长度 - 占16位, 首部+数据长度, 因此数据报的最大长度为65535字节, 不能超过MTU
MTU - 最大传送单元
标识 - 占16位, 一个计数器, 用来产生数据报的标识
标志 - 占3位, 只使用了前两位
最低位是MF(More Fragment) - MF = 1表示还有分片, MF = 0表示最后一个分片
中间位是DF(Don't Fragment) - DF = 0允许分片, DF = 1不允许分片
片偏移 - 占13位, 标明某片在原分组中的相对位置, 以8个字节为偏移单位
生存时间 - 占8位, 记为TTL(Time to Live), 数据报在网络中可以通过路由器数量的最大值
协议 - 数据报携带的数据使用何种协议
首部检验和 - 占16位, 只检验数据报的首部, 不检验数据部分
源地址 - 占4字节
目的地址 - 占4字节
可变部分 - 1 - 40个字节
路由器分组转发算法
- 从数据报的首部提取目的主机的IP地址D, 得出目的网络地址为N
- 如果网络N与此路由器直接相连, 则把数据报直接交付目的主机D, 否则间接交付, 执行步骤3
- 如果路由表中有目的地址为D的特定主机路由, 则把数据报传送给路由表中所指明的下一跳路由器; 否则, 执行4
- 如果路由表中有到达网络N的路由, 则把数据报传送给路由表中指明的下一跳路由器; 否则, 执行5
- 如果路由表中有一个默认路由, 则把数据报传送给该默认路由; 否则, 执行(6)
- 报告转发分组出错
路由表
路由表不会指出分组到达某个网络的完整路径
路由表只能指出分组到达某个网络先到哪个路由器
到达下一跳路由器后, 查找路由表, 知道再下一跳的路由器
如此循环, 直到最后到达目的网络