协议
前言:互联网的出现彻底的改变了人们的生活方式,足不出户就可以购物、聊天、看电影、买车票、上班等。但是,数据从一个设备传到另一个设备需要网络的协议来规定;没有网络协议就没有今天的互联网
含义:电脑内部的一种规矩,它规定了两个设备通讯时如何识别对方、如何建立连接、使用的讯号类型、数据的编码和解码方式、数据传输的类型、数据传输的方式以及物理层面上的电压电流保持和截止时间等等规定,两个设备只有协议完全一样或者相容,他们之间才能够进行通讯
举例
假设a与b元器件之间有一根电路,可以通电和断电,若我们不做任何的规定和约束,那么这个总线除了可以通电和断电之外就无法实现任何的功能,若我们规定一秒为10个周期通电为1、断电为0;那么a只需要通过大量的通电和断电就可以将想发送的信息以每秒10bit的速度向b传输数据;而这个一秒为10个周期,通电代表1,断电代表0这个规定就是a和b之间的通信协议。
理解:协议就是一种双方提前约定好采用某种形式以某种规格利用某种物体把数据传输出去,而另一方再以同样的规则和流程去接受数据的约定制度或者规章。
前言:由于早期计算机厂商使用私有网络模型没有统一标准,因此iso在1984年颁布了osi参考模型,将网络分为七层
定义:osi七层模型 (open system interconnect),全称为开放系统互连参考模型,是国际标准化组织(iso)和国际电报电话咨询委员会(ccitt)联合制定的开放系统互联参考模型,为开放式互联信息系统提供了一种功能结构的框架。
理解七层模型
- 应用层:将原始数据转换为电脑能够识别的二进制数据
- 表示层:数据的表示,加密,压缩等
- 会话层:建立、管理、终止会话(软件层面)
- 传输层:定义传输数据的协议、端口号、流控、差错校验
- 网络层:进行逻辑地址(ip地址)的寻址,实现不同网络之间的路径选择
- 数据链路层:建立逻辑连接,进行硬件地址(mac地址)的寻址、差错校验
- 物理层:二进制数据转换为传输的电信号以及光信号(建立、维护、断开物理连接)
以下为osi七层模型数据逐层封装和数据逐层解封的过程
注意:每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标地址以及协议相关信息。通常,为协议提供的信息为包首部,所要发送的内容为数据。在下一层的角度看,从上一层收到的包全部都被认为是本层的数据。
前言:osi参考模型仅仅是一个标准,而且制定这个标准的组织很多时候太理论了,然而在实际运用过程中逐渐发现tcp/ip协议模型才是实践型的(实际应用过程中这种tcp/ip模型才是符合现实生活的);只有四层体系结构的tcp/ip协议与有七层体系结构的osi相比要简单了不少,也正是这样,tcp/ip协议在实际的应用中效率更高,成本更低。
注意:当然,有的教材为了研究更加清楚,通常把网络接口层分为2层(数据链路层、物理层),这样tcp/ip模型就具有五层结构
数据包的层层封装与层层拆包
各层的数据以及协议
前言:物理层定义了接口标准,线缆标准,传输速率,传输方式等
模拟信号
模拟信号特点
- 模拟信号为连续的信号,适合长距离传输
- 模拟信号抗干扰能力差,受到干扰时波形变形很难纠正
数字信号
数字信号特点
- 数字信号为离散的信号,不适合长距离传输
- 数字信号抗干扰能力强,受到干扰时波形失真可以修复
数据通信模型
信道
含义:信息传输的通道,一条传输介质上(比如网线)上可以有多条信道
通信方式
- 单工通信:信号只能往一个方向传输,任何时候都不能改变信号的传输方向
- 半双工通信:信号可以双向传输,但必须是交替进行,同一时间只能往一个方向传输。
- 全双工通信:一个通道同一时间允许双向进行数据的传输
链路:从一个节点到相邻节点的一段物理线路(有线或无线),中间没有其他交换节点
注意:
- 集线器不算一个链路节点
- 在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输;不同类型的数据链路所用的通信协议可能是不同的
- 广播信道用的是csma/cd协议(比如同轴电缆、集线器等组成的网络)
- 点对点信道用的是ppp协议(比如两个路由器之间的信道)
数据链路层的三个基本问题
- 封装成帧
- 透明传输
- 差错检验
封装成帧
注意:
- 每一种数据链路层都规定了所能够传输的帧的数据长度上限mtu(以太网的mtu为1500个字节)
- 数据链路层封装成帧过程中,将网际层的包的首部和尾部分别添加内容,添加的内容与链路的类型有关(链路使用的协议)
透明传输
前言:因为数据帧有帧开始符号(soh)、帧结束符号(eot)所以数据部分一旦出现soh、eot、esc就需要进行转义(在后面加esc字符进行填充)
差错检验
帧的尾部有fcs,这个fcs主要用于差错检验
fcs作用:数据在信道中传输时若受到一些干扰信号有可能会失真,这样传过来的数据可能不精确,若要检测数据的完整性,网卡会拿到帧数据部分以及数据链路层首部并计算出一个值,计算出的这个值叫做fcs,若网卡比较这两个fcs相同,那么传输过程中数据没有失真;若网卡比较这两个fcs不同,则网卡会将该数据丢弃
csma/cd协议
理解:载波侦听多路访问/冲突检测
- 载波侦听:处在集线器中的一个设备能够监听到在这个信道上有没有信号在传输,若监听到这个信道上没有信号在传输,那么若有必要就会将信号发出去,反之不发送信号
- 多路访问:在集线器中的所有设备都可以发送信号
- 冲突检测:若集线器中的两个设备同时监听到该信道没有信号传输,同时将信号发出,之后,两个信号便会冲突,信号碰撞之后就会回弹,此时设备就有能力判断这个回弹的消息是别人回复的消息还是冲突产生的回弹消息
注意:
- 使用了csma/cd协议的网络可以称为是以太网,他传输的是以太网帧
- 以太网帧格式有(ethernet v2标准、ieee802.3标准)最常用的是ethernet v2标准
- 用交换机组建的网路,已经支持全双工通信,不需要再使用csma/cd协议,但是它传输的依然是以太网帧,所以用交换机组建的网络依然可以叫以太网
- 为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少64字节
ethernet v2帧的格式
注意:
- 因为以太网使用曼彻斯特编码,接收端接收帧过程只要发现没有信号跳变,就认为帧结束,所以没有帧开始与帧结束界定符
- 在物理层传输的时候需要插入前同步码以及帧开始符,前同步码其主要目的是帮助接收器进行时间和频率同步,告诉接收站下一帧即将来临做好准备。
- 2的类型表示网络类型(ipv4、ipv6)
- ip数据包的数据至少为46,最多为1500,当数据部分的长度小于46字节时,数据链路层会在数据的后面加一些字节填充,当数据被接收时接收端会将填充的字节去掉
ppp协议
含义:(point to point protocol)点对点协议
ppp协议字节填充
注意:
- ppp协议帧格式有帧开始与帧结束符号:0x7e
- 首部的a为address字段,图中值为0xff,形同虚设,点对点信道不需要源mac与目标mac
- 首部的c为control字段,图中值为0x03,目前没什么用
- protocol字段为内部用到的协议类型
含义:也叫网络适配器,网卡是计算机上网不可或缺的一部分,其在计算机网络中所处的位置是数据链路层与物理层,兼顾两层的功能。
网卡的作用:网卡实现的主要功能是物理层与数据链路层的功能,是数据的封装与解封、链路管理、编码与译码;网卡和计算机之间的通信是通过计算机主板上的i/o总线以并行传输方式进行,我们的网卡接入到网络后如果要通信,则需要给他配置ip地址。
注意:
- 每个网卡都具有一个身份标识(mac地址),该mac地址具有全球唯一性,储存在网卡的rom中
- 网卡接收到一个帧,首先会进行差错校验,若校验通过则接收,否则丢弃
- wireshark抓到的帧没有fcs,因为它抓到的是差错校验通过的帧(帧尾部的fcs会被硬件去掉)
- wireshark抓不到差错校验失败的帧