多线程 & 网络

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

2021-02-23  本文已影响0人  码小菜

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

一,协议模型

1,三种模型
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,封装成帧
3,透明传输

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

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

4,差错检验
5,网卡
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,基本知识
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,常用协议
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片

上一篇 下一篇

猜你喜欢

热点阅读