文章目录
- tcp/ip分层模型
- 封装和分用
tcp/ip分层模型
上面这个图主要介绍了osi七层模型和tcp/ip五层模型(有的资料上说的是tcp/ip四层模型,把物理层算在了硬件设备上,这篇文章还是按照五层模型来讲)。但osi七层模型实现起来比较复杂,现在也很少使用,这篇文章就主要讲tcp/ip五层模型。
tcp/ip分层模型,分为应用层,传输层,网络层,数据链路层和物理层,每一层处理特定的功能,同时与上一层和下一层进行通信。下面我们将逐层详细介绍。
应用层
应用层是TCP/IP协议栈的最高层,它为应用程序提供网络通信的接口和服务。在这一层,应用程序使用协议(如HTTP、FTP、SMTP等)来实现数据传输和通信。应用层的协议数据单元被称为报文。
常见的应用层协议有:
- HTTP(超文本传输协议):在Web浏览器和服务器之间传输超文本和其他资源。
- FTP(文件传输协议):用于在客户端和服务器之间传输文件。
- SMTP(简单邮件传输协议):用于在邮件服务器之间传输电子邮件。
传输层
传输层负责在两个网络节点之间提供端到端的通信服务。它使用传输协议(如TCP或UDP)来实现可靠的数据传输。传输层的数据单元被称为段。
- TCP(传输控制协议):提供面向连接的可靠数据传输。它负责将数据拆分成小的数据包,并确保它们的有序传输。TCP还提供错误检测和纠正机制。
- UDP(用户数据报协议):提供无连接的不可靠数据传输。它是一种无状态协议,适用于实时应用程序和不需要数据完整性的场景。
网络层
网络层负责在不同的网络之间进行数据传输和路由选择。它使用IP协议将数据包从源节点传输到目标节点。网络层的数据单元被称为IP数据报。
- IP(互联网协议):提供网络间的数据传输。它负责将数据包分组并将其从源节点发送到目标节点。IP协议还包括寻址机制和路由选择。
数据链路层
数据链路层负责在相邻网络节点之间提供可靠的数据传输。它将IP数据报转换为帧,并在物理介质上进行传输。数据链路层的数据单元被称为帧。
- 以太网(Ethernet)是一种常见的数据链路层协议。
- Wi-Fi(无线局域网)也是一种数据链路层协议,用于在无线网络中进行数据传输。
物理层
物理层负责在网络中传输二进制数据。它处理物理介质的连接和电信号信号传输。物理层不关心数据的含义,只负责将比特流从一个节点传输到另一个节点。
- 物理层协议包括以太网的物理接口、光纤传输和无线电频率。
思考:路由器和交换机有什么区别?
- 功能:路由器主要负责将数据包从一个网络传递到另一个网络,它使用路由表来决定数据包的最佳路径。路由器能够实现网络之间的连接,并对数据包进行转发和路由选择。交换机主要负责在局域网内部进行数据包的转发,它使用MAC地址表来决定数据包的目标地址。
- 工作层次:路由器工作在网络层(第三层),负责处理IP数据包,执行网络寻址和路由选择。交换机工作在数据链路层(第二层),负责处理帧,使用MAC地址进行数据包的转发。
介绍完了tcp/ip五层协议,接下来看看在网络中是如何进行通信的。
封装和分用
举个例子:用户A通过微信给用户B发送早安。
用户A
(1)应用层:微信应用程序
微信就会把用户A输入的“早安” 打包成一个应用层的数据报,这个数据包由程序员自己设定,假设就按照下面这种格式进行打包。
上图中我设置了四个字段,使用,来分割,这就构造了一个应用层的数据报,这个规则就是我约定的应用层协议,(应用层协议往往需要根据场景的需要,由程序员自己设置),此时就可以把应用层数据报通过操作系统的api
传递给传输层。
(2)传输层
传输层将应用层数据再次进行打包,变成传输层数据报。这里打包的本质是字符串的拼接,在刚才应用层数据的基础上拼接上传输层的报头。
传输层典型的协议是TCP和UDP,此处使用UDP协议。
一个数据报 = 报头 + 载荷
此时就可以把传输层数据报交给网络层
(3)网络层
网络层最主要的协议是IP协议,下面是一个IP数据报
构造完整的Ip数据报后,IP协议会继续调用数据链路层的api,把数据传递给数据链路层的协议进行处理。
(4)数据链路层
数据链路层这里涉及到的核心协议是以太网,此处“以太表示网络数据传输的介质”,以太网就是我们日常中常见的有线网络。以太网数据帧包括帧头和帧尾。
构造好后,传递给物理层。
(5)物理层
把上述这样的以太网数据帧(二进制结构)转换成电信号/光信号/电磁波 然后进行发送。
向上面添加报头的操作就是封装
暂时不考虑中间过程,假设数据报已经到达用户B的网卡了,用户B如何处理?用户B处理的过程就是分用。
(1)物理层
当用户B的物理层收到光信号/电信号,电磁波后,就会把对应的物理信号转化成数字信号(二进制),得到一个以太网数据帧,进一步把这个数据帧传递给数据链路层进行处理。
(2)数据链路层 以太网
数据链路层得到下面的以太网数据帧,将得到的以太网数据帧取出其中的载荷交给网络层。
(3)网络层 IP协议
网络层得到下面的IP数据报,将得到的IP数据报取出其中的载荷交给传输层。
(4)传输层 UDP协议
传输层得到下图的UDP数据报,取出UDP报头的载荷传递给应用层
(5)应用层 微信应用程序
按照微信内部的应用层协议来解析数据。
分用的过程就是封装的逆向过程
但在现实生活中,两台设备大概率不会直接通过网线连接,而是通过多个交换机路由器相连接。拿经典的交换机和路由器来说,交换机会封装分用到数据链路层,路由器会封装分用到网络层。