美文网首页多线程 & 网络
网络协议:物理层、链路层与网络层

网络协议:物理层、链路层与网络层

作者: 码小菜 | 来源:发表于2021-02-23 18:39 被阅读0次

    目录
    一,协议模型
    二,物理层
    三,链路层
    四,网络层
    五,Wireshark

    一,协议模型

    1,三种模型
    • 七层模型:由ISO(国际标准化组织)制定的参考模型
    • 四层模型:实际应用最广泛的模型
    • 五层模型:为学习网络原理而设计的模型
    2,请求过程
    • 客户端的应用层将数据向下传递给物理层,每一层都会在数据的头部或尾部添加一些信息
    • 客户端的物理层将数据发送给服务器的物理层
    • 服务器的物理层将数据向上传递给应用层,每一层都会解析数据的头部或尾部信息
    3,常见协议和数据类型

    二,物理层

    1,基本知识
    • 传输介质(比如网线)不属于该层
    • 该层的主要作用:定义数据是如何在传输介质上进行传输的,比如传输速率、传输方式等
    • 在该层工作的设备:调制解调器,集线器
    2,模拟信号和数字信号
    • 模拟信号

    1>连续的信号,适合长距离传输
    2>抗干扰能力差,受到干扰时波形变形很难纠正

    • 数字信号

    1>离散的信号,不适合长距离传输
    2>抗干扰能力强,受到干扰时波形失真容易修复

    3,通信模型
    • 说明

    1>网线传输的是数字信号,电话线传输的是模拟信号,光纤传输的是光信号
    2>调制解调器用来转换数字信号和模拟信号
    3>光电转换器用来转换数字信号和光信号
    4>网线不适合长距离传输,电话线和光纤适合长距离传输

    • 局域网
    • 广域网
    4,信道
    • 介绍

    1>信息传输的通道
    2>一条传输介质上(比如网线)上可以有多条信道

    • 单工通信

    1>信号只能往一个方向传输,任何时候都不能改变信号的传输方向
    2>比如无线电广播

    • 半双工通信

    1>信号可以双向传输,但必须交替进行,同一时间只能往一个方向传输
    2>比如对讲机

    • 全双工通信

    1>信号可以同时双向传输
    2>比如电话

    三,链路层

    1,基本知识
    • 链路就是某个节点到相邻节点的物理线路,中间没有其他交换节点

    1>下面红色框代表一个链路
    2>集线器没有智商,不算交换节点

    • 在链路上需要有对应的通信协议来控制数据的传输,不同的链路所用的通信协议也是不同的

    1>广播信道:CSMA/CD协议(比如用集线器连接的信道)
    2>点对点信道:PPP协议(比如两个路由器之间的信道)

    ⚠️注意⚠️:信道改变 -> 协议改变 -> 帧首部和帧尾部改变

    • 该层的主要作用:封装成帧、透明传输、差错检验
    • 在该层工作的设备:网桥、交换机、网卡
    2,封装成帧
    • 帧的数据部分就是网络层传递下来的数据包
    • MTUMaximum Transfer Unit)表示最大传输单元
    • 每一种链路层协议都会规定MTU,一般为1500个字节
    3,透明传输
    • 问题

    1>SOHStart Of Header)为帧开始符
    2>EOTEnd Of Transmission)为帧结束符

    • 解决

    将数据中出现的特殊字符进行转义

    4,差错检验
    • FCSFrame Check Sequence)表示帧校验序列,存储于帧的尾部
    • FCS是根据帧的数据部分和首部计算得出的
    • 接收端会重新计算一次,然后与FCS进行对比
    5,网卡
    • 网卡会对帧进行差错检验
    • 检验通过就接收,否则就丢弃
    • 检验通过后网卡会将FCS去掉
    6,CSMA/CD协议
    • 介绍

    1>CSMA/CDCarrier Sense Multiple Access/Collision Detection)表示载波侦听多路访问/冲突检测协议
    2>使用CSMA/CD协议的网络被称为以太网(Ethernet),传输的是以太网帧,以太网帧的常用格式为Ethernet V2
    3>集线器是半双工通信,需要使用CSMA/CD协议;交换机是全双工通信,不需要使用CSMA/CD协议
    4>以太网是一种计算机局域网技术

    • 说明

    1>载波侦听:在发送消息之前,先侦听信道是否空闲,如果空闲就发送,否则就等待
    2>冲突检测:在发送信息之后,会检测消息是否产生冲突,如果有就取消发送
    3>冲突检测的前提条件:帧长度至少64个字节

    • 格式

    1>数据部分长度范围:46 ~ 1500(字节),帧长度范围:64 ~ 1518(字节)
    2>曼彻斯特编码技术会自动识别帧的开始与结束,所以没有帧开始符和帧结束符
    3>帧首部包括:目标MAC地址、源MAC地址、协议类型(IPv4IPv6

    ⚠️注意⚠️:插入的8个字节是物理层首部

    • 填充

    1>如果数据部分的长度小于46个字节,链路层会在数据后面填充一些字节
    2>接收端会将填充的字节去掉

    7,PPP协议
    • 介绍

    PPPPoint to Point Protocol)表示点对点协议

    • 格式

    1>F:帧开始符和帧结束符,固定值为0x7E
    2>AAddress,地址域):用不上,点到点信道不需要源MAC地址和目标MAC地址,固定值为0xFF
    3>CControl,控制域):作为保留,固定值为0x03
    4>协议域:内部用到的协议类型

    • 转义

    1>将0x7E转换为0x7D5E
    2>将0x7D转换为0x7D5D

    四,网络层

    1,基本知识
    • 数据包包括首部和数据部分
    • 首部包括固定部分(20个字节)和可变部分(40个字节)
    • 数据部分是传输层传递下来的数据段
    • 该层的主要作用:分片与重组、路由与寻址
    • 在该层工作的设备:路由器
    2,版本、首部长度、区分服务、总长度
    • 版本

    1>占4位
    2>值为0b0100(十进制为4)表示版本为IPv4
    3>值为0b0110(十进制为6)表示版本为IPv6

    • 首部长度

    1>占4位
    2>值为0b0101(十进制为5)表示长度为20个字节(可变部分不用)
    3>值为0b1111(十进制为15)表示长度为60个字节(可变部分全用)
    4>十进制 = 长度 / 4 (4位存储的数值有限)
    5>可变部分一般不用,所以长度一般为20个字节

    • 区分服务

    1>占8位
    2>用于提高网络的服务质量
    3>值默认为0,设置值可以让数据包在网络中优先传输

    • 总长度

    1>占16位
    2>总长度 = 首部长度 + 数据长度,最大值为65535(16位都为1)个字节
    3>由于帧的数据部分不能超过1500个字节,所以过大的数据包需要分成片传输给链路层
    4>每一片都有自己的网络层首部

    3,标识、标志、片偏移
    • 标识

    1>占16位
    2>标识代表数据包的ID,同一个数据包所有片的标识都是相同的
    3>有一个计数器专门管理数据包的ID,每发出一个数据包,ID就加1
    4>ID最大为65535(16位都为1),一旦超过就重新从0开始计算

    • 标志

    1>占3位
    2>第1位(Reserved bit):保留位
    3>第2位(Don't fragment):0表示允许分片,1表示不允许分片
    4>第3位(More fragments):0表示是最后一片,1表示不是最后一片

    • 片偏移

    1>占13位
    2>片偏移 = 字节偏移 / 8(13位存储的数值有限)
    3>每一片的长度一定是8的整数倍

    4,生存时间、协议、首部检验和
    • 生存时间

    1>占8位
    2>每个路由器在转发之前会将TTL减1,一旦发现TTL为0,路由器会停止转发并返回错误信息
    3>可以防止数据包在网络中不停的被转发

    • 协议

    1>占8位
    2>表示数据部分使用的是哪种协议(传输层协议)

    • 首部检验和

    1>占16位
    2>是将首部根据某种算法计算得出的
    3>接收端会重新计算一次,然后与之进行对比

    5,常用协议
    • IPInternet Protocol):网际协议,根据源主机和目标主机的地址来传递数据,有IPv4IPv6两个版本
    • ARPAddress Resolution Protocol):地址解析协议,根据IP地址获取MAC地址
    • ICMPInternet Control Message Protocol):互联网控制消息协议,如果在通信过程中出现了问题,它会将错误信息返回给发送者
    6,IPv6
    • 基本介绍

    1>IPv4IP协议的4.0版本;IPv6IP协议的6.0版本
    2>IPv4的IP地址长度为4个字节(32位),可以容纳2^32个IP地址;IPv6的IP地址长度为16个字节(128位),可以容纳2^128个IP地址
    3>IPv4的IP地址一般用十进制来表示,每个字节之间用.隔开;IPv6的IP地址一般用十六进制来表示,每两个字节之间用:隔开
    4>由于IPv4的IP地址不够用了,所以才推出IPv6

    • 地址格式

    1>可以省略每组前面连续的0
    2>可以用双冒号“::”表示一组或多组连续的0,但只能出现一次,否则会造成歧义
    3>::1 = 0:0:0:0:0:0:0:1 = 0000:0000:0000:0000:0000:0000:0000:0001

    • 首部格式

    固定首部占40个字节
    1>Version(占4位):版本,值为0b0110
    2>Traffic Class(占8位):数据包的优先级,路由器会根据优先级来处理数据包
    3>Flow Label(占20位):标识该数据包属于哪一个数据流
    4>Payload Length(占16位):扩展首部的长度 + 上层(传输层)数据的长度,最大值为65535个字节(16位都为1)
    5>Next Header(占8位):下面详细介绍
    6>Hop Limit(占8位):与IPv4的生存时间相同
    7>Source Address(占128位):源IP地址
    8>Destination Address(占128位):目标IP地址

    • 扩展首部

    1>如果存在下一个扩展首部,那么Next Header存储的就是下一个扩展首部的类型
    2>如果不存在下一个扩展首部,那么Next Header存储的就是上层(传输层)数据的协议类型(例如TCPUDP等)

    五,Wireshark

    网络抓包工具

    1,链路层
    • 首部

    1>Ethernet IIEthernet V2
    2>Destination:目标MAC地址
    3>Source:源MAC地址
    4>Type:协议类型(IPv4IPv6

    • 尾部

    1>Ethernet V2格式的尾部只有FCS
    2>Wireshark抓到的都是差错检验通过的帧
    3>网卡会将差错检验通过的帧的FCS去掉
    4>所以在Wireshark中看不到帧的尾部

    2,网络层
    • 首部

    1>Internet Protocol Version 4IPv4
    2>Version:版本
    3>Header Length:首部长度
    4>Differentiated Services Field:区分服务
    5>Total Length:总长度
    6>Identification:标识
    7>Flags:标志
    8>Fragment offset:片偏移
    9>Time to liveTTL):生存时间
    10>Protocol:协议
    11>Header checksum:首部检验和
    12>Source:源IP地址
    13>Destination:目标IP地址

    • 分片

    1>向www.qq.com服务器发送一个4000字节的数据包

    2>网络层会将数据包分成3片(上面3片是请求的,下面3片是响应的)

    3>第1片

    4>第2片

    5>第3片

    相关文章

      网友评论

        本文标题:网络协议:物理层、链路层与网络层

        本文链接:https://www.haomeiwen.com/subject/onuyzktx.html