网络层
设计思想:
网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务。
同时网络层不提供服务质量的保证即所传送的分组可能出错 丢失 重复是失序到达不了终点 。同时也不限制分组交付的时限制。
网际协议IP
1.地址解析协议即ARP协议
2.网际控制报文协议ICMP。ICMP的应用主要有ping 和 traceroute。
3.网际管理协议IGMP。
IP数据报
ip数据报格式
版本号:有4版本和六版本两个版本(共占4个字节)
首部长度:共占4位,最大值为15。值为1即表示一位32位字长的长度。因为首部固定字长为20字节,因此该长度最小为5最长为15。如果可选字段不是4的倍数即用尾部的填充字节来填充
区分服务:占8位,即用来获得更好的服务,但实际上一直未被使用。
总长度:指首部和数据之和的长度,总长度位16位 数据报最长的长度位2^16 -1=65535字节。ip层下面的数据链路层协议规定一个数据帧的数据字段最长长度即最大传送单元(MTU) 常规MTU值为1500字节,若所传送的数据报长度大于MTU值,就对过长的数据报进行分片处理。数据报首部中的总长度字段是指片后每一个分片的首部长度与该分片的数据长度综合
标识 :共占16位 在数据报过长产生分片的情况下,相同的数据报不同分片有相同的标识
标志 占3位目前只有前两位有意义,标志最低位记为MF。MF=1即标识后面还有分片的数据报文。MF=0表示已是数据报片中最后一个。种据一位记为DF,意思为不能分片,只有DF=0时才允许被分片。
片偏移 占13为 与标识符一起使用。除最后一个数据报片外,每个分片的长度一定是8字节的整数倍。
生存时间 占8位即TTL 表面数据报在网络中的寿命,产生的原因是为了防止无法交付的数据在互联网中不断的循环,以路由表跳转发级数为单位。
协议占8位 ,协议字段指出此数据报携带的数据使用那种协议,指出携带的数据应该上交给那个协议进行处理。
首部检验和 占16位,因为数据报每经过一个,都要重新计算检验和,只检验数据报的首部,但不包括数据部分,可减少计算所需的工作量。
目的地址
源地址
IP编址方法
1.分类的ip地址 2.子网的划分3.无分类
分类
由两部分组成 网络号+主机号
网络号中全0的地址是个保留地址,意思为本网络。 全1则保留作为本地软件作循环测试用 主机号中全0的主机号字段标识该ip地址是本主机所连接的单个网络。全1则表示该网络上所有主机。
A类和B类以及C类都是单播地址即一对一通信。 网络号前3位为类别位。
D类地址前4位位1110 用于多播即一对多通信,E类保留为以后使用
ip地址不仅仅指明一台主机,还指明了主机所连接到的网络。
2.子网划分
在主机号中拿出一部分来作为子网号,把两级ip分成3级ip地址,用使用子网必须配备子网掩码,子网掩码在外部时看不出来的
3.无分类
消除了传统的A类B类C类地址以及划分子网的概念,使用前缀号和主机号来对ip地址进行编码
地址解析协议ARP
即以指导主机和路由器的ip地址 需要找出其相应的硬件地址,ARP即用来解决这样的问题。ARP协议主要是为了从网络层使用的ip地址,解析出在数据链路层使用的硬件地址。
ARP是解决同一个局域网上的主机和路由器ip地址和硬件地址的映射问题。
每一台主机都设有一个ARP高速缓存,主机ARP高速缓存中存放一个从ip地址到硬件地址的映射表。这个映射表经常动态的更新。
当查找不到B相应的IP地址时,这时候可能由于主机B才刚入网,也有可能主机A刚通电因此高速缓存是空的,此刻主机A就是启动相应的ARP。
(1)ARP进程在本局域网上广播发送一个ARP请求分组.
(2)在局域网中所有主机运行的ARP进程都收到此ARP请求分组
(3)主机B的ip地址与ARP请求分组中要查询的ip地址一致,收下此请求。并向主机A发送ARP响应分组,同时在此ARP响应分组中写入自己的硬件地址。虽然ARP请求分组时广播发送的,但是其响应分组则是普通的单播,即一个源地址发送到另一个目的地址。
(4)主机A收到主机B的ARP响应分组后,在其ARP高速缓存中写入主机B的ip地址到硬件地址的映射。
ARP对保存在高速缓存中的没一个映射地址项目都设置了生存时间,一旦超过了此时间项目就从高速缓存中删除。设置生存时间的必要性:防止主机的网络适配器突然坏掉,更换后硬件地址就改变了,如果二者还要继续通信,
A在其高速缓存中查找到B原先的硬件地址,并向B发送数据帧,B的原先的硬件地址已经失效掉,因此A找不到B,但是过了一段不长的生存时间后,A的ARP高速缓存器删除了B原先的硬件地址,A又重新广播发送ARP连接请求。
子网掩码
子网掩码和收到的数据报的目的ip地址进行逐位与运算即可得出所要寻找的网络地址。使用子网掩码也是为了便于查找路由表 同样的IP地址和不同的子网掩码可以得出相同的网络号
ICMP网络控制报文协议
icmp是为了更高效的转发ip数据报和提高交付成功的机会。它封装在ip层中但是不属于高层协议。
ICMP前4个字节是统一格式:类型,代码,检验和。
icmp 网络控制报文协议又分为差错报告报文和询问报文
Ping
ping使用了ICMP回送请求和回送回答报文,ping是应用层直接使用网络层ICMP的一个例子。没有通过TCP和UDP。
Traceroute
是ICMP的另一个应用。用来跟踪分组从源点到终点的路径。
首先其发送为IP数据报封装好的无法交付的UDP用户数据报。并由目的主机发送终点不可达差错报告报文。
源主机向目的主机发送一连串的 IP 数据报。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文;
源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。
不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。
之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。
路由选择协议
路由选择协议都是自适应的,能随着网络的通信量和网络拓扑的变化而自发的适应调整
互联网划分出许多小的自治系统(AS).每个AS都可以使用和其他AS不同的路由选择协议。
路由选择协议可分为两大类
(1)内部网关协议IGP 如RIP和OSPF
(2)外部网关协议EGP 如BGP
内部网关协议 RIP
RIP是一种分布式的基于距离向量的路由选择协议,最大优点简单。其要求网络中每一个路由器都要维护从它自己到其他每一个目的网络的距离记录,其只允许距离最大为15.多用于小型的互联网
RIP仅和相邻近的路由器交换信息 经过若干次交换后所有路由器最终知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。
距离向量算法
对地址为 X 的相邻路由器发来的 RIP 报文,先修改报文中的所有项目,把下一跳字段中的地址改为 X,并把所有的距离字段加 1;
对修改后的 RIP 报文中的每一个项目,进行以下步骤:
若原来的路由表中没有目的网络 N,则把该项目添加到路由表中;
否则:若下一跳路由器地址是 X,则把收到的项目替换原来路由表中的项目;否则:若收到的项目中的距离 d 小于路由表中的距离,则进行更新(例如原始路由表项为 Net2, 5, P,新表项为 Net2, 4, X,则更新);否则什么也不做。
若 3 分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离置为 16。
内部网关协议OSPF
ospf 不用udp而是用ip数据报传送的
开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。
开放表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra 提出的最短路径算法 SPF。
OSPF 具有以下特点:
向本自治系统中的所有路由器发送信息,这种方法是洪泛法。
发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。
只有当链路状态发生变化时,路由器才会发送信息。
所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。
外部网关协议
BGP(Border Gateway Protocol,边界网关协议)
AS 之间的路由选择很困难,主要是由于:
互联网规模很大;
各个 AS 内部使用不同的路由选择协议,无法准确定义路径的度量;
AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。
BGP 只能寻找一条比较好的路由,而不是最佳路由。
每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。
虚拟专用网 VPN
由于 IP 地址的紧缺,一个机构能申请到的 IP 地址数往往远小于本机构所拥有的主机数。并且一个机构并不需要把所有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的 IP 地址(专用地址)。
有三个专用地址块:
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
VPN 使用公用的互联网作为本机构各专用网之间的通信载体。专用指机构内的主机只与本机构内的其它主机通信;虚拟指好像是,而实际上并不是,它有经过公用的互联网。
下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。
网络地址交换NAT
专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。
在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。
路由器结构
路由器从功能上可以划分为:路由选择和分组转发。
分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。
路由表分组转发流程
从数据报的首部提取目的主机的 IP 地址 D,得到目的网络地址 N。
若 N 就是与此路由器直接相连的某个网络地址,则进行直接交付;
若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给表中所指明的下一跳路由器;
若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器;
若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;
报告转发分组出错。