《计算机网络》 读书笔记(二) 协议概述及链路层描述

来源:互联网 发布:淘宝橱窗推荐自动取消 编辑:程序博客网 时间:2024/04/29 11:57


1. 协议概述

            TCP/IP 网络模型包括4层,分别是网络接口层, 网络层, 传输层, 应用层。而OSI(Open System Interconnection)模型中,网络协议被分为7层,分别是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。其二者对应关系如下表:


            IOS的专家制订了OSI标准,因此OSI是法律上国际标准,而事实上成为国际标准,并商业化的是TCP/IP标准,因此这里的介绍也以TCP/IP为主。


1.1 五层协议的体系结构

            OSI的七层协议体系结构概念清楚,理论完整,但复杂且不适用。TCP/IP体系结构应用广泛,但网络接口层不太好理解。因此通常会采用一种折中的办法,即五层协议的体系结构。


2. 数据链路层

            下面是数据链路和物理层的介绍:
            物理层: 在物理层上传输数据的单位是比特,其任务是透明的传送比特流。物理层确定的问题是用多大的电压表示"0"和"1",接收方如何识别发送方所发送的比特值。此外物理层还需确定链接电缆的插头应存在多少根引脚,并且各引脚如何连接。


            数据链路层:简称链路层。我们知道,两个主机之间的数据传输,总是在一段一段的链路上传送的,也就是说,在两个相邻的节点之间(主机和路由器之间或者路由和路由之间)传送数据是点对点的(也就是说直接传输的)。这时就需要是有个专门的链路层协议。在两个相邻的节点之间传送数据时,数据链路层将网路层交下来的IP数据报组装成帧。在两个相邻的节点间的链路上"透明"的传送帧数据。每一帧包括了数据和必要的控制信息(如同步信息、地址信息、差错控制等)。典型的帧长是几百字节到一千多字节。
            数据链路层属于多计算机网络的底层。主要存在以下两种类型:
            1. 点对点信道。这种信道使用一对一的点对点通信方式。在这一层上最常用的点对点协议为PPP(Point-to-Point Protocol)。PPPoE(PPP over Ethernet)为其一种。PPP协议校验非常简单,数据接收方没收到一个帧,就进行CRC检验,如CRC检验正确,就收下这个帧;反之,丢弃这个帧,其他什么也不做。PPP协议没有负责数据的纠错和流量控制。在端到端的通讯里,这由上层TCP协议负责。PPP协议不支持多点线路(即一个主站轮流和链路上的多个从站进行通讯),而只支持点对点的通讯链路。PPP协议只支持全双工链路。
            2. 广播信道。这种信道使用一对多的广播通讯方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专门的共享信道协议来协调这些主机的数据发送。这一层上最著名的是协议是以太网协议。以太网协议遵循CSMA/CD协议,关于此协议我们以后再说。提出以太网的方案基于以下思路:要寻找很简单的方法把一些相距不太远的计算机相互连接起来,使它们可以很方便和很可靠地进行较高速率的数据通信。为了简便通讯,以太网采取了下列三个措施:
            a) 采用灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。适配器对发送的数据帧不进行编号,也不要求对方发回确认。所以以太网提供的服务是不可靠的交付,即尽最大努力的交付
            b) 以太网发送的数据采用曼特斯特进行编码。
            c) 以太网将许多的主机连接到一根总线上。总线的特点是:当一台计算机发送数据时,总线上所有的计算机都能够检测到这个数据。这种就是广播通信方式。但我们并不总需要在局域网上进行一对多的广播通信。为了在总线上实现一对一的通信,可以使每台计算机的适配器拥有一个与其他适配器都不同的地址。在发送数据帧时,在帧的首部写明接受站的地址。仅在数据帧中的目的地址与适配器ROM中存放的硬件地址一致时,该适配器才能接受这个数据帧。适配器对不是发送给自己的数据帧丢弃。
            以太网对于协调总线上各计算机的工作采用了如下方法,在同一时间只能允许一台计算机发送信息,否则个计算机之间就会互相干扰,大家都无法正常发送数据。事实上这个特点是由CSMA/CD协议决定的。CSMA/CD是载波监听多点接入/碰撞检测(Carrier Sense Multiple Access With Collision Detection)的缩写。下面是CSMA/CD的要点:
            "多点接入"就是说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。协议的实质是"载波监听"和"碰撞检测"。
            "载波监听"就是"发送前先监听",即每一个站在发送数据之前先要检测一下总线上是否有其他站在发送数据,如果有,则暂时不要发送数据,要等待信道变成空闲时再发送。其实总线上并没有什么"载波","载波监听"就是用电子技术检测总线上有没有其他计算机发送的数据信号。
            "碰撞检测"就是"边发送边监听",即适配器边发送边检测信道上的信号电压的变化情况,一边判断自己在发送数据是其他的站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(相互叠加)。当适配器检测到的信号电压变化幅度超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
            所谓"碰撞"就是发生了冲突。因此"碰撞检测"也被称为"冲突检测"。因此,每一个正在发送数据的站,一旦发现总线上出现了碰撞,适配器就要立即停止发送,然后等待一段随机时间后再次发送。为了避免冲突,人们设计了不同的方法。
            根据以太网使用的方法来计算可以得到以下结论,当使用以太网发送数据时,如果帧的前64个字节没有发生冲突,那么后续的数据就不会发生冲突。换句话说,如果发生冲突,就一定是在发送的前64字节之内。由于一检测到冲突就会立即停止发送,这是已经发送出去的数据一定小于64字节,因此以太网规定了最短有效帧长为64字节,凡长度小于64字节的帧都是由于冲突而异常终止的无效帧。收到这种无效帧就应当立即丢弃。

            数据链路层除了上述协议外,还存在多种协议,但解决的基本问题相同。即:封装成帧、透明传输和差错检测

            所有的局域网标准都只涉及物理层和数据链路层,它们所遵循的标准都以802开头,共有11个:
            1. IEEE 802.1——通用网络概念及网桥等
            2. IEEE 802.2——逻辑链路控制等
            3. IEEE 802.3——CSMA/CD访问方法及物理层规定(以太网)
            4. IEEE 802.4——ARCnet总线结构及访问方法,物理层规定
            5. IEEE 802.5——Token Ring访问方法及物理层规定等
            6. IEEE 802.6——城域网的访问方法及物理层规定
            7. IEEE 802.7——宽带局域网
            8. IEEE 802.8——光纤局域网(FDDI)
            9. IEEE 802.9——ISDN局域网
            10. IEEE 802.10——网络的安全
            11. IEEE 802.11——无线局域网(WLAN)


2. 1数据链路层协议帧结构

            数据链路层帧的通用结构如下:
            


            PPP协议帧格式:

            


            以太网协议:
            以太网协议存在不同标准,所以封装类型也不同。见下图:

                        


            但总的来说:在以太网链路上的数据包称作以太帧。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头以MAC地址说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包(例如IP协议)。以太帧由一个32位冗余校验码结尾。它用于检验数据传输是否出现损坏。
            帧结构:
            来自线路的二进制数据包称作一个帧。从物理线路上看到的帧,除其他信息外,还可看到前导码和帧开始符。任何物理硬件都会需要这些信息。
            下面的表格显示了在以1500个八位元组为MTU传输(有些吉比特以太网甚至更高速以太网支持更大的帧,称作巨型帧)时的完整帧格式。一个八位元组是八个位组成的数据(也就是现代计算机的一个字节)。



            通常情况下,我们只要知道在此层中,以太网头部存在"目的地址"、"源地址"、"类型",尾部存在"FCS"校验即可。其中:
            目的地址:6个字节的目的主机物理地址
            源地址:6个字节的源主机物理地址
            类型:2字节上层协议类型.  常用的类型包括: IP (0x0800)和PPPoE Session (0x8864)
            数据:46-1500字节数据。高层的数据,通常为3层协议数据单元。对于TCP/IP是IP数据包。
            FCS:4字节CRC帧校验码

            注:使用wireshare等抓包工具时, ^ 前导码和帧开始符无法在包嗅探程序中显示。这些信息通常会在OSI第1层被网卡处理掉,而不会传入嗅探程序采集数据的OSI第2层。


(版权所有,转载时请注明作者和出处http://blog.csdn.net/arau_sh/article/details/9904291