C++网络编程之网络模型

概述

        所谓网络模型,是指一组定义了网络通信功能和行为的规则和标准。这些模型通过将网络通信功能分解成不同的层次,使得网络通信更加模块化,也更易于理解和实施。每一层都有其特定的功能,通过层与层之间的交互,确保数据能够从源端正确无误地传输到目的端。

        网络模型的核心思想是:将复杂的网络通信任务划分为若干个独立的层次,每一层专注于完成特定的功能,并与相邻层进行交互。这样做的好处是每一层可以独立设计、测试和优化,同时降低了系统的复杂度,提高了可维护性和互操作性。

OSI七层模型

        OSI七层模型是由国际标准化组织(ISO)提出的一种网络通信模型,它将网络通信功能分解为七个层次,每个层次都有其特定的功能。OSI七层模型提供了一个标准化的框架,以帮助人们理解和实现网络通信的不同方面。OSI七层模型具体包括:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。下面,我们逐一进行介绍。

        1、物理层

        定义了网络硬件层面的连接标准,包括物理媒介(比如:电缆、光纤)、电气特性(比如:电压水平、信号频率)、机械特性(比如:插头形状、尺寸)以及过程特性(比如:如何建立和断开物理连接)。物理层主要负责原始比特流的传输,即数据的物理传输。

        应用了物理层的设备主要有:双绞线、同轴电缆、光纤、集线器、中继器等。

        2、数据链路层

        负责节点间的数据传输,即在同一物理网络内的设备之间的数据帧传输。数据链路层提供错误检测机制(比如:校验和、循环冗余校验CRC)和错误恢复机制,并负责流量控制,确保数据不会过快地发送而导致接收方无法处理。

        应用了数据链路层的设备主要有:网桥、交换机等。

        3、网络层

        负责路由选择和逻辑寻址,确定数据包从源到目的地的最佳路径。网络层处理IP地址和子网掩码,进行逻辑寻址和路由选择。同时,还提供服务质量选项,比如:优先级和延迟保证。

        应用了网络层的设备主要有:路由器等。

        4、传输层

        提供端到端的通信,确保数据可靠传输。传输层负责建立、维护和终止连接,保证数据的顺序性和完整性。另外,还支持流控和拥塞控制,防止网络拥塞。

        应用了传输层的协议主要有:TCP(传输控制协议)、UDP(用户数据报协议)等。

        5、会话层

        负责建立、管理和终止表示层实体之间的通信会话。会话层提供同步服务,确保数据按正确的顺序传输。

        6、表示层

        用于处理数据的表示形式,比如:加密、解密、压缩、解压缩等。这样,可以确保数据对应用层来说是透明的,即应用层无需关心数据的具体表示形式。

        表示层可参考JPEG、MPEG等编码格式的转换。

        7、应用层

        为应用程序提供网络服务,使应用程序能够访问网络功能。应用层提供应用程序所需的接口,允许应用程序与网络进行交互。

        应用层可参考HTTP、FTP、SMTP、DNS等协议。

        在数据从应用层发送到物理层的过程中,每一层都会对数据进行特定的处理,添加必要的头部信息。而在数据从物理层接收并向上层传递的过程中,则会移除相应的头部信息。我们以Web浏览器向Web服务器请求一个网页为例,来说明数据的封装与解封装过程。

        对于Web浏览器来说,其数据的封装过程如下。

        (1)应用层:生成HTTP请求。

        (2)表示层:可能对HTTP请求进行编码或加密。

        (3)会话层:可能添加会话控制信息。

        (4)传输层:添加TCP头部,形成TCP段。

        (5)网络层:添加IP头部,形成IP数据包。

        (6)数据链路层:添加帧头部(MAC地址),形成帧。

        (7)物理层:将帧转换为比特流,通过网络发送到服务器。

        对于Web服务器来说,其数据的解封装过程如下。

        (1)物理层:接收比特流,重新组装成帧。

        (2)数据链路层:移除帧头部,得到IP数据包。

        (3)网络层:移除IP头部,得到TCP段。

        (4)传输层:移除TCP头部,得到HTTP请求。

        (5)会话层:移除会话控制信息。

        (6)表示层:解码或解密HTTP请求。

        (7)应用层:将HTTP请求传递给Web服务器应用。

        通过上述封装和解封装的过程,数据能够正确地从源端传输到目的端,并确保每一层的数据都能够被正确处理。这种层次化的处理方式,不仅简化了网络通信的设计,还增强了系统的灵活性和可扩展性。为了便于理解整个过程,可以参考下面的流程图。

TCP/IP四层模型

        TCP/IP四层模型是一个广泛接受的网络协议栈分层模型,用于描述和实现互联网通信。这个模型将网络通信过程划分为四个层次,每个层次都负责特定的任务,并与其他层次协同工作,以确保数据能够在不同的计算机和网络设备之间准确、高效地传输。TCP/IP四层模型具体包括:链路层、网络层、传输层、应用层。下面,我们逐一进行介绍。

        1、链路层

        负责设备之间的物理连接和数据帧的传输。它处理物理媒介(比如:以太网、Wi-Fi、光纤等)上的信号传输,确保数据在物理链路上正确无误地从一个节点传输到另一个节点。

        链路层的数据单元为:帧(Frame),主要协议有:以太网(Ethernet)、Wi-Fi(IEEE 802.11)、ARP(地址解析协议)、RARP(逆地址解析协议)等。

        2、网络层

        负责数据包的路由和转发,即确定数据从源主机到目的主机的最佳路径。它确保数据包能够跨越多个网络,从源端传输到目的端。

        网络层的数据单元为:数据包(Packet),主要协议有:IP(Internet Protocol)、ICMP(Internet Control Message Protocol)、IGMP(Internet Group Management Protocol)等。其中,IP协议是核心,它负责数据包的封装、寻址和路由;ICMP用于发送控制消息,比如:错误报告;IGMP用于多播和广播管理。

        3、传输层

        负责端到端的通信,确保数据在发送方和接收方之间正确、可靠地传输。它提供了两种类型的服务:面向连接的(比如:TCP)、无连接的(比如:UDP)。

        传输层的数据单元为:TCP的段(Segment)和UDP的数据报(Datagram),主要协议有:TCP、UDP等。关于TCP、UDP协议的具体内容,后面的章节会进行详细介绍。

        4、应用层

        是用户与网络的接口,它提供了各种网络服务,比如:文件传输、电子邮件、网页浏览等。应用层协议定义了数据如何被格式化,以及数据如何在网络上进行交换。

        应用层的数据单元为:数据(Data),主要协议有:HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、POP3(邮局协议版本3)、DNS(域名系统)等。在应用层,数据以用户友好的格式(比如:文本、图片、视频等)存在。但在网络上传输时,这些数据会被封装成适合网络传输的格式。

        可以看到,模型的每一层都负责特定的任务,并通过标准的协议和接口与其他层次进行交互,从而实现了复杂而可靠的网络通信。TCP/IP四层模型为互联网通信提供了一个清晰、高效的架构,使得各种设备和应用程序能够相互通信,共同构成了互联网的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149801.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于Qt5.12.2开发 MQTT客户端调试助手

项目介绍 该项目是一个基于 Qt 框架开发的桌面应用程序,主要用于与 MQTT 服务器进行连接和通信。通过该应用,用户可以连接到 MQTT 服务器,订阅主题、发布消息并处理接收到的消息。项目使用 QMqttClient 类来实现 MQTT 协议的客户端功能&…

代码随想录Day17 图论-2

103. 水流问题 本题思路很简单 要求我们找到可以满足到达两个边界的单元格的坐标 有一个优化的思路就是 我们从边界的节点向中间遍历 然后用两个数组表示 一个是第一组边界的数组 一个是第二边界的数组 如果两个数组都遍历到了某一个单元格 就说明该单元格时满足题目要求的 #…

初识Java(六)(一维数组)(自己学习整理的资料)

目录 一.复习题 二.数组 三.一维数组 四.数组排序 五.数组的插入和删除 1.插入元素 插入元素案例 2.删除元素 删除元素案例 六.顺序查找 顺序查找案例 七.二分查找 二分查找案例 八.冒泡排序 笔记 一.复习题 (一)求S1!2&#x…

微软宣称其新工具可纠正人工智能幻觉 但专家依然对此表示怀疑

人工智能经常胡言乱语,微软现在说它有办法解决这个问题,但我们有理由对此持怀疑态度。微软今天发布了一项名为"更正"(Correction)的服务,它可以自动修改人工智能生成的与事实不符的文本。Correction 首先会标…

Golang | Leetcode Golang题解之第435题无重叠区间

题目&#xff1a; 题解&#xff1a; func eraseOverlapIntervals(intervals [][]int) int {n : len(intervals)if n 0 {return 0}sort.Slice(intervals, func(i, j int) bool { return intervals[i][1] < intervals[j][1] })ans, right : 1, intervals[0][1]for _, p : ra…

js实现多行文本控件textarea,根据文本内容自适应窗口全部显示

概述 本人在使用html控件textarea&#xff0c;多行显示的时候&#xff0c;希望根据后台实际的文本&#xff0c;来全部显示文本内容&#xff0c;而不用再去操作滚动条查看全部文本。 本功能实现的难点在于&#xff0c;计算当前文本显示有多少行。 软件环境 编辑器&#xff1a…

使用 UWA Gears 测试小游戏性能

UWA Gears 是UWA最新发布的无SDK性能分析工具。针对移动平台&#xff0c;提供了实时监测和截帧分析功能&#xff0c;帮助您精准定位性能热点&#xff0c;提升应用的整体表现。 随着小游戏的规模和用户量持续增长&#xff0c;玩家对于小游戏的性能要求也越来越高。为了能够给玩…

现代桌面UI框架科普及WPF入门1

现代桌面UI框架科普及WPF入门 文章目录 现代桌面UI框架科普及WPF入门桌面应用程序框架介绍过时的UI框架MFC (Microsoft Foundation Class)缺点 经典的UI框架**WinForms****QT****WPF** 未来的UI框架**MAUI****AvaloniaUI** WPF相对于Winform&#xff0c;QT&#xff0c;MFC的独立…

1.1 elasticsearch分布式集群基本搭建(centos7.x + elaticsearch7.11.1)

【1】分布式分片集群基础概念 【1.1】ES的分布式集群有什么用&#xff1f; 高可用 高可用(High Availability)是分布式系统架构设计中必须考虑的因素之一&#xff0c;它通常是指&#xff0c;通过设计减少系统不能提供服务的时间。如果系统每运行100个时间单位&#xff0c;会有…

ubuntu22.04磁盘挂载(多磁盘和单磁盘挂载)

多磁盘挂载到同一个目录 # 如果没有安装逻辑卷管理系统工具sudo apt install lvm2 # 查看磁盘分区sudo fdisk -l # 新建物理卷sudo pvcreate /dev/nvme0n1 /dev/nvme1n1 # 查看现有物理卷信息sudo pvdisplay # 新建物理卷sudo vgcreate dnyjy_vg /dev/nvme0n1 /dev/nvme1n1…

微服务之服务保护

Sentinel引入Java项目中 一&#xff1a;安装Sentinel 官网地址&#xff1a;https://github.com/alibaba/Sentinel/releases 二&#xff1a;安装好后在sentinel-dashboard.jar所在目录运行终端 三&#xff1a;运行命令&#xff0c;端口自己指定 java -Dserver.port8090 -Dcs…

Unity 热更新(HybridCLR+Addressable)-资源更新

七、资源更新 创建一个叫Aot的文件夹&#xff0c;用来存放不会热更新的资源 这个修改为第三个 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b8be5e6465184ad5ad6173c6870bfa06.png 这个是更新 在更新或者打包时遇到端口被占的报错&#xff0c;不用理会&#xf…

frp内网穿透常见问题

Frp编译和部署比较复杂&#xff0c;多端口映射时或者连接数多的情况下会出现不稳定的现象&#xff0c;不适合小白使用&#xff0c;而且仅是上一代的内网穿透技术&#xff0c;生产环境使用建议选择稳定性比较高的产品&#xff0c;如神卓互联、花生壳等&#xff0c;都是采用C语言…

Springboot原理之bean的依赖功能、自动配置

1. Bean管理 Spring 当中提供的注解 Component 以及它的三个衍 生注解&#xff08; Controller 、 Service 、 Repository &#xff09;来声明 IOC 容器中的 bean 对象&#xff0c;同时我们也学 习了如何为应用程序注入运行时所需要依赖的 bean 对象&#xff0c;也就是依赖注…

电池快充协议芯片

1&#xff1a;18650充电快充规则 电池知识 | 东莞市恒帝电子科技有限公司 (heldee.com) 锂电池快速充电知识【钜大锂电】 (juda.cn)18 锂电池和18650锂电池能不能快速充电&#xff0c;四种充电方式讲解 | 东莞市恒帝电子科技有限公司 (heldee.com) 2&#xff1a;国产厂家 …

光子架与电子架 -- 主从子架

主从子架模式可以实现物理上的多个子架在网管上作为一个网元统一管理&#xff0c;这样可以节省IP资源与管理开销&#xff0c;方便维护。 主从子架级联模式 在主从子架模式下&#xff0c;仅主子架可以和网管相连。和网管相连的主子架所在网元为网关网元。主从子架支持树型级联和…

node-rtsp-stream、jsmpeg.min.js实现rtsp视频在web端播放

1. 服务地址&#xff08;私有&#xff09;&#xff1a;https://gitee.com/nnlss/video-node-server 2.node-rtsp-stream 需要安装FFMPEG&#xff1b; 3.给推拉流做了开关&#xff0c;可借助http请求&#xff0c;有更好方式可联系&#xff1b; 4.存在问题&#xff1a; 1&…

浅谈提示工程之In-context learning技术

提示工程之In-context learning技术&#xff1b; 通过一张图片围绕下边几个方面进行简单说明 概念起因本质结构注意事项 日常总结

C++(9.24)

头文件 #ifndef MY_STRING_H #define MY_STRING_H#include <iostream>class My_string { private:char *ptr; // 指向字符数组的指针int size; // 字符串的最大容量int len; // 字符串的当前长度public:My_string();My_string(const char *src);My_string(const My_s…

Error:Decorators are not valid here. 使用Angular中的装饰器

Decorators are not valid here&#xff0c;项目中出现这个提示信息&#xff0c;说明装饰器未知错误、或者在不支持的元素上使用了装饰器。 如下图所示&#xff0c;我在NgModule装饰器后面加了一个导出方法&#xff0c;加完之后控制台提示了如下错误&#xff1a;Error TS1206&a…