计算机网络Computer Networking(九、网络层,上)

Apr 17, 2017


参考来源:原创

核心内容

(一)网络层的功能

  • 异构网络互联
  • 路由与转发
  • 拥塞控制

(二)IP协议

  • IPv4分片
  • IPv4编址与NAT
  • 子网划分与子网掩码(CIDR)
  • ARP协议, DHCP协议, 与ICMP协议
  • IPv4和IPv6的区别

(三)ICMP协议

  • 作用和分类
  • ping, traceroute


(四)路由选择协议

  • 自治系统
  • 域内系统与域间路由
  • RIP路由协议
  • OSPF路由协议
  • BGP路由协议

(五)路由算法

  • 静态路由与动态路由
  • 距离向量路由算法
  • 链路状态路由算法
  • 层次路由

网络层的功能

转发:当一个分组到达路由器的一条输入链路的时候,路由器要给它选择一条输出链路输出

路由选择:当分组从发送方流向接收方时,网络层要决定这些分组所采用的路由或路径

注意: 转发是对网络层中的单个路由器而言,路由选择是对网络层中所有的路由器

因特网网络层三个主要组件:

  • IP协议
  • 路由选择
  • ICMP

image

IP协议

IP数据报报文

image

一些解释:

重组标识,标志(flag),段偏移量:用于IPv4的分片

生存时间(寿命):确保数据包不会永远在网络中循环,没经过一台路由器,该值减一,直到为0

目的IP地址:由主机通过DNS服务器决定,在应用层中便已经得到

IP数据报分片

先看一道题:

image

看不懂先没关系,一个个解释。

引入目的:防止IP数据单元可能大于链路最大可以承受的单元MTU,例如IP数据报长度4000字节,而MTU = 1500字节,这岂不是GG

那怎么办呢:自然是把4000个字节分成三个部分,三个部分的顺序不能乱,数据也不能丢,每个部分都要有IP首部。

怎么保证顺序不乱呢:加入了片偏移量,片偏移量是该报文的首部位于原始块【真实数据】的位置/8

怎么保证这几个片是一个部分呢:加一个flag(标志),1表示下面还有东西,0表示这个部分结束了。并且还有一个叫做标识的东西,是16比特,一个部分的标识都是相等的

这题详解:

4000字节的数据 = 20首部 + 3980字节的真实数据

分成三个部分:

1. 20首部+1480真实数据,标识为x, flag = 1(表示下面还有东西),偏移为0(头所在的位置就在0的位置)
2. 20首部+1480真实数据,标识为x, flag = 1(表示下面还有东西),偏移为1480/8 = 185(头所在的位置是原始块真实数据的1480的位置,除以8就是偏移量)
3. 20首部+1020真实数据(3980-1480-1480), 标识为x,flag = 0(表示下面没有东西了),偏移为1480*2/8 = 370(头所在的位置是原始真实数据的1480*2的位置,除以8就是偏移量)

IPv4编址

IP地址:给每个连接在因特网上的主机(或路由器)分配一个在全世界唯一的32位标识符,由因特网名字和号码指派公司(ICANN)进行分配。均由(网络号-主机号)的格式组成。

分类:

  • A类,IP地址的第一位为0, 范围在:1.0.0.0~127.255.255.255, 主机号24位,总主机有2^24-2 = 16777214台
  • B类,IP地址的前两位为10, 范围在: 128.0.0.0~191.255.255.255,主机号16位,总主机有2^16-2 = 65534台
  • C类,IP地址的前两位为110, 范围在: 192.0.0.0~223.255.255.255, 主机号8位,总主机有2^8-2 = 254台

NAT与DHCP

这两个概念我最开始分不清楚,很模糊,现在看倒还好。

先说一个例子:假设服务商给公司只提供了一个IP,但是有100台主机,这可怎么办。于是通过一个DHCP服务器,给100台主机分配动态的IP,当然这些IP都是伪IP,不能直接访问因特网,所以要通过NAT,NAT将内部IP地址映射到某个端口上,转换为因特网可以识别的地址,这样就能正常上网了。

主要区别: DHCP快速分配IP地址,NAT让这些IP可以访问因特网。

逐个解释:

DHCP(Dynamic Host Configuration Protocol): 动态主机分配协议,它分为两个部分:服务器端和集中管理的客户端。DHCP服务器用来对所有的IP集中管理,负责处理客户端的DHCP要求。客户端用来获得服务端分发的IP。

DHCP注意: 有一个租用地址的时期,相当于我有很多的地址,如果你需要,我就借你用一段时间,到期了就换给我。它有一个IP池,哪个计算机来申请的话,就从IP地址池捞一个起来,租给你用,用完还给我。

NAT(Network Address Translation): NAT和IP伪装是一个概念。NAT会自动将每一台PC在内网的LAN IP地址,在离开防火墙时转换成公网的IP地址,此外,数据包返回的时候,也进行逆向的转换。

IPv4和IPv6的区别

区别 IPv4 IPv6
地址空间 32 128
路由表
组播
流控制

ICMP

有的时候啊,运行一个FTP,HTTP会话,会遇到一些【目的网络不可达】这样的错误报文。这些报文就是在ICMP中形成的。

ICMP报文承载在IP分组中

作用:支持主机或路由器,1.差错报告,2.网络探询

两类ICMP报文:

  • 差错报告报文
    • 目的不可达
    • 源抑制
    • 超时超期
    • 参数问题
    • 重定向
  • 网络探询
    • 回声请求与应答报文
    • 时间戳请求与应答报文

Traceroute: 跟踪程序,允许我们跟踪从一台主机到世界上任意一台主机的路由。这个东西灰常因缺思厅。就是源主机发送一大堆普通的IP数据报,然后将TTL(寿命)设为1,2,3…这样,当路由器收到数据报时,寿命为0的数据报要丢弃,同时返回一个ICMP报文,包含了路由器的名字和它的IP地址,所以发送n个IP数据报,最后到达目的主机,返回n个ICMP报文,就能知道这一条路由线路了..

还有一些其他的繁琐的破地方,不知道要不要掌握,先空出来。