和我们现实生活中发快递一个思路,1. 选陆运还是空运?2. 物流公司选哪家服务比较好?3. 收货地址是啥?4. 怎么能确切发货到人?5. 怎么让他知道我发的什么?借助这个思路,计算机五层网络模型由此而生。
五层网络模型
上面用了发快递的五步骤来举例说明,那么具体到抽象,在网络世界中,网络完成一条信息的发送也被分成了五步,我们通常称它为五层网络模型。
应用层
应用层位于模型的最顶层,主要负责处理特定的应用程序细节。
应用层主要负责接口提供、数据封装、协议支持、用户交互和会话管理等,我们主要浅谈一下它对于协议的支持。
协议支持
- HTTP超文本传输协议,多用于Web浏览
- SMTP(简单邮件传输协议),多用于发送邮件
- FTP(文件传输协议),多用于文件上传和下载
- POP3(邮局协议版本3),多用于接收邮件
传输层
负责端到端通信和 数据传输服务 的关键部分,主要负责在不同主机间的进程(应用程序实例)提供可靠或不可靠的数据传输。(确保传输的可靠性)
在传输层中,有两个最常见的协议:
TCP协议
前端中绝大多数网络传输都是HTTP+TCP协议。
- 三次握手:TCP通过三次握手建立连接,能够准确查找。
UDP协议
- UDP不建立连接,不保证数据包的顺序,也不重新传输丢失的数据包。
- 基于上面的原因,UDP比TCP有更低的延迟,适用于对实时性要求较高的应用,如视频会议和在线游戏。
前端面试或者应用中,我们基本上了解上面两个内容就行了。
至于下面的三个层,更像是做网络通信的同学更在乎的事情,比如5G、WIFI6等。
网络层
网络层主要负责数据包在网络中的传输和路由选择。(从哪里到哪里?)
数据链路层
数据链路层负责在相邻网络设备之间的媒体上建立、维护和解除数据链路。(找物理地址)
物理层
物理层是网络模型中的最底层,它处理数据传输的物理和电气规范。(比如光纤、电缆?)
一条消息的发送
让我们通过一个示例详细解释张三发送给李四一个消息的过程,以及这个消息是如何在五层网络协议(应用层、传输层、网络层、数据链路层、物理层)中传输的。
发送过程(正向封装)
- 应用层:张三用QQ写了一段话。当他点击发送时,应用层会对消息进行封装,可能包括加密和压缩,并添加特定于应用的头部信息,如字符编码和消息类型。
- 传输层:消息向下传递到传输层。根据使用的协议(TCP或UDP),传输层会添加其头部信息,包括源端口和目的端口,以及可能的错误检测和校正信息。如果是TCP,还会进行连接控制和流量控制。
- 网络层:然后消息传递到网络层,网络层添加自己的头部,包括源IP地址和目的IP地址。这层负责选择最佳路径将数据包从张三发送到李四。
- 数据链路层:网络层的数据包进一步被封装成帧,并添加数据链路层的头部和尾部,包括源和目的MAC地址、错误检测等信息。数据链路层确保数据包能够在相邻节点间正确传输。
- 物理层:帧被转化为电信号(如果是有线网络)或电磁波(如果是无线网络),通过物理媒介(如以太网电缆、无线信号)传输。
接收过程(逆向解析)
- 物理层:李四这边的物理层接收到电信号或电磁波,并将其转换回数字数据。
- 数据链路层:数据链路层移除帧的头部和尾部信息,进行错误检查,然后将数据包向上传递给网络层。
- 网络层:网络层移除自己的头部信息,检查目的IP地址,确认数据包已经到达正确的目的地,然后将数据传递给传输层。
- 传输层:传输层移除其头部信息,根据端口号确定数据应该传递给哪个应用程序。如果是TCP协议,它还负责重新组装数据段的顺序。
- 应用层:最后,数据到达应用层,应用层移除任何应用级的头部信息,最终将原始消息展示给李四。
看图
四层?五层?七层?
七层: 历史问题,只存在于教科书。
四层和五层: 网络传输大致过程,看怎么理解划分。