网络层提供的两种服务
虚电路服务
当两台计算机进行通信的时候,先建立连接也就是虚电路VC,分组首部不需要完整的目的主机地址,只需要填写虚电路编号,如果再使用可靠传输的网络协议那么就可以使发送的分组无差错按序到达终点,不丢失,不重复。通信结束后释放虚电路。
数据报服务
互联网采用的设计思路是这样的:网络层只向上提供简单灵活的、无连接的、尽最大努力交付的数据报服务。那么,尽努力最大交付有哪些含义呢?
- 不保证源主机发送的IP数据报一定无差错地交付到目的主机
- 不保证源主机发送的IP数据报都在某一规定时间交付到目的主机
- 不保证源主机发送的IP数据报按发送顺序交付到目的主机
- 不保证源主机发送的IP数据报不会重复交付给目的主机
- 不故意丢弃IP数据报。丢弃数据报的情况有:路由器检测出首部检验和有错误;网络中通信量过大;路由器或者目的主机缓存没有空闲空间
网际协议IP
与IP协议配套的还有三个协议:地址解析协议ARP;网际控制报文协议ICMP;网际组管理协议IGMP
分类的IP地址
IP地址::={<网络号>,<主机号>}
这里A\B\C类地址都是单播地址
其中前面的0、10、110代表类别位,D类地址用于多播,E类地址保留为以后用
A类可以指派的网络号占一个字节,其中7位可以指派,但是可指派的126个,全零代表本网络,127代表本地回环测试,主机号3个字节最大主机数为,全零代表本主机连接的单个网络地址,全一代表连接此网络上的所有主机。B类网络可以指派的为,最小网络地址为128.1.0.0 最大主机数为。C类最小网络地址为192.0.1.0 可指派的网络数 主机数为
IP地址与硬件地址
从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址且是用软件实现的。这里要指出以下几点
- 在IP层抽象的互联网上只能看到IP数据报。
- 虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择。
- 在局域网的链路层,只能看见MAC帧。
地址解析协议ARP
ARP的作用是用来找到已知IP地址的物理地址,它规划在网络层中。每一台主机都有一个ARP高速缓存,如果此时主机缓存是空的,那么按照以下步骤工作
- ARP进程在本局域网上广播发送一个ARP请求分组
- 在本局域网上的所有主机运行的ARP进程都会收到此请求分组
- 主机B上的IP地址与ARP与请求分组的查询IP地址一致,收到分组并向主机A响应分组,此时的响应是单播
- 主机A收到分组后写入自己的缓存中
IP数据报格式
- 版本 占4位,指IP协议的版本。通信双方使用的版本必须一致。
- 首部长度 占4位 单位是4B(32位)固定长度20字节,因此你最小长度是5,而长度达到15*32=60B时,是最长长度。IP分组的首部长度必须是4字节的倍数,不是4的倍数要用填充字节填充。
- 区分服务 占8位
- 总长度 首部和数据之和的长度,单位为字节,16位
- 标识 占16位 在分片当中用来标识同一组数据
- 标志 占3位
MF DF 1 后面还有分片 最后一个分片了 0 不允许分片 允许分片 -
片偏移 占13位 相对用户数据字段起点,该片从何处开始,以8个字节为偏移单位,以一当八。
-
生存时间 占8位(TTL)也就是跳数限制,到达一跳之后先减一。
-
协议 占8位,表示要将数据部分交给哪个协议进行处理
协议名 ICMP IGMP IP TCP EGP IGP UDP IPV6 ESP OSPF 值 1 2 4 6 8 9 17 41 50 89 -
首部检验和 占16位只检验数据报的首部不检验数据部分
-
源地址 占32位
-
目的地址 占32位
划分子网和超网
子网
划分子网的方法是从网络的主机号借用几位来代表子网号,变成三级IP地址:
IP地址::={<网络号>,<子网号>,<主机号>}
由此得出了子网掩码:除主机号外其他用一连串的1代表,主机号用全0代表得到的二进制码就是子网掩码。而只要把子网掩码和IP地址逐位相与就能立即得到网络地址。如果一个网络没有划分子网,那么它的子网掩码就是默认子网掩码。
构造超网
变长子网掩码:划分子网的时候可以使用不同长度的子网划分,一般使用哈夫曼数来构造前缀都不同的子网。在此基础上又进一步研究出来了无分类编址CIDR;它消除了ABC类的限制其计法为:
IP地址::={<网络前缀>,<主机号>}
或者使用斜线记录或称为CIDR记法。由于一个CIDR地址块有很多地址,因此使用路由聚合(构成超网),这样路由项中一个就可以代表上千个路由,节约了空间。
最长路由匹配
由于使用了路由前缀这一方法,查找路由表时得到很多个匹配结果,那么选择哪个进行转发?正确的答案是:选择具有最长网络前缀的路由。
ICMP
ICMP报文种类有两种:ICMP差错报告报文和ICMP询问报文。
1)终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。 2)源点抑制。当路由器或主机因为拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。 3)时间超过。当路由器收到生存时间(TTL)为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据拫 片时,就把己收到的数据报片 都丟弃,并向源点发送时间超过报文。 4)参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。 5)改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发 送给另外的路由器(可通过更好的路由)。
对于以下几种情况,不应发送 ICMP 差错报告报文: 1)对ICMP 差错报告报文,不再发送 ICMP 差错报告报文。 2)对第一个分片的数据报片的所有后续数据报片,都不发送 ICMP 差错报告报文。 3)对具有多播地址的数据报,都不发送 ICMP 差错报告报文。 4)对具有特殊地址(如 127.0.0.0或 0.0.0.0)的数据报,不发送ICMP 差错报告报文。
PING使用了ICMP的回送请求和回送回答报文,是应用层直接使用网络层ICMP的例子,没有通过运输层。
互联网路由选择协议
IGP内部网关协议
RIP
RIP只适用于小型互联网 RIP协议的特点是:
(1)仅和相邻路由器交换信息。如果两个路由器之间的通信不需要经过另一个路由器,那么这两个路由器就是相邻的。RIP 协议规定,不相邻的路由器不交换信息。
(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表。也就是说,交换的信息是:“我到本自治系统中所有网络的(最短)距离,以及到每个网络应经过的下一跳路由器”。
(3)按固定的时间问隔交换路由信息,例如,每隔30 秒。然后路由器根据收到的路由信息更新路由表。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
对每一个相邻路由器发送过来的 RIP 报文,进行以下步骤:
(1)对地址为X 的相邻路由器发来的 RIP 报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的 “距离” 宇段的值加1。每一个项目都有三个关键数据,即:到目的网络 N,距离是 d,下一跳路由器是X。
(2)对修改后的 RIP 报文中的每一个项目,进行以下步骤:若原来的路由表中没有目的网络N,则把该项目添加到路由表中。否则即在路由表中有目的网络N,这时就再查看下一跳路由器地址,若下一跳路由器地址是×,则把收到的项目替换原路由表中的项目。
否则(即这个项目是:到目的网络 N,但下一跳路由器不是叉)
若收到的项日中的距离d小于路由表中的距离,则进行更新,否则什么也不做
(3)若了分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为16 (距离为16表示不可达)
RIP存在的问题是好消息传递快,坏消息传递慢。因为与邻居交换路由表时,某个已经不可达的网络仍然被邻居记录可达,得到错误的消息。
OSPF
OSPF 最主要的特征就是使用分布式的链路状态协议Cink state protocol),而不是像 RIP那样的距离向量协议。和RIP 协议相比,OSPF 的三个要点和 RIP 的都不一样:
(1)向本自治系统中所有路由器发送信息。这里使用的方法是洪泛法(1looding),这就是路由器通过所有输出端口向所有相邻的路由器发送信息。而每一个相邻路由器又再将此信息发往其所有的相邻路由器(但不再发送给刚刚发来信息的那个路由器)。这样,最终整个区域中所有的路由器都得到了这个信息的一个副本。更具体的做法后面还要讨论。我们应注意,RIP协议是仅仅向自己相邻的几个路由器我送信息。
(2) 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓“链路状态〞就是说明本路由器都和哪些路由器相邻°,以及该链路的
“度量”(metric)。OSPF 将这个“度量” 用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来快定,因此我为灵活。有时为了方便就称这个度量为“代价”。我们应注意,对于RIP协议,发送的信息是:“到所有网络的距离和下一跳路由器”。
(3)只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。而不像RIP 那样,不管网络拓扑有无发生变化,路由器之间都要定期交换路由表的信息。
OSPF使用IP数据报传送,有五种类型
类型 1,问候(fHe1lo)分组,用来发现和维持邻站的可达性。类型2,数据库描述(Database Description)分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。类型3,链路状态请求(Link State RequesD分组,向对方请求发送某些链路状态项目。类型 4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。这种分组是最复杂的,也是OSPF 协议最核心的部分。路由器使用这种分组将其链路状态通知给邻站。链路状态更新分组共有五种不同的链路状态。类型5,链路状态确认 (Link State Acknowledgment)分组,对链路更新分组的确认。
OSPF 规定,每两个相邻路由器每隔 10 秒钟要交换一次问候分组。
EGP外部网关协议
BGP
IPV6
其数据报的字段含义如下:
(1)版本 指明协议版本。(2)通信量类 区分数据报类别和优先级。(3)流标号(4)有效载荷长度 除基本首部以外的字节数。(5)下一个首部 没有扩展时就和协议含义一样,有首部就表示下一个首部的类型。(6)跳数限制 最大值为255。(7)源地址(8)目的地址
冒号十六进制表示:多个零用两个冒号代表,有且只能有一对冒号。
从IPV4到IPV6
双栈协议
若DNS返回的是IPv4地址,双协议栈的源主机使用IPv4地址,当DNS返回的是IPv6地址,源主机使用IPv6地址。IPv4转变回IPv6时,有些字段无法恢复。
隧道技术
相当于封装了一个IPv4隧道用于传输
IP多播
多播地址只能用于目的地址而不能用于源地址。如果在PING命令后键入多播地址,永远不会收到响应。
IGMP
IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出某个多播组。
IGMP 设计得很仔细,避免了多播控制信息给网络增加大量的开销。IGMP 采用的一些具体措施如下:
(1)在主机和多播路由器之间的所有通信都是使用 卫 多播。只要有可能,携带 IGMP报文的数据报都用硬件多播来传送。因此在支持硬件多播的网络上,没有参加 卫 多播的主机不会收到IGMP 报文。
(2)多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文(虽然也允许对一个特定组发送询问报文)。默认的询问速率是每125 秒发送一次(通信量并不太大)。
(3)当同一个网络上连接有几个多搭路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。因此,网络上多个多播路由器并不会引起IGMP 通信量的增大。
(4)在IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10秒)。当收到询问时,主机在0到N之间随机选择发送响应所需经过的时延。因此,若一合主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数。对应于最小时延的响应最先发送。
(5)同一个组内的每一台主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。这样就抑制了不必要的通信量。
多播路由选择协议
(1)洪泛技术(2)隧道技术(3)基于核心的发现技术
NAT
需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT路由器至少有一个有效的外部全球IP地址。
供内部使用的IP地址
A | 10.0.0.0~10.255.255.255 |
---|---|
B | 172.16.0.0~172.31.255.255 |
C | 192.168.0.0~192.168.255.255 |
RIP和BGP属于应用层;OSPF和ICMP属于网络层
移动IP
移动站A在归属网络时,按照传统TCP/IP方式通信;A漫游到被访网络时外地代理告诉A“我”去了哪里;归属代理知道了地址后从路由器转发隧道发送本应该发送A但是却误发给源地址的消息;A收到消息;
发送消息时源地址写归属网络地址发送;收消息时,又归属代理转发。因此无论如何移动,A收到的消息都是从归属代理转发的。
网络层设备
冲突域与广播域
冲突域是第一层概念而第一层的设备(集线器,中继器不能分割冲突域)而第二层设备(网桥,交换机)可以分割。第三层(路由器)也可以。
广播域被视为第二层概念。路由器可以分割。