目录
协议
前言:互联网的出现彻底的改变了人们的生活方式,足不出户就可以购物、聊天、看电影、买车票、上班等。但是,数据从一个设备传到另一个设备需要网络的协议来规定;没有网络协议就没有今天的互联网
含义:电脑内部的一种规矩,它规定了两个设备通讯时如何识别对方、如何建立连接、使用的讯号类型、数据的编码和解码方式、数据传输的类型、数据传输的方式以及物理层面上的电压电流保持和截止时间等等规定,两个设备只有协议完全一样或者相容,他们之间才能够进行通讯
举例
假设A与B元器件之间有一根电路,可以通电和断电,若我们不做任何的规定和约束,那么这个总线除了可以通电和断电之外就无法实现任何的功能,若我们规定一秒为10个周期通电为1、断电为0;那么A只需要通过大量的通电和断电就可以将想发送的信息以每秒10bit的速度向B传输数据;而这个一秒为10个周期,通电代表1,断电代表0这个规定就是A和B之间的通信协议。
理解:协议就是一种双方提前约定好采用某种形式以某种规格利用某种物体把数据传输出去,而另一方再以同样的规则和流程去接受数据的约定制度或者规章。
OSI七层模型
前言:由于早期计算机厂商使用私有网络模型没有统一标准,因此ISO在1984年颁布了OSI参考模型,将网络分为七层
定义:OSI七层模型 (Open System Interconnect),全称为开放系统互连参考模型,是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互联参考模型,为开放式互联信息系统提供了一种功能结构的框架。
理解七层模型
- 应用层:将原始数据转换为电脑能够识别的二进制数据
- 表示层:数据的表示,加密,压缩等
- 会话层:建立、管理、终止会话(软件层面)
- 传输层:定义传输数据的协议、端口号、流控、差错校验
- 网络层:进行逻辑地址(IP地址)的寻址,实现不同网络之间的路径选择
- 数据链路层:建立逻辑连接,进行硬件地址(MAC地址)的寻址、差错校验
- 物理层:二进制数据转换为传输的电信号以及光信号(建立、维护、断开物理连接)
以下为OSI七层模型数据逐层封装和数据逐层解封的过程
注意:
- 每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标地址以及协议相关信息。通常,为协议提供的信息为包首部,所要发送的内容为数据。在下一层的角度看,从上一层收到的包全部都被认为是本层的数据。
- 分层模型把复杂的问题简单化,在这个分层模型中每层的工作是独立的,但是每层之间的协议又相互关联,下层协议为上层协议服务。
TCP/IP参考模型
前言:OSI参考模型仅仅是一个标准,而且制定这个标准的组织很多时候太理论了,然而在实际运用过程中逐渐发现TCP/IP协议模型才是实践型的(实际应用过程中这种TCP/IP模型才是符合现实生活的);只有四层体系结构的TCP/IP协议与有七层体系结构的OSI相比要简单了不少,也正是这样,TCP/IP协议在实际的应用中效率更高,成本更低。
注意:当然,有的教材为了研究更加清楚,通常把网络接口层分为2层(数据链路层、物理层),这样TCP/IP模型就具有五层结构
数据包的层层封装与层层拆包
各层之间的设备
层级 | 数据 | 设备 |
应用层 | 数据报文 | 计算机/防火墙 |
传输层 | 数据段 | 防火墙 |
网络层 | 数据包 | 路由器 |
数据链路层 | 数据帧 | 交换机/网卡 |
物理层 | 比特流 | 网卡 |
注意:每层设备仅仅能在自己的所在层的协议范围内进行操作。
数据封装关联图
理解:
- wireshark里面抓到的数据都是通过以上的这种关系联系起来的。
- 这里的ARP协议在三层设备中通过对应的IP获得对应的MAC地址时使用,其作为获取MAC地址后,补全完整数据帧的一个辅助协议;其目的是在数据链路中通过MAC地址找到对应的网卡(主要因为IP地址不在数据链路层,局域网内通信仅通过MAC地址)
封装所用的协议的数字表示形式
物理层
前言:物理层定义了接口标准,线缆标准,传输速率,传输方式等
信道
含义:信息传输的通道,一条传输介质上(比如网线)上可以有多条信道
信道分类
- 数字信道:仅允许数字信号传输的信道
- 模拟信道:仅允许模拟信号传输的信道
信号
基带信号
含义:由信源发送的原始电信号称为基带信号
基带信号分类
模拟信号
模拟信号特点
- 模拟信号为连续的信号,适合长距离传输
- 模拟信号在传输过程的衰减可以用放大器来进行平衡
- 模拟信号抗干扰能力差,受到干扰时波形变形很难纠正
数字信号
数字信号特点
- 数字信号为离散的信号,不适合长距离传输
- 数字信号抗干扰能力强,受到干扰时波形失真可以修复
- 数字信号在传输过程中的改变可以用中继器来进行修复
编码
编码:在不改变信号性质的前提下,仅对信号的波形进行变换称为编码
注意:
- 数字信号编码后产生的信号仍为数字信号可在数字信道中传输
- 以太网采用曼彻斯特编码——4B/5B、8B/10B等
调制解调
- 调制:把数字信号转换为模拟信号称为调制
- 解调:把模拟信号转变为数字信号称为解调
通信方式
- 单工通信:在一个信道内信号只能往一个方向传输,任何时候都不能改变信号的传输方向
- 半双工通信:在一个信道内信号可以双向传输,但必须是交替进行,同一时间只能往一个方向传输。
- 全双工通信:一个信道同一时间允许双向进行数据的传输
数据通信模型
以在广域网发送一条消息为例
我们发送一个消息被打包为数据,计算机的网卡将0和1的数据变换成相应的电信号(数字信号)发送到网线,通过网线传输到路由器后路由器将数字信号转变为模拟信号(调制)在模拟信道中传输,传输到目标路由器时目标路由器对这个模拟信号转变为数字信号(解调)后传到网线,目标的电脑就可以通过这个网线来获得对应的消息
数据传输方式
串行传输与并行传输
- 串行传输:数据是一个比特一个比特依次发送的,因此在发送端和接收端只需要一个数据传输线路即可
- 并行传输:一次发送n个比特而不是一个比特,为此在发送端和接收端之间需要n条传输线路
注意:
- 串行传输速度低,并行传输速度高
- 近距离并行传输,远距离串行传输
同步传输和异步传输
同步传输
含义:数据块以稳定的比特流的形式传输,字节之间没有间隔,接收端在每个比特信号的中间时刻进行检测,以判别接收到的是比特0还是1
问题:由于不同设备的时钟频率存在一定差异,不可能做到完全相同,在传输大量数据过程中所产生的判别时刻的累积误差会导致接收端对比特信号的判别错位,因此需要采取方法使收发双方的时钟保持同步
收发双方时钟同步的方法
- 外同步:在收发双方之间添加一条单独的时钟信号线,发送端在发送数据信号的同时另外发送一条时钟同步信号,接收端按照时钟同步信号的节奏来接收数据
- 内同步:发送端将时钟同步信号编码到发送数据中一起传输(例如曼彻斯特编码)
异步传输
含义:异步传输方式以字节为单独的传输单位,字节之间的间隔不是固定的,接收端仅在每个字节的起始处对字节内的比特实现同步,为此,通常要在每个字节的前后加上起始位和结束位
注意:这里的异步是指字节之间的时间间隔异步,但字节中的每个比特仍然要同步
数据链路层
链路:从一个节点到相邻节点的一段物理线路(有线或无线),中间没有其他交换节点
注意:
- 集线器不算一个链路节点
- 在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输,不同类型的数据链路所用的通信协议可能是不同的
数据链路层的三个基本问题
- 封装成帧
- 透明传输
- 差错检验
封装成帧
注意:
- 每一种数据链路层都规定了所能够传输的帧的数据长度上限MTU(以太网的MTU为1500个字节)
- 数据链路层封装成帧过程中,将网际层的包的首部和尾部分别添加内容,添加的内容与链路的类型有关(链路使用的协议)
- 对于上三层(应用层,传输层,网络层)来说,这个帧头和帧尾就只是作为一个运载工具
透明传输
前言:因为数据帧有帧开始符号(SOH)、帧结束符号(EOT)所以数据部分一旦出现SOH、EOT、ESC就需要进行转义(在后面加ESC字符进行填充)
差错检验
帧的尾部有FCS,这个FCS主要用于差错检验
FCS作用:数据在信道中传输时若受到一些干扰信号有可能会失真,这样传过来的数据可能不精确,若要检测数据的完整性,网卡会拿到帧数据部分以及数据链路层首部并计算出一个值,计算出的这个值叫做FCS,若网卡比较这两个FCS相同,那么传输过程中数据没有失真;若网卡比较这两个FCS不同,则网卡会将该数据丢弃
数据链路层协议使用
- 广播信道用的是CSMA/CD协议(比如同轴电缆、集线器等组成的网络)
- 点对点(单播)信道用的是PPP协议(比如两个路由器之间的信道)
CSMA/CD协议
理解:载波侦听多路访问/冲突检测
- 载波侦听:处在集线器中的一个设备能够监听到在这个信道上有没有信号在传输,若监听到这个信道上没有信号在传输,那么若有必要就会将信号发出去,反之不发送信号
- 多路访问:在集线器中的所有设备都可以发送信号
- 冲突检测:若集线器中的两个设备同时监听到该信道没有信号传输,同时将信号发出,之后,两个信号便会冲突,信号碰撞之后就会回弹,此时设备就有能力判断这个回弹的消息是别人回复的消息还是冲突产生的回弹消息
注意:
- 使用了CSMA/CD协议的网络可以称为是以太网,他传输的是以太网帧
- 以太网帧格式有(Ethernet V2标准、IEEE802.3标准)最常用的是Ethernet V2标准
- 用交换机组建的网路,已经支持全双工通信,不需要再使用CSMA/CD协议,但是它传输的依然是以太网帧,所以用交换机组建的网络依然可以叫以太网
- 为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少64字节
Ethernet V2帧的格式
理解:
- 目标MAC:当数据帧发给网卡时,网卡首先看是不是给自己的,若不是给自己的则丢弃。
- 源MAC:网卡看是谁发来的数据,另外交换机学习MAC地址就是通过源MAC来学习的。
- 协议类型:链路层上层上层协议有IP(0x0800)、ARP协议(0x0806),该数据流入对方网卡需要向上送,这里决定了这个数据送到哪里。
- 数据:上层IP数据包的数据。
- FCS:差错校验,用于检测数据完整性。
注意:
- 在物理层传输的时候需要插入前同步码以及帧开始符,前同步码其主要目的是帮助接收器进行时间和频率同步,告诉接收站下一帧即将来临做好准备。
- 因为以太网使用曼彻斯特编码,接收端接收帧过程只要发现没有信号跳变,就认为帧结束,所以没有帧开始与帧结束界定符
- IP数据包的数据至少为46,最多为1500,当数据部分的长度小于46字节时,数据链路层会在数据的后面加一些字节填充,当数据被接收时接收端会将填充的字节去掉
PPP协议
含义:(point to point protocol)点对点协议
PPP协议字节填充
注意:
- PPP协议为单播信道所使用的协议,要尽可能的简单。
- PPP协议帧格式有帧开始与帧结束符号:0x7E
- 首部的A为Address字段,图中值为0xFF,形同虚设,点对点信道不需要源mac与目标mac
- 首部的C为Control字段,图中值为0x03,目前没什么用
- 2表示协议类型(0x0800——IP、0x0806——ARP),为了识别上层协议,为上层提供服务