网络编程—网络概念
目录
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
相关文章:
网络编程—网络概念
目录 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…...
基于Rust与WebAssembly实现高性能前端计算
引言 随着Web应用的复杂性增加,前端开发者经常面临性能瓶颈。传统JavaScript在处理密集型计算任务(如大数据处理或实时图像渲染)时,往往显得力不从心。而Rust语言凭借其高性能和内存安全特性,结合WebAssembly的接近原生…...
MATLAB 代码学习
1. Cell数组 Cell数组用于存储异构数据,每个元素(称为cell)可以包含不同类型的数据(如数值、字符串、矩阵等)。 1.1 创建Cell数组 直接赋值:使用花括号{}定义内容。 students {Alice, 20, [85, 90, 78…...
SELinux
一、selinux技术详解 SELinux 概述 SELinux,即 Security-Enhanced Linux,意为安全强化的 Linux,由美国国家安全局(NSA)主导开发。开发初衷是防止系统资源被误用。在 Linux 系统中,系统资源的访问均通过程…...
Axios 相关的面试题
在跟着视频教程学习项目的时候使用了axios发送请求,但是只是跟着把代码粘贴上去,一些语法规则根本不太清楚,但是根据之前的博客学习了fetch了之后,一看axios的介绍就明白了。所以就直接展示axios的面试题吧 本文主要内容ÿ…...
Spring Cloud 跨云灾备:如何实现5分钟级区域切换?
引言:云原生时代,区域级故障的致命性与应对 在混合云与多云架构中,单个区域的宕机可能导致全局服务瘫痪(如2023年AWS美东区域故障影响超200家金融系统)。传统灾备方案依赖手动切换DNS或冷备集群,恢复时间长…...
ES6对函数参数的新设计
ES6 对函数参数进行了新的设计,主要添加了默认参数、不定参数和扩展参数: 不定参数和扩展参数可以认为恰好是相反的两个模式,不定参数是使用数组来表示多个参数,扩展参数则是将多个参数映射到一个数组。 需要注意:不定…...
爬虫【feapder框架】
feapder框架 1、简单介绍 简介 feapder上手简单、功能强大的Python爬虫框架,内置AirSpider、Spider、Task、Spider、BatchSpider四种爬虫解决不同场景的需求支持断点续爬、监控报警、浏览器渲染、海量数据去重等功能更有功能强大的爬虫管理系统feaplat为其提供方…...
python如何提取html中所有的图片链接
在Python中,你可以使用BeautifulSoup库来解析HTML内容,并提取其中所有的图片链接(即<img>标签的src属性)。以下是一个示例代码,展示了如何做到这一点: 首先,确保你已经安装了BeautifulSo…...
网络协议之系列
网络协议之基础介绍 。 网络协议之清空购物车时都发生了啥? 。...
LLaMA Factory微调后的大模型在vLLM框架中对齐对话模版
LLaMA Factory微调后的大模型Chat对话效果,与该模型使用vLLM推理架构中的对话效果,可能会出现不一致的情况。 下图是LLaMA Factory中的Chat的对话 下图是vLLM中的对话效果。 模型回答不稳定:有一半是对的,有一半是无关的。 1、未…...
群体智能优化算法-鹈鹕优化算法(Pelican Optimization Algorithm, POA,含Matlab源代码)
摘要 鹈鹕优化算法(Pelican Optimization Algorithm, POA)是一种灵感来自自然界鹈鹕觅食行为的元启发式优化算法。POA 模拟鹈鹕捕食的两个主要阶段:探索阶段和开发阶段。通过模拟鹈鹕追捕猎物的动态行为,该算法在全局探索和局部开…...
代理模式-spring关键设计模式,bean的增强,AOP的实现
以下是一个结合代理模式解决实际问题的Java实现案例,涵盖远程调用、缓存优化、访问控制等场景,包含逐行中文注释: 场景描述 开发一个跨网络的文件查看器,需实现: 远程文件访问:通过代理访问网络文件 缓存…...
前端实现单点登录(SSO)的方案
概念:单点登录(Single Sign-On, SSO)主要是在多个系统、多个浏览器或多个标签页之间共享登录状态,保证用户只需登录一次,就能访问多个关联应用,而不需要重复登录。 💡 方案分类 1. 前端级别 SS…...
在 Blazor 中使用 Chart.js 快速创建数据可视化图表
前言 BlazorChartjs 是一个在 Blazor 中使用 Chart.js 的库(支持Blazor WebAssembly和Blazor Server两种模式),它提供了简单易用的组件来帮助开发者快速集成数据可视化图表到他们的 Blazor 应用程序中。本文我们将一起来学习一下在 Blazor 中…...
SQL server 2022和SSMS的使用案例1
一,案例讲解 二,实战讲解 实战环境 你需要确保你已经安装完成SQL Server 2022 和SSMS 20.2 管理面板。点此跳转至安装教程 SQL Server2022Windows11 专业工作站SSMS20.2 1,连接数据库 打开SSMS,连接数据库。 正常连接示意图&…...
【每日算法】Day 16-1:跳表(Skip List)——Redis有序集合的核心实现原理(C++手写实现)
解锁O(log n)高效查询的链表奇迹!今日深入解析跳表的数据结构设计与实现细节,从基础概念到Redis级优化策略,彻底掌握这一平衡树的优雅替代方案。 一、跳表核心思想 跳表(Skip List) 是一种基于多层有序链表的概率型数…...
前沿科技:3D生成领域技术与应用分析
以下是关于3D生成领域的详细分析,涵盖技术发展、应用场景、挑战与未来趋势、市场动态及典型案例: 一、技术发展与核心方法 3D表示方法 显式表示:包括点云、网格(三角形或四边形)和分层深度图像(LDI),适合直接操作和渲染,但细节复杂度高。 隐式表示:如神经辐射场(NeR…...
Spring Boot 3.4.3 基于 JSqlParser 和 MyBatis 实现自定义数据权限
前言 在企业级应用中,数据权限控制是保证数据安全的重要环节。本文将详细介绍如何在 Spring Boot 3.4.3 项目中结合 JSqlParser 和 MyBatis 实现灵活的数据权限控制,通过动态 SQL 改写实现多租户、部门隔离等常见数据权限需求。 一、环境准备 确保开发环境满足以下要求: …...
GO语言学习(14)GO并发编程
目录 🌈前言 1.goroutine🌟 2.GMP模型🌟 2.1 GMP的由来☀️ 2.2 什么是GMP☀️ 3.channel 🌟 3.1 通道声明与数据传输💥 3.2 通道关闭 💥 3.3 通道遍历 💥 3.4 Select语句 Ǵ…...
【Audio开发二】Android原生音量曲线调整说明
一,客制化需求 客户方对于音量加减键从静音到最大音量十五个档位区域的音量变化趋势有定制化需求。 二,音量曲线调试流程 Android根据不同的音频流类型定义不同的曲线,曲线文件存放在/vendor/etc/audio_policy_volumes.xml或者default_volu…...
sass报错,忽略 Sass 弃用警告,降级版本
最有效的方法是创建一个 .sassrc.json 文件来配置 Sass 编译器。告诉 Sass 编译器忽略来自依赖项的警告消息。 解决方案: 1. 在项目根目录创建 .sassrc.json 文件: {"quietDeps": true }这个配置会让 Sass 编译器忽略所有来自依赖项&#x…...
spring-security原理与应用系列:HttpSecurity.filters
目录 AnyRequestMatcher WebSecurityConfig HttpSecurity AbstractInterceptUrlConfigurer AbstractAuthenticationProcessingFilter 类图 在前面的文章《spring-security原理与应用系列:securityFilterChainBuilders》中,我们遗留了一个问题&…...
JVM生产环境问题定位与解决实战(六):总结篇——问题定位思路与工具选择策略
本文已收录于《JVM生产环境问题定位与解决实战》专栏,完整系列见文末目录 引言 在前五篇文章中,我们深入探讨了JVM生产环境问题定位与解决的实战技巧,从基础的jps、jmap、jstat、jstack、jcmd等工具,到JConsole、VisualVM、MAT的…...
数据仓库项目启动与管理
数据仓库项目启动与管理 确定项目 评估项目就绪情况 项目就绪的三个条件 强力型高级业务管理发起人 对数据仓库解决方案的影响有先见之明是所在组织内有影响的领导者要求严格,但是又比较现实,会为其他成员提供强力支持 强制型业务动机 数据仓库系统和战略性业务动机紧密结合…...
并行治理机制对比:Polkadot、Ethereum 与 NEAR
治理是任何去中心化网络的基础。它塑造了社区如何发展、如何为创新提供资金、如何应对挑战以及如何随着时间的推移建立信任。随着 Web3 的不断发展,决定这些生态系统如何做出决策的治理模型也在不断发展。 在最近的一集的【The Decentralized Mic】中, Polkadot 汇…...
利用 PHP 爬虫按关键字搜索淘宝商品
在当今数字化时代,网络爬虫技术已成为获取网络数据的重要手段之一。淘宝作为国内最大的电商平台之一,拥有海量的商品信息。通过 PHP 爬虫技术,我们可以实现按关键字搜索并抓取淘宝商品信息。以下将详细介绍如何使用 PHP 实现这一功能。 一、…...
在未归一化的线性回归模型中,特征的尺度差异可能导致模型对特征重要性的误判
通过数学公式来更清晰地说明归一化对模型的影响,以及它如何改变特征的重要性评估。 1. 未归一化的情况 假设我们有一个线性回归模型: y β 0 β 1 x 1 β 2 x 2 ϵ y \beta_0 \beta_1 x_1 \beta_2 x_2 \epsilon yβ0β1x1β2x2ϵ 其…...
TDengine tar.gz和docker两种方式安装和卸载
下载地址 3.1.1.0 Linux版本 安装包 下载地址 3.1.1.0 docker 镜像 下载地址 3.1.1.0 Window客户端 1. 将文件上传至服务器后解压 tar -zxvf TDengine-server-3.1.1.0-Linux-x64.tar.gz 2. tar.gz安装 解压文件后,进入相应子目录,执行其中的 install.…...
【STM32设计】基于STM32的智能门禁管理系统(指纹+密码+刷卡+蜂鸣器报警)(代码+资料+论文)
本课题为基于单片机的智能门禁系统,整个系统由AS608指纹识别模块,矩阵键盘,STM32F103单片机,OLED液晶,RFID识别模块,继电器,蜂鸣器等构成,在使用时,用户可以录入新的指纹…...
