网络编程—网络概念

目录

1 网络分类

1.1 局域网

1.2 广域网

2 常见网络概念

2.1 交换机

2.2 路由器

2.3 集线器

2.4 IP地址

2.5 端口号

2.6 协议

3 网络协议模型

3.1 OSI七层模型

3.2 TCP/IP五层模型

3.3 每层中常见的协议和作用

3.3.1 应用层

3.3.2 传输层

3.3.3 网络层

3.3.4 数据链路层


1 网络分类

1.1 局域网

        局域网Local Area Network,简称LAN,是一种本地的私有网络(内网),通过网线、交换机、路由器等设备组成的能让主机间进行网络通信的网络结构。

1.2 广域网

        广域网Wide Area Network,简称WAN,是通过路由器把多个局域网组建成大规模网络范围的网络结构。

        局域网和广域网是一对相对的概念,没有明显的主机数量界限之分。即如果把各个城市组建的网络看成局域网,那整个国家把各个城市互联起来,就组成广域网。同时国家组成的网络看成局域网,那么整个世界组成的网络就是广域网(这种情况下就是我们所说的互联网(Internet))。

2 常见网络概念

2.1 交换机

        交换机的出现解决了主机间仅通过网线互联的复杂网络结构和成本高昂的问题,主要用于主机间的数据帧的转发问题。简而言之就是交换机把多台设备组建成局域网。

2.2 路由器

        路由器相信大家都熟悉,有WAN口(一般蓝色,一个口)和LAN口(一般黄色,多个口),WAN口接入外部公网,LAN口实现局域网的主机互联。因此路由器主要是实现不同网络的通信问题,即可以组建广域网。

2.3 集线器

        早期的局域网内主机互联工具,但是功能非常有限,通信通道是独占式,即两个主机通信时,其他主机无法通信。

2.4 IP地址

        网络设备在网络中的地址,因为网络中设备繁多,传输的数据只有知道地址才知道传给哪个设备。常见有IPv4版本(32位二进制数)和IPv6版本(128位二进制数)。

2.5 端口号

        端口号主要用来定位进程,因为数据根据IP地址传入到主机后,主机中的进程同时可能有多个,因此需要通过端口号(0-65535)绑定。不同进程不能同时绑定一个端口号,一个进程能同时绑定多个端口号(比如子进程)

2.6 协议

        如果说IP地址、端口号解决了通信设备和进程的定位问题,物理设备比如网线、无线设备等解决了通信设备的数据传输方式问题(光信号和电信号),那么协议解决的问题就是如何统一数据格式的规范问题(数据如何解析,如何建立传输数据的连接等等),即是一种约定,共同遵守这个约定才能通信。

        协议三要素:语法、语义、时序。语法:数据与控制信息的结构或格式。语义:需要发出何种控制信息,完成何种动作以及做出何种响应。时序:事件实现顺序的详细说明。

        比如在物理设备传输的信号中,如果是光信号,那就约定不同的频率表示不用的信息,高频1,低频0。如果是电信号,那就约定高电平是1,低电平是0。通过这种协议就可以进行二进制编码,从而可以让主机进行识别。

3 网络协议模型

        由于协议种类太多,但是协议之间的作用很多都是相似的,因此对协议进行分层,就有了我们经常听到的OSI七层模型和TCP/IP五层模型。

3.1 OSI七层模型

        OSI七层模型实际上在会话层、表示层和应用层过于复杂,不实用,因此是仅存于理论层面的模型,实际上应用最广泛的是TCP/IP五层模型。

3.2 TCP/IP五层模型

        TCP/IP五层模型把OSI七层模型中的会话层、表示层和应用层统一为应用层。物理层和数据链路层是物理设备和驱动程序的范畴,网络层和传输层是操作系统所负责的,应用层是应用程序所负责的,因此软件开发人员的主要工作就是在应用层进行网络编程。

        封装:像上图一样,数据发送方把数据从上层开始,层层包装成数据包传递给下层的过程就是封装。

        分用:当数据接收方接收到数据后,从下层开始层层拆解其中对应部分的信息的过程就是分用。

        注意:这里讨论的交换机和路由器是传统的2层交换机和3层路由器,随着技术进步,现在已经出现了3层、4层交换机和4层路由器等等。即考虑交换机和路由器的工作场景:交换机工作在数据链路层(封装分用到数据链路层),路由器工作在网络层(封装分用到网络层)。

        分层后,协议的使用方(上层)不需要知道协议是如何实现的,只需要使用协议提供的接口即可;而协议提供方(下层)不需要暴露所有实现细节,只需要提供接口即可。就好像发送方在某层直接把数据发送给接收方对应的层,即实现了封装的特性。

3.3 每层中常见的协议和作用

3.3.1 应用层

        HTTP和HTTPS:采用TCP协议传输,用于在客户端和服务器之间传输超文本数据,通常用于Web浏览器和Web服务器之间的通信,HTTP协议引入加密机制(SSL/TLS)就变成了HTTPS。

        DNS:通常采用UDP传输,地址解析协议,将域名解析为对应的IP地址。

        DHCP:动态主机配置协议,采用UDP作为传输协议,允许服务器向客户端动态分配IP地址和配置信息。

        FTP:采用TCP协议作为传输协议,用于在客户端和服务器之间传输文件,支持上传和下载文件的功能。

        SMTP:采用TCP协议作为传输协议,用于在邮件服务器之间传输电子邮件,负责发送邮件。

        POP3:采用TCP协议作为传输协议,用于从邮件服务器上下载邮件到本地计算机,负责接收邮件。

        SSH:基于TCP,用于远程登录和执行命令,提供了加密的网络连接,保证了通信的安全性。

3.3.2 传输层

        TCP:提供可靠的、面向字节流、有连接的数据传输服务,确保数据的可靠性、顺序性和完整性。TCP适用于对数据传输质量要求较高的场景,如文件传输、网页浏览等。

        UDP:提供无连接的数据传输服务,面向数据报,不保证数据的可靠性,也不保证数据的顺序性和完整性。UDP适用于实时性要求较高、对数据传输质量要求不那么严格的场景,比如音视频传输、在线游戏(地图实时加载出现不完整)等。

3.3.3 网络层

        IP:是互联网中最基本的协议,用于在网络中传输数据包。IP协议定义了数据包的格式、寻址方式和路由选择等信息,是整个互联网的基础。

        RIP:路由信息协议,是基于距离矢量算法的路由协议,利用跳数来作为计量标准。

        OSPF:开放式最短路径优先协议,是一个内部网关协议(自治系统AS)内决策路由,隶属内部网关协议(IGP),故运作于自治系统内部。Dijkstra算法被用来计算最短路径树。两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。

        ICMP:网际控制报文协议,用于在IP网络中传递控制消息和错误信息。ICMP通常用于网络设备之间的通信,如路由器和主机之间的通信,以及用于检测网络连通性和故障诊断。

        BGP:边界网关协议,是一种外部网关协议,与OSPF(计算AS内部最优路由)不同,主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。

        ARP:用于将IP地址映射为MAC地址(物理地址)。ARP协议在局域网内部使用,通过发送ARP请求获取目标设备的MAC地址,从而实现数据包的传输。注意,ARP协议既不属于网络层,又不属于数据链路层,介于两层之间。

3.3.4 数据链路层

        MAC:媒介访问控制协议,负责控制设备如何访问共享的通信介质(如以太网、无线电波等),确保在多台设备共享同一传输媒介时能够有效地进行数据传输,避免冲突、控制流量,并确保数据的有序传递。

        CSMA/CD:载波侦听多路访问/碰撞检测协议,用于以太网,载波侦听:设备首先检测共享信道是否空闲。如果信道是空闲的,设备就可以发送数据。多路访问:所有设备共享同一个传输介质,因此必须协调访问。碰撞检测:在数据发送过程中,设备会继续监听信道。如果发生碰撞(即两个设备同时发送数据),它们会停止传输,并在随机延时后重新尝试发送。

        CSMA/CA:载波侦听多路访问/碰撞避免,用于Wi-Fi(IEEE 802.11)。碰撞避免:如果信道空闲,设备会等待一段时间后再发送数据(称为退避时间),以减少碰撞的概率。竞争和退避算法:使用随机退避算法(如二进制指数退避)来避免设备同时发送数据。当发生碰撞时,设备会随机等待一段时间再重试。

下篇文章:

网络编程—Socket套接字(UDP)https://blog.csdn.net/sniper_fandc/article/details/146923670?fromshare=blogdetail&sharetype=blogdetail&sharerId=146923670&sharerefer=PC&sharesource=sniper_fandc&sharefrom=from_link

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4月3日工作日志

一个朴实无华的目录 今日学习内容:1.关系数据库 今日学习内容: 1.关系数据库

git commit Message 插件解释说明

- feat - 一项新功能 - fix - 一个错误修复 - docs - 仅文档更改 - style - 不影响代码含义的更改(空白、格式化、缺少分号等) - refactor - 既不修复错误也不添加功能的代码更改 - perf - 提高性能的代码更改 - build - 影响构建系统或外部依赖项…

ngx_open_file

定义在 src\os\unix\ngx_files.h #define ngx_open_file(name, mode, create, access) \open((const char *) name, mode|create, access) name:文件名(通常是一个字符串)。mode:文件打开模式&#x…

23种设计模式-行为型模式-责任链

文章目录 简介问题解决代码核心改进点: 总结 简介 责任链是一种行为设计模式,允许你把请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。 问题 假如你正在开发一个订单系统。…

注意力机制在大语言模型中的原理与实现总结

注意力机制在大语言模型中的原理与实现总结 1. 章节介绍 在大语言模型的学习中,理解注意力机制至关重要。本章节旨在深入剖析注意力机制的原理及其在大语言模型中的应用,为构建和优化大语言模型提供理论与实践基础。通过回顾神经网络基础及传统架构的局…

kafka消息可靠性传输语义

Kafka提供了多种消息传递语义,以适应不同的业务需求和可靠性要求。以下是Kafka消息传输的可靠性语义及其实现机制: 1. At Most Once(至多一次) 语义:消息可能会丢失,但不会被重复传递。 实现机制&#xf…

NLP高频面试题(三十三)——Vision Transformer(ViT)模型架构介绍

Transformer架构在自然语言处理领域取得了显著成功,激发了研究人员将其应用于计算机视觉任务的兴趣。Vision Transformer(ViT)应运而生,成为图像分类等视觉任务中的新兴架构。本文将介绍ViT的基本架构、工作原理,并与传…

Oracle数据库数据编程SQL<3.6 PL/SQL 包(Package)>

包是Oracle数据库中一种重要的PL/SQL程序结构,它将逻辑相关的变量、常量、游标、异常、过程和函数组织在一起,提供了更好的封装性和模块化。在大型项目中,可能有很多模块,而每一个模块又有自己的存过、函数等。而这些存过、函数默认是放在一起的,如果所有的存过函数都是放…

机器学习 分类算法

【实验名称】 实验:分类算法 【实验目的】 1.了解分类算法理论基础 2.平台实现算法 3. 编程实现分类算法 【实验原理】 分类(Categorization or Classification)就是按照某种标准给对象贴标签(label),再根据标签来区分归类。 【实验环境】 OS:Ubuntu16.0…

HTML5 Canvas绘画板项目实战:打造一个功能丰富的在线画板

HTML5 Canvas绘画板项目实战:打造一个功能丰富的在线画板 这里写目录标题 HTML5 Canvas绘画板项目实战:打造一个功能丰富的在线画板项目介绍技术栈核心功能实现1. 画板初始化与工具管理2. 多样化绘画工具3. 事件处理机制 技术要点分析1. Canvas上下文优化…

【YOLOv8】YOLOv8改进系列(12)----替换主干网络之StarNet

主页:HABUO🍁主页:HABUO 🍁YOLOv8入门改进专栏🍁 🍁如果再也不能见到你,祝你早安,午安,晚安🍁 【YOLOv8改进系列】: YOLOv8结构解读 YOLOv8…

1Panel 面板 宝塔面板 Ubuntu 24.04

1Panel 面板 宝塔面板 Ubuntu 24.04 https://1panel.cn/ 1Panel 是一款开源的 Linux 服务器运维管理面板,它就像是给服务器配上了一个智能管家,让我们能通过 Web 端轻松管理服务器。以往我们管理 Linux 服务器,常常需要在命令行中输入各种复…

Node.js全局生效的中间件

目录 1. 目录结构 2. 代码实现 2.1 安装Express 2.2 app.js - 主文件 2.3 globalMiddleware.js - 全局中间件 3. 程序运行结果 4. 总结 在Node.js的Express框架中,全局生效的中间件是指应用程序启动后,对所有请求都有效的中间件。它通常用于日志记…

WiFi(无线局域网)技术的多种工作模式

WiFi(无线局域网)技术支持多种工作模式,以满足不同的网络需求和应用场景。以下是主要的WiFi工作模式及其详细说明: 1. 基础设施模式(Infrastructure Mode) [无线接入点 (AP)]/ | \ [客户端…

PHP 8.x:现代Web开发的性能与效率革命

随着PHP 8.x系列的持续演进,这门诞生于1995年的“古老”语言正焕发新生。通过引入革命性的JIT编译器、类型系统增强及一系列现代化语法特性,PHP 8.x不仅巩固了其在Web开发领域的统治地位,更将性能与开发者体验推向新高度。 一、JIT编译器&am…

【扣子agent入门】搭建计算热量工作流

一、食物热量知识库 1. 创建知识库 工作空间——资源库——创建资源>知识库 2. 自动采集网页数据 文本格式>在线数据 自动采集 找一个食物热量网站进行采集。 一定要让知识按条数分段,不然不好查询。 二、 意图识别节点 意图识别(In…

脑影像分析软件推荐 | JuSpace

目录 1. 软件界面 2.工具包功能简介 3.软件安装注意事项 参考文献: Dukart J, Holiga S, Rullmann M, Lanzenberger R, Hawkins PCT, Mehta MA, Hesse S, Barthel H, Sabri O, Jech R, Eickhoff SB. JuSpace: A tool for spatial correlation analyses of magne…

微信小程序唤起app

1、前提 1、app与小程序主体需一致&#xff0c;可以前往微信公众平台关联。 2、小程序的场景值为1069&#xff0c;也就是得从app打开小程序&#xff0c;小程序才能唤起app。 2、vue3代码示例 <template><view class"maxBox bgc"><button open-typ…

jarvisoj API调用 [JSON格式变XXE]

http://web.jarvisoj.com:9882/ 题目要求&#xff1a;请设法获得目标机器 /home/ctf/flag.txt 中的flag值 抓包得到&#xff1a; POST /api/v1.0/try HTTP/1.1 Host: web.jarvisoj.com:9882 Content-Length: 36 Accept-Language: zh-CN,zh;q0.9 User-Agent: Mozilla/5.0 (W…

3. 矩阵置零

leetcode Hot 100系列 文章目录 一、核心操作二、外层配合操作三、核心模式代码总结 一、核心操作 根据行和列检测出0所在位置&#xff0c;并将行和列数组的对应位置改为true如果遍历到某一行列时&#xff0c;只要行和列数组里面有一个是true&#xff0c;就置为0 提示&#…