网络层讨论的问题是分组怎样从一个网络通过路由器转发到另一个网络;
数据链路层研究的是同一个局域网中,分组怎样从一个主机传送到另一个主机(不经过路由器)。
零、数据链路
链路:从一个结点到相邻结点的一段物理线路(有线或无线),中间没有任何其他的交换结点。 链路只是一条路径的组成部分。
数据链路:是物理链路+实现通信协议的硬件和软件。 使用网络适配器来实现这些协议。(包含物理层和数据链路层)
数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
一、使用点对点信道的数据链路层
对于点对点链路,点对点协议PPP(Point-to-Point Protocol)是使用最广泛的数据链路层协议。因特网用户通常都要连接到某个ISP才能接入因特网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。
二、使用广播信道的数据链路层
局域网使用的是就是广播信道。
局域网的特点:网络为一个单位所拥有,且地理范围和站点数目均有限。
共享信道的一个问题是:如何使众多用户能够合理而方便地共享通信媒体资源?有两种方法:
1)静态划分信道(频分多用、时分复用、波分复用和码分复用)——代价太高,不适合局域网
2)动态媒体接入控制,又称为多点接入:包括随机接入(必须解决碰撞问题)和受控接入
使用较多的是随机接入的以太网。
数据链路层——MAC层(Medium Access Control)
计算机是怎样连接到局域网?
计算机与外界局域网的连接是通过适配器(网络接口卡NIC——Network Interface Card)。适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。计算机的硬件地址就在适配器的ROM中,计算机的软件地址——IP地址在计算机的存储器中。
以太网通信
以太网早期是将许多计算机连接到一根总线上。总线特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。这就是广播通信方式。为了在总线上实现一对一通信,可以使每一台计算机的适配器拥有一个与其他适配器都不同的地址。仅当数据帧中的目的地址与适配器ROM中存放的硬件地址一致时,该适配器才能接收这个数据帧。适配器对不是发送给自己的数据帧就丢弃。
以太网通信的两个特点
1)无连接。不进行编号,不要求对法发回确认。尽最大努力的交付,即不可靠交付。
2)以太网发送的数据使用曼彻斯特编码的信号。(曼彻斯特编码的特点是把每一个编码分成两个相等的间隔,然后用上升沿和下降沿分别0和1)
总线在同一时间只能允许一台计算机发送数据,怎么协调——CSMA/CD:Carrier Sense Multiple Access with Collision Detection
载波监听——检测信道:不管在发送前,还是在发送中,每个站都必须不停地检测信道。发送前检测信道,是为了获得发送权;在发送中检测信道,是为了及时发现有没有其他站的发送和本站的发送 碰撞。
碰撞检测——适配器边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。
以太网MAC帧格式的首部没有一个帧长度字段,那么MAC子层有怎样知道从接收到的以太网帧中提取出多少字节的数据交付上一层协议呢?
曼彻斯特编码,发送时一直有电压变化,但不发送时,电压不在变化。可以很方便找到结束为止。
扩展以太网的两种方式
1)在物理层扩展以太网——集线器
2)在数据链路层扩展以太网——网桥、交换机(隔离碰撞域)
第一、网桥对接收到的帧要先存储和查找转发表,然后再转发,且在转发之前,必须先执行CSMA/CD算法
第二、MAC子层并没有流量控制功能。负荷很重时,会产生帧丢失现象
第三、网桥只适合用户数不多、通信量不大的以太网,否则会因传播过多的广播信息而产生网络拥塞,也即广播风暴
网桥的自学习和转发帧的一般步骤
1)网桥收到帧后先进行自学习。查找转发表中与收到帧的源地址有无相匹配的项目。如没有,就在转发表中增加一个项目(源地址、进入的接口和时间)。如有,则把原有的项目进行更新。
2)转发帧。查找转发表中与收到帧的目的地址有无相匹配的项目。如没有,则通过所有其他接口(进入接口除外)进行转发。如有,则按转发表中给出的接口进行转发。 注意,若转发表中给很出的接口就是该帧进入网桥的接口,则丢弃。