五层网络协议(封装和分用)

目录

七层网络协议

网络通信过程中,需要涉及到的细节,其实是非常非常多的,如果要有一个协议来完成网络通信,就需要约定好方方面面的内容,非常多的细节,导致这个协议非常复杂。

怎么办呢?拆分。一个协议太复杂太庞大,非常不利于学习和维护,需要把一个高大全的协议,拆分成多个功能更单一,"小而美"的协议。拆分出来的协议太多了怎么办?为了让这些协议更好的相互配合,引入了协议分层,就好比一个公司一样的。

网络通信协议拆分的多了之后也是分成了很多层。把功能定位相似的协议放到同一层之中。上层协议会调用下层协议的功能,下层协议会给上层协议提供服务。

只有相邻的层次之间可以进行沟通,不能跨层次调用(就容易混乱)

协议分层的初心是为了让复杂的一个协议变成更简单的多个协议

还附带了一些好处:

1)上层协议直接使用下层协议即可,不需要了解下层协议的细节(相当于下层协议吧细节封装好了)

2)某一层的协议进行替换后,对于其他层没啥影响

五层网络协议

OSI七层网络协议,最初大佬们设计的时候,给出的方案,后来在实施过程中,太麻烦了,就简化成了五层。

应用层 :程序拿到数据之后,要用来干啥,解决什么问题

传输层:负责关注 网络数据包 起点和终点(从哪里来要到哪里去) 端到端之间的传输。

网络层:负责关注起点终点之间,要走哪条路(路径规划)

数据链路层:负责两个相邻节点之间的传输

物理层:通信过程中的基础设施

TCP/IP五层(或四层)模型:四层就不算物理层,物理层是纯硬件的。

说是五层,实际上下面这四层都是

在操作系统内核,硬件,驱动程序中已经实现好了(计算机内置了),咱们作为程序员在网络编程过程中能影响到的也就只有应用层了

  • 对于一台主机 ,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层
  • 对于一台路由器 ,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层
  • 对于一台交换机 ,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层
  • 对于集线器 ,它只实现了物理层

路由器工作在网络层,交换机工作在数据链路层

这里的路由器/交换机是"经典"的路由器交换机(教科书上的)。事实上,真实的交换机/路由器的功能更复杂,功能更复杂。很多交换机,也具有一些路由器的功能,也能工作在网络层。

很多路由器,也具备一些交换机的功能,也能工作在数据链路层。

甚至还有些交换机路由器可以工作在应用层。

封装

网络传输数据过程中,最核心的流程就是封装和分用

比如:A通过QQ给B发送一个hello

1.应用层

(应用程序)QQ

QQ从消息输入框获取到用户输入的hello

就要把这个字符串构造成一个应用层的数据包,

QQ这样的程序内部就设置了一个应用层协议,应用层数据包就是按照这个应用层协议约定的格式(字符串拼接)来构造的

应用程序就会调用操作系统提供的API,把这个数据包交给传输层。

2.传输层

传输层就会把上述数据作为一个整体,再构造成一个传输层的数据包,(传输层涉及到的协议,最主要的就是TCP和UDP

此处假定是使用UDP来进行通信,就会构造成一个UDP的数据包。

形如上述,添加报头的过程,就叫做"封装",其实就是 字符串拼接 。只不过拼的报头,具有一定的结构

拼好传输层数据包之后,就要把这个数据包进一步的交给下层,网络层继续进行封装了。

【交给下层,指的是,下层协议提供一组API(函数),上层调用这个API,并且把刚才构造好的数据通过参数传过去,下层协议就可以来处理这个数据了】

(UDP报头,虽然不能保护数据,但是可以起到"贴标签"类似效果,就能承载一些关键的用来转发数据的信息。对于UDP报头来说,承的最重要的信息就是

源端口 和目的端口)

3.网络层

这里涉及到的最核心的协议,IP协议

网络层IP协议,把刚才的传输层的UDP数据包作为一个整体,再拼上IP协议的报头,构造成一个IP数据包

IP报头还会包含一些辅助转发的关键信息,此处最关键的信息就是 源IP和目的IP

构造完成完整的IP数据包之后,IP协议继续调用数据链路层的API,把数据再交给数据链路层这里的协议进行处理。

4.数据链路层

数据链路层这里涉及到的核心协议->以太网

此处"以太"用来表示网络数据传输的介质

以太网就是日常最常见到的 有线网络

日常用到的网线,也叫做"以太网线",日常用到的网口也叫做"以太网口"

用到的交换机,也叫做"以太网交换机"

以太网数据帧,也是一IP数据包为一个整体,在这个基础上添加上帧头和帧尾

5.物理层

把上述这样的以太网数据帧,二进制结构转换成光信号/电信号/电磁波,然后进行发送

经过上述一系列的操作,数据终于从你的电脑上发送出去了!!

分用

暂时不考虑中间过程,假定数据包已经到达B的网卡了。B如何处理。B的处理过程,就称为"分用"

1. 物理层

B的物理层收到了光信号/电信号/电磁波,就会把这些物理信号转换成数字信号(二进制的0 1 0 1)得到一个以太网数据帧,进一步的把这个数据帧交给数据链路层处理

2.数据链路层

按照以太网数据帧的格式,来解析,取出其中的载荷,再交给上层协议~~

3.网络层 IP 协议

按照 IP 协议的格式进行解析,取出其中的载荷,再交给上层协议。

4.传输层 UDP 协议

按照 UDP 协议格式来解析,取出其中的载荷再交给上层协议

5.应用层

QQ应用程序

按照QQ应用程序内部的应用层协议格式来解析数据~~~

qq程序拿到这些信息之后,就会在窗口中给你弹出提示~

并且把消息/消息的发送者/发送时间 都显示到聊天窗口上

分用的过程,就是封装的逆向过程~~

相关推荐
梅洪23 分钟前
008静态路由-特定主机路由
网络·网络协议·tcp/ip
xxjkkjjkj2 小时前
HTTPS
网络协议·http·https
网络安全Max2 小时前
网络安全基础
网络·安全·web安全
vener_2 小时前
[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED]
网络·网络协议·ssl
Dynadot_tech4 小时前
使用API管理Dynadot域名,设置默认域名服务器ip信息
网络·api·域名注册·dynadot
幽兰的天空4 小时前
Java基础之网络编程:开启网络通信的神秘之门
java·开发语言·网络
jsons14 小时前
linux route没有默认路由解决
linux·运维·网络
Heaven6454 小时前
4.4 可靠传输的工作原理
网络·网络协议·计算机网络·运输层
忆往夕梦4 小时前
Linux - 防火墙
linux·运维·网络