持续学习&持续更新中…
学习态度:守破离
【网络协议从入门到底层原理】【01】网络协议基本概念
网络协议
什么是协议
协议是通用的标准(规定),可以用来约束双方。
-
遵守协议的都是统一规范的。
-
协议是约束双方的一种标准、一种规范。
-
有一个标准规范的协议很重要,可以减少双方的沟通成本、提高办事效率。直接按照协议走就行。
网络协议
没有网络协议,就没有今天的互联网。
-
网络协议用来规定网络双方两个节点如何进行通信,用来约束数据格式。
-
网络协议规定客户端能发什么、服务器能返回什么。客户端和服务器之间会有一种约定好的固定的数据格式。
-
有了网络协议,发送数据的一方和接收数据的一方才能够进行有效的沟通(双方都了解、能看懂对方发来的数据)。双方都会以某种格式来解析数据。
-
A、B两台计算机之间之所以能够互相收发数据,就是因为有网络协议的规定。
- A、B两台计算机的数据传输应该经过哪些机器(交换机、路由器等)
- 数据传输应该经过哪些层
- 数据应该怎么包装
- 数据格式应该是什么样子
- …
网络互连模型
网络分层
为什么要分层?。
- 看似每一层做的事很少,其实很多
- 分工(专人干专事、分工明确)
- 解耦(隔离其他层、各个层之间互不干扰。万一哪一层出现了问题,只需要维修这一层即可,不会影响其它层)
- 针对某一层进行优化
- …
网络互连模型
国际标准(理论):OSI 7层
实际应用(实践):TCP/IP 4层
学习研究(学习):5层
-
OSI参考模型(Open System Interconnect Reference Model),具有7层结构,是国际标准组织ISO在1985年制定的(1985年之前已经有互联网了,但是很乱,大家都用自己的网络协议,不利于互联网的发展。)。用来规定两个设备之间数据传输应遵循什么标准。
-
OSI参考模型只不过是一种理论上的标准,太理论化了。制定OSI参考模型的那些专家们有可能过于理论化,过于学术派,不一定有实战经验(这些专家们有可能在1985年制定网络OSI参考模型之前甚至都没有过实战经验)。
-
TCP/IP协模型是已经在实际应用中得到认可的适合实战的网络模型(1985年之前那些已经在做互联网实战的公司、机构、团队、组织、个人等才知道到底什么样的网络模型才适合作标准),是适合传递数据、适合作标准、符合现实生活的。比如现在的HTTP请求过程走的就是TCP/IP协议这四层。
-
网络层(Network)和网际层(Internet)是一样的,叫法不同而已。
-
图中最右边的5层模型,是为了方便学习和研究而特意划分出来的。(物理层和数据链路层特别重要,因此拿出来做研究)
请求和响应过程
-
客户端和服务器之间收发数据不是直接进行的。需要遵循某种协议,走协议流程。
-
不管是什么协议,比如:HTTP、FTP、MQTT、RTMP,其数据传输的底层原理都是类似的,如下图所示那样对数据进行包装、拆包进行传输。
路由器是用于寻找主机(服务器)的,因此只需要三层就够了。
例子(可以点击旁边的PDU细节
查看具体的数据):
请求过程
响应过程
计算机之间的通信基础
计算机之间的通信基础
-
两台计算机之间通信之前需要知道对方的IP地址和MAC地址
-
IP地址是必须要知道的,MAC地址在发送数据过程中会被自动解析。
网卡和MAC地址
PS:同一网段下,计算机在通信之前都要先使用ARP地址解析协议(Address Resolution Protocol)来获取对方的MAC地址(如果没有对方的MAC地址的话),之后再去使用其他协议来进行通信。
-
计算机是使用网卡来接收数据的,而网卡拥有属于自己的MAC地址,因此我们得知道MAC地址才行。
-
一个网卡对应一个MAC地址
-
但是为什么我们只需要知道IP地址即可通信呢?因为MAC地址会被自动解析。
-
也就是说,不知道对方的MAC地址而只知道对方的IP地址,一样发送不了数据给对方,但庆幸的是,计算机已经自动帮助我们做好了MAC地址解析的工作。
ARP地址解析协议
-
ARP:Address Resolution Protocol
-
同一网段下,计算机之间要通信,必须先使用ARP来广播获取对方的MAC地址。
-
发送的数据包会有源IP地址、目标IP地址、源MAC地址、目标MAC地址
-
广播获取对方的MAC地址之后,本地计算机上会将对方的MAC地址缓存起来(静态缓存 or 动态缓存)。
ARP地址解析协议(广播协议)(Address Resolution Protocol),可以根据IP地址获取物理地址(MAC地址)
- 广播是在同一个网段中传播的,广播会传播到所有能连通的设备上。
- 同一个网段的所有能连通的终端都能够接收到广播(使用了广播地址:FFFF.FFFF.FFFF)
- 发广播的目的是获取对方的MAC地址
- 获取到对方的MAC地址才能进行真正的数据通信,发送数据到对方的网卡上。
- 获取到对方的MAC地址后,会被缓存到ARP表
半双工、全双工
计算机之间的连接方式
相同类型设备之间连接使用:交叉线
不同类型设备之间连接使用:直通线
网线直连(两台计算机)
- 同一个网段
- 只适用于两台计算机之间
同轴电缆(多台计算机)
- 同一个网段
- 没有智商,所有能连通的设备都能接收到发送的数据,不安全
- 中间断了,整个都瘫了,不可靠
- 半双工通信:同一时刻,通道中只能有一个方向传输数据,也就是说只能有一台机器发送数据,其他机器要想发送数据只能等待
集线器(多台计算机)
- 同一个网段
- 集线器解决了同轴电缆的一个问题:一台计算机出问题,不会影响其他计算机。不至于中间断了导致整个都崩溃瘫痪。
- 集线器和同轴电缆一样没有智商:会将数据(信号)发送给每个可以连通的设备,别人都可以收到发送出去的数据,导致其不安全和低效率。
- 计算机(终端)才有ARP缓存。可以使用
arp -a
来查看某台计算机缓存的MAC地址 - HUB集线器就是一个傻逼 ,没有缓存功能。
网桥(多台计算机)
- 同一个网段
- 有智商:会自学习(有一个地址表来缓存MAC地址);使用地址表来隔绝冲突域
- 有缺点:接口太少
地址表的作用:
- 如果网桥的地址表记录的很全的话,会大大提升发送数据的效率,并且起到隔绝冲突域的作用:
交换机(多台计算机)
- 同一个网段
- 多个接口
- 有智商:会和网桥一样去自学习记录MAC地址
- 比集线器安全,可以精准发送数据,不会将数据发送给其他机器
- 比网桥更加聪明,学习的更快,给其它计算机发送数据时也更加准确
- 交换机可以说是局域网的最终解决方案
- 如果要跨网段,需要使用路由器
- 如果全球所有的设备都用交换机连接(先不考虑IP地址是否够用的问题),那么就意味着,如果一台计算机设备要向另一台计算机设备发送数据,那么全球的所有设备(因为都处于同一广播域、处于同一网段)都会收到ARP广播,会造成广播风暴!
路由器(多台计算机、不同网段)
计算机不在同一个网段的话,需要使用路由器来连接
- 主机在发数据之前,首先会判断目标主机的IP地址跟它是否在同一个网段:
- 如果在同一个网段:ARP广播、通过 交换机/集线器 传递数据
- 如果不在同一个网段:通过路由器(网关)转发数据
- 每个网段都有一个网关(比如
IP:192.168.10.11;子网掩码:255.255.255.0
这台设备的网关一般是:192.168.10.1
) - 给路由器和PC分别配置好网关后,设备与设备就可以跨网段传输数据了
注意和一些细节
-
ping底层使用了ICMP(Internet Control Message Protocol)Internet控制报文协议
-
集线器、网桥、交换机、路由器等数据发送过程都可以使用PacketTracer工具进行模拟查看。
-
家用路由器内置了交换机的功能
参考
小码哥M了个J: 网络协议从入门到底层原理.
小码哥M了个J: 小码哥MJ网络协议公开课.
本文完,感谢您的关注支持!