第5章网络互联与因特网基础
?本章内容
?网络互联的基本概念
?因特网的体系结构
?因特网接入技术
?因特网的链路层与网络层
?因特网的传输层协议
5.1 网络互联的基本概念
?数据链路层:网桥/交换机
在网段之间转发数据帧。
根据数据帧中的信息(MAC地址)进行转发。
?网络层:路由器
在网络之间转发报文分组。
根据分组中的逻辑地址(IP地址)进行转发。
网络互联的归纳
?物理层:使用中继器或集线器在不同的电缆段之间复制位信号,无寻址功能;?数据链路层:使用网桥或交换机在局域网之间存储转发数据帧,用MAC地址寻址;?网络层:使用路由器在不同的网络之间存储转发分组,用IP地址寻址;
?传输层及应用层:使用网关提供更高层次的互连,用端口号或其他特定标识寻址。
5.2 因特网体系结构
?因特网是世界上最大的互联网络,具有开放性。
?1974年,斯坦福大学的两位研究员瑟夫(cerf)和康恩(kahn)提出了开放网络的四项原则:
?小型化、自治:每个网络可以自行运作,当需要进行网间互联时无需改变其内部结构。
?尽力而为的服务:互联网络仅提供尽力而为的服务,如果需要可靠的通信,则由发送端通过重传丢失的报文来实现。
?无状态路由器:互联网络中的路由器不保存任何现行连接中已经发送过的信息流状态。
?非集中控制:在互联网络中不存在全局性的控制机制。
?因特网是一个开放网络的典型例子。
?为满足开放网络的要求,因特网从1983年开始引入并使用TCP/IP协议栈(Transmission Control Protocol / Internet Protocol)。
?TCP/IP不是单一的协议,而是由数十个具有一定层次结构的协议组成的一个协议集。而TCP和IP是该协议中两个最重要的协议。
?整个TCP/IP协议集的框架被称为TCP/IP体系结构或简称为TCP/IP。
?由于TCP/IP协议在因特网中的广泛使用,现在人们常常把TCP/IP协议称为因特网协议。
5.3 因特网的接入
?因特网的接入是指如何把用户的计算机连接到因特网的接入点——因特网的边缘路由器
?因特网接入采用了广域网连接技术。
?从用户类型划分,因特网接入分为:
?住宅(居民区)接入
?机构接入
?移动用户接入
居民区因特网接入:拨号和ADSL
?模拟调制解调器通过电话网拨号上网
?用户计算机通过电话拨号与因特网服务提供商建立连接,在用户本地环路上传输的是模拟信号
?拨号接入的速率最高不超过56kb/s
? ADSL(非对称用户线路)
?在用户本地电话线环路上采用数字信号传输技术,能够在一条上同时提供话音服务和数据通信服务,但其下行传输速率可达到8Mb/s,上行传输速率也能达到将近1Mb/s
?上下行速率不对称的特点非常适用于上网目的以因特网浏览为主的用户
居民区因特网接入: 线缆调制解调器
?HFC:Hybrid Fiber Coax(光纤同轴电缆混合网络)
?非对称:下行可达10Mb/s,上行为1Mb/s
?HFC将家庭用户连接到 ISP的路由器
?若干个家庭用户共享10Mb/s访问带宽;
?关注点:拥塞,规模控制问题。
?应用:在国内的个别地区试点。
居民区接入: 线缆调制解调器
机构接入网络:局域网
?公司/大学局域网 (LAN) 将端系统连接到端接路由器
?以太网(Ethernet):
?共享或专线电缆将端系统连接端系统和路由器
?10 Mb/s, 100Mb/s, 1Gb/s 以太网
?应用: 企事业单位, 家庭用户普遍使用的LAN
无线网络接入
?共享的无线访问网络把端系统连接到路由器
?无线LAN
?使用无线频谱替代有线介质
?e.g,802.11a/b/g
?11Mb/s、54Mb/s
?广域无线访问
?CDPD:通过蜂窝式网络无线访问ISP路由器
5.4 因特网的链路层和网络层
?因特网的链路层协议包括:
?SLIP、PPP、HDLC
?相关的议题还包括:通过局域网接入因特网时ARP与IP的交互问题。
?因特网的网络层协议主要包括:
?互联网络协议IP
?网络控制信息协议ICMP
?路由协议
?组播协议IGMP
点对点的数据链路协议
?一方发,一方收;一条链路:比广播信道简单的多
?无需介质访问控制
?不必进行MAC寻址
?e.g.,拨号链路,ISDN 线路等
?常见的点对点数据链路控制协议:
?SLIP (Serial Line Internet Protocol)
?PPP (Point-to-Point Protocol)
?SDLC:Synchronous Data Link Control (SNA的面向比特的数据链路规程) ?HDLC:High level data link control (ISO高级数据链路控制)
PPP 设计要求 [RFC 1557]
?帧封装: 将网络层的分组封装到数据链路层的帧中
?同时可以承载任意网络协议的网络层数据 (不仅仅是 IP)
?提供向上分用的能力
?位流透明: 在数据字段中,必须能携带任意组合的位流
?错误检测 (但无需校正)
?网络层地址协商: 客户端可以学习/配置对方提供的网络地址
PPP无需做的工作
?错误校正/恢复
?流量控制
?有序递交
?支持多点链路 (e.g.,轮询)
PPP 数据帧
?Flag:帧定界符(7EH)
?Address:固定为FFH
?Control:缺省为03H,表示为无编号帧
?Protocol:数据类型,即帧中携带的数据属于哪一个上层协议 (LCP, IP, IPCP, …)
PPP 数据帧
?Info:所携带的上层数据
?Check:CRC校验和,用于进行错误检测
字节填充(Byte Stuffing)
?“数据透明” 要求:数据中必须可以包括帧中flag字段的固定位模式:01111110(7EH)
?Q: 如何判断这个<01111110>到底是数据还是flag?
?A: 异步链路采用字节填充法解决(同步链路则使用与HDLC相同的位填充法)?发送方:
?数据中的所有<01111110>字节都用2字节序列<01111101, 01011110>
(7DH, 5EH)代替
?数据中的所有<01111101>(7DH)都用2字节序列<01111101, 01011101>
(7DH, 5DH)代替
?接收方:
?进行相反的操作
字节填充
网络层协议组成
?因特网的网络层协议分成四部分:网际协议(IP)、路由选择协议、网络控制信息协议(ICMP)和组播协议(IGMP)。
?网际协议:决定了网络层的编址机制,数据报的格式(网络层的PDU),各节点根据数据报的字段所应采取的动作。IP协议有两个版本,IPv4 [RFC 791]和IPv6 [RFC 2373,RFC 2460]。
?路由选择协议:决定数据报在发送过程中由信源到信宿所经过的路由器。
?网络控制信息协议:可以为用户提供网络中的各种运行信息。
?组播协议:由于数据报的发送无须建立过程和响应信息,因此可以支持因特网上的多点同时传送,但由于网络层协议设计上的限制,多点传送解决起来比较复杂。
网际协议IP-Internet Protocol
?IP是因特网的网络层中最重要的协议
?提供数据报(Datagram)的投递服务(主机到主机)
?在不同的数据链路层上进行数据转发操作
?IP的数据报投递服务是非连接的,不可靠的
?非连接
?数据报之间没有相互的依赖关系;
?不能保证报文的有序投递。
?不可靠
?数据报的投递没有任何品质保证(QoS),数据报可能被正确投递,可能被
丢弃。
IP地址
?IP地址: 32bit的逻辑地址, 用来标识主机或路由器的网络接口;
?网络接口: 用于连接主机与路由器之间的物理链路:
?路由器有多个接口
?主机可能有一个,也可能有多个接口
?IP地址只与设备的网络接口有关
?IP地址书写方法:
?32bit划分为4个字节
?写成点分的4个十进制数
IP地址
?IP地址包括2个部分:
?网络地址(网络号)
?主机地址(主机号)
?网络是什么?(从 IP 地址的视角)
?具有相同网络地址的设备接口,或
?不经过路由器就可以物理上相互通达的设备
IP地址
?为讨论“网络”的说法,重新审视IP地址:
?“分类” 编址:
保留的IP地址
?以下这些IP地址具有特殊的含义:
划分子网
?为什么要划分子网?
?IP 分类不合理,地址空间利用率低
?美国的某些机构拥有的地址空间甚至比其他一些国家的全部地址空间还
大
?每个网络都指定一个网络地址将使路由表太大
?增加了路由器成本
?查找路由耗时增加
?路由器之间交换的路由信息增加
?两级IP 地址不够灵活
?不能充分利用已申请到的地址资源扩充新的网络
?如何在现有的地址范围中建立多个网络?
?划分子网(Subnetting)
?又称子网寻址或子网路由选择
?方法:
?从IP地址的主机编号部分“借用”若干位作为子网编号
?主机编号部分相应缩短
?例如:
?原来的网络:10.5.0.0
?借用2位划分子网后:10.5.64.0和10.5.128.0
?子网的特点:
?多个子网可以运行在同一物理网络上。
?划分子网后,原来的网络对外仍呈现为一个完整的网络,外面看不见其内部的子网结构。
?即:划分子网完全是该网络内部的事务,与外部无关。
在一个物理网络上运行多个子网
划分子网后,网络对外仍是一个网络
子网掩码
?子网掩码的作用
?使网络内的计算机了解子网划分的结构
?使边缘路由器了解子网划分的结构
?子网掩码的格式
?子网掩码也是32bit长的二进制数,由一串连续的1后跟一串连续的0组成;
?前面的1与网络号和子网号对应,后面的0与主机号对应。如前面的例子:?子网结构为: 00001010 00000101 ss xxxxxx xxxxxxxx
?子网掩码为: 11111111 11111111 11 xxxxxx xxxxxxxx
写成十进制数为: 255.255.192.0
?不划分子网时,各类IP地址默认的子网掩码为:
?A类:255.0.0.0
?B类:255.255.0.0
?C类:255.255.255.0
?已知IP地址和子网掩码,如何计算子网地址?
?用子网掩码和IP地址“相与”(AND操作),结果就是子网地址。
?例如:IP地址10.5.100.1,子网掩码10.5.192.0。则可计算出10.5.100.1的子网地址为
00001010 00000101 01100000 00000001
AND) 11111111 11111111 11000000 00000000
00001010 00000101 01000000 00000000 (=10.5.64.0)
Q. 如何在网络拓扑图中找出所有的网络?
?拿掉路由器;
?整个网络形成了若干个“被隔离的网络孤岛”;
?每个“孤岛”就是一个网络。
Q: 右图中
1)包含了几个网络?
2)每个网络的子网地址分别是什么?(假定网络掩码为255.255.255.0)
IP编址:CIDR(无类域间路由)
?分类编址:
?地址空间的利用率低,地址空间面临耗尽;
?e.g.,一个B类网址可以容纳65K台主机, 但可能被一个只有2K台主机的企业占据。
?CIDR: Classless InterDomain Routing
?地址的网络部分长度任意,不再分为固定的几种类型;
?地址格式: a.b.c.d/x,x为地址中网络部分的位数。
IP编址:言犹未尽...
Q: ISP如何得到整块的地址?
A: ICANN:Internet Corporation for Assigned
Names and Numbers(因特网名称和编号组织)
?分配地址
?管理DNS
?批准域名,解决纷争
Q: 单位或企业如何获得网络地址?
A: 向ISP申请(在单位内部,则向网络中心申请)
IP 数据报格式
IP路由选择
路由表的基本内容
如何根据路由表进行路由选择
?路由选择:根据路由表找到一条到达目的网络的路径(实际上是查找输出接口)。
?想一想:为何不是“找到一条到达目的主机的路径”?
?从两个方面考虑:
?如何减小路由表中的路径数量(在因特网的骨干链路中尤其重要)
?与目的主机的连接只有两种类型:点到点链路和广播型网络(LAN)?有些情况下,路由表中也可设置到达目的主机的路由。
?路由选择的基本方法:
?取出收到的分组中的目的IP地址,并提取出目的网络地址;
?用目的网络地址在路由表中查找:
?若目的网络与路由器直接相连,则“直接交付”;
?如果找到匹配的表项,则将分组发送到该表项指定的下一跳路由器;
?如果未找到,则搜索路由表中有无“default”的表项:
?如果有,就将将分组发送到该表项指定的下一跳路由器;
?如果没有,则发送一个“主机不可达”或“网络不可达”的出错信息给
发出该分组的计算机。
路由表的维护
?路由表如何建立?如何根据网络的变化进行更新?
?静态路由:由网络管理员设置并随时更新
?网络管理员的工作负担重,容易出错,适应性差;
?简单、开销小,只适用于小型网络。
?动态路由:路由器运行过程中根据网络情况动态地维护
?减轻了网络管理员的工作负担重;
?实时性好,适应性好;
?能够满足大型网络的需要;
?因要搜集网络运行状态,网络开销有所增加,实现也比较复杂。
?因特网中的路由器采用的都是动态路由。
动态路由的实现
?动态路由(建立、维护、更新)需要借助路由协议实现,路由协议有两大类:?全局路由协议
?依据完整的网络全局拓扑信息计算到达各个网络的最佳路径。
?因为本协议需要了解每条网络链路的状态,故也称其为链路状态路由协议
(Link State Routing Protocol,L-S)。
?路由计算在所有路由器中完成,运行L-S协议的每个路由器都要向所有路由
器发送与自己相邻的路由器的链路状态信息,内容包括:
?路由器所连接的网络链路;
?该链路的状态:连通性、开销、速度、距离、时延等信息。
?通过互相通告链路状态,每个路由器最终都可以建立一个关于整个网络拓
扑结构的数据库,再使用Dijkstra算法即可计算出到达各网络的最佳路径。
?典型的链路状态路由协议是OSPF(Open Shortest Path First)。
?局部路由协议
?通过一系列重复的、分布的方式来计算最佳路径。
?每个路由器开始只知道与其直接相连的链路的信息。通过与相邻路由器的
通信和一系列反复的计算,路由器可以逐渐获得到达某些网络的最佳路径
信息。
?因为需要了解每条链路的距离,故也称其为距离矢量路由协议(Distance
Vector Routing Protocol,D-V)。
?距离矢量协议计算网络中链路的距离矢量,然后根据计算结果构造路由表。
每一个路由器工作时会定期向相邻路由器发送消息,消息的内容就是自己
的整个路由表,其中包括:
?目的网络的地址;
?到达目的网络的下一跳路由器地址;
?到达目的网络所经过的距离。
?运行距离矢量协议的路由器会根据相邻路由器发送过来的信息,更新自己
的路由表。
?典型的距离矢量路由协议是RIP(Routing Information Protocol)。
IP路由协议具有的共性
?动态地学习、计算到达网络中各子网的路由并插入到路由表中。
?如果到达一个子网有多条合法路由,那么将最好的一条放到路由表中。
?当路由表中的路由不再合法时,则通告给其他路由器,并从自己的路由表中删除该路由。
?尽快地加入新的路由,或者用更好的路由替代失效的路由。
?阻止循环路由。
IP路由协议的层次
?因特网被划分为许多自治系统(Autonomous System,AS),每个AS都是一个互联网络。
?AS的特点:
?它有权自主地决定在本系统内采用何种路由选择协议。
?一个AS内的所有网络都属于一个组织或机构管辖并在本AS内是连通的。
?根据路由协议是为AS内部的路由优化还是为AS之间的路由优化,因特网把路由协议分为两大类:
?内部网关协议(IGP):如RIP、OSPF等;
?外部网关协议(EGP):如BGP(边界网关协议)。
AS、IGP和EGP
ARP 协议和RARP 协议
?ARP将一个已知的IP地址映射到MAC地址。
?想一想:为何要进行映射?(后面将给出答案)
?映射方法:
?已知:IP地址
?1)检查本地ARP高速缓存表,若找到IP地址对应的表项,则取出表项中的MAC 地址;
?2)若IP地址不包含在表中,就向网上发广播来寻找。具有该IP地址的目的站用其MAC地址作为响应。
?ARP只能用于具有广播能力的网络。
为什么需要地址解析协议?
?或者说,为何要进行地址映射?
?Answer:
?在因特网中,数据分组传输使用的是IP 地址(逻辑地址);而在局域网中,传输数据时需要使用物理地址(MAC 地址)。
?许多因特网的主机位于局域网中,当数据分组到达局域网时,需要把IP 地址转换成MAC 地址,然后把分组封装在局域网链路层的帧中,才能发送到该主机。
ARP与IP的交互
例子:由R对A到B的数据包进行路由的过程
?实际上,发送主机在发送分组之前,就已经知道目的主机不在本地LAN上(只要比较目的主机和发送主机的IP地址中的网络地址部分便可得知),所以必须将分组发送给路由器,由路由器进行转发。
?路由器的IP地址(Windows中称为缺省网关)在发送主机中已经预先设置(在本例中为111.111.111.110)。
?现在的问题是:发送主机如何得到路由器接口的MAC地址呢?当然是使用ARP协议!
?一旦发送主机获得了路由器接口的MAC地址,就可以生成一个数据帧,发送给路由器。
?LAN1上的路由器接口收到了发给它的数据帧后,将封装在其中的分组提交给网络层。这样,分组就成功地从主机发送到了路由器上!
?接下来,路由器还必须将分组发送到目的地。
?路由器首先需要选择适当的接口来转发,这项工作路由器可以通过查询路由表来完成。路由表告诉路由器:“需要通过222.222.222.220接口转发该分组”。
于是,路由器把分组送到该接口。
?最后,接口将分组传送给其适配器,组成新的数据帧,并广播到LAN2中。
?这时,数据帧的目的MAC地址才是真正的最终目的主机的MAC地址。
?路由器又是如何知道最终目的主机的MAC地址呢?还是使用ARP协议!
?路由器通过数据报中的目的IP地址和ARP协议来得到目的主机的MAC地址。
?RARP协议:把MAC地址映射为IP地址
?用于无盘工作站环境
?无盘工作站没有磁盘,配置的IP 地址无法保存。
?RARP 的基本思想:
?网络中配置一台RARP 服务器;
?RARP 服务器中有一张MAC 地址与IP 地址的映射表;
?由网络管理员预先配置好
?地址映射过程:
?无盘工作站启动时,从硬件配置中读出MAC 地址,并将其封装在RARP
请求报文中,广播到网上;
?RARP 服务器收到请求报文后,在映射表中检查有无对应表项。若找到,
将对应的IP 地址装入响应报文中发回给请求者。
?RARP也只能用于具有广播能力的网络。
IP地址: 如何分配?
主机的IP地址有两种分配策略:
?由网络管理员手工分配(静态分配);
?动态分配:DHCP协议(Dynamic Host Configuration Protocol)?网络中需设置一台DHCP服务器;
?网络管理员在DHCP服务器中预先定义一个IP地址池。