网络模型
常见的网络模型有OSI参考模型和TCP/IP模型,以下将会介绍两种参考模型的区别与每层的作用。
一、参考模型
1.OSI
OSI参考模型作为开始时的参考模型,对网络划分细致,基本被用于理论研究和教学目的。OSI将网络划分为一个七层模型:
- 应用层(Application Layer)
- 表示层(Presentation Layer)
- 会话层(Session Layer)
- 传输层(Transport Layer)
- 网络层(Network Layer)
- 数据链路层(Data Link Layer)
- 物理层(Physical Layer)
在模型中,根据不同的功能将网络划分,越往上的层级越靠近用户,越往下的层级越靠近物理设备,每层的功能如下表所示:
名称 | 作用 | 数据单元 |
应用层 | 网络服务与最终用户的一个接口(用户操作) | data |
表示层 | 数据的表示、安全、压缩(人的语言翻译成计算机) | data |
会话层 | 建立、管理、中止会话 | data |
传输层 | 定义传输数据的协议端口号,以及流控和差错校验 | 数据段 |
网络层 | 定义逻辑地址、实现不同网络之间的寻址,理论选择转发数据的最佳路径 | 数据包 |
数据链路层 | 建立逻辑连接、进行硬件地址寻址、差错校验等功能(交换机 网卡) | 数据帧 |
物理层 | 建立、维护、断开物理连接 | 比特流 |
2.TCP/IP
TCP/IP是OSI模型的简化,更加实用。TCP/IP将网络划分为五层模型:
- 应用层(Application Layer)
- 传输层(Transport Layer)
- 网络层(Network Layer)
- 数据链路层(Data Link Layer)
- 物理层(Physical Layer)
在模型中,将原先联系紧密的应用、表示、会话层合并为应用层,保留了其他层级。TCP/IP是我们在研究网络时的主要对象。
二、网络协议
由于网络被划分了,所以在网络中的协议也自然有自己工作的层级,以下将简略介绍每一层的重要协议。
1.数据链路层(MAC)
在数据链路层中常见的协议有两个,分别是以太网协议802.3和无线局域网协议802.11,还有点对点PPP和帧中继等较少使用。
2.网络层(IP)
在网络层中,主要是IP协议,IPv4和IPv6就属于IP协议,IP协议使用IP地址来唯一标识主机和网络,并通过路由选择算法来确定数据包的传输路径。
我们常说的OSPF等协议是基于网络层的协议,但不属于传输层。
3.传输层(Port)
传输层的协议常用的有两个:TCP和UDP。两种传输协议的不同如下:
- TCP:
- 提供可靠的、面向连接的数据传输服务。
- 数据传输过程中进行错误检测、重传丢失的数据包以及排序等操作,确保数据的可靠性和完整性。
- 适用于需要可靠数据传输的应用,如文件传输、电子邮件发送等。
- TCP连接的建立是三次握手,断开连接是四次挥手。
- UDP:
- 提供无连接的数据传输服务,不保证数据传输的可靠性。
- 不进行数据包的重传或错误检测,数据可能会丢失或乱序到达。
- 适用于对实时性要求高、可以容忍部分数据丢失的应用,如音频、视频流传输等。
- UDP更加轻量级,没有TCP的连接建立和断开过程。
总的来说TCP提供可靠的传输,UDP提供快速的传输。这两种协议可以根据需求使用,例如我们打开LOL,进入客户端时,使用的是TCP的可靠传输,当我们进入游戏时,就会变成UDP的快速传输。
同时,我们看应用层的协议时,也可以发现他们是需要选择TCP和UDP协议划分的。
4.应用层
应用层是基于传输层的协议,所以通常需要讨论端口号和传输层协议。
名称 | 端口号 | 传输层协议 | 功能 |
HTTP(超文本传输协议) | 80 | TCP | 用于在Web浏览器和Web服务器之间传输超文本数据,是Web应用中最常用的协议。 |
HTTPS(安全超文本传输协议) | 443 | TCP | 是HTTP的安全版本,使用SSL/TLS协议进行加密通信,提供更安全的数据传输。 |
FTP(文件传输协议) | 21 | TCP | 用于在客户端和服务器之间传输文件,支持文件上传,下载,删除等操作 |
SMTP(简单邮件传输协议) | 25 | TCP | 用于在邮件服务器之间传输电子邮件,发送和接收邮件的标准协议。 |
POP3(邮局协议版本3) | 110 | TCP | 用于从邮件服务器上接收电子邮件,允许用户在本地设备上下载邮件 |
IMAP(互联网邮件访问协议) | 143 | TCP | 与POP3类似,也是用于接收邮件,但它提供更强大的功能,如在服务器上管理邮件。 |
DNS(域名系统) | 53 | UDP | 用于将域名解析为对应的IP地址,在互联网中实现域名到IP地址的转换。 |
SNMP(简单网络管理协议) | 161 | UDP | 用于管理和监控网络设备,收集和修改设备的状态信息。 |
DHCP(动态主机配置协议) |
67(服务器) 68(客户端) |
UDP |
用于自动分配印地址和其他网络配置信息给客户端设备,使得网络设置更加筒使。 |
SSH (安全外壳协议) | 22 | TCP | 用于通过加密通信在网络上安全地访问远程计算机和执行命令。 |
三、数据封装
在了解了网络模型和网络协议后,我们来了解下数据从一台设备发送到另一台设备上的封装过程。
首先,在应用层中生成一段数据;随后在传输层中,需要加上传输层报头,设置数据的传输类型是TCP或UDP;在网络层中,加上IP报头,目的是让路由器等三层设备识别并转发;在数据链路层中加入MAC报头和校验报尾,MAC报头用于二层转发,校验报尾用于检验数据完整性。而解封装过程相反。
四、报文
1.应用层
以HTTP举例:
2.传输层
TCP报文结构
UDP报文结构
3.网络层
4.数据链路层
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程