网络原理之初识
目录
一. 网络互连
1. 局域网
2. 广域网
二. 网络通信基础
1. IP 地址
2. 端口号
3. 网络协议
4. 协议分层
5. TCP/IP 五层网络模型 (简述)
6. 网络数据传输的基本流程
一. 网络互连
1. 局域网
局域网是局部组建的一种网络。其实可以理解成一定区域内的网络通信,局域网内的主机之间能方便的进行网络通信,又称为内网。例如在一个网吧内的所有机器进行通信,学校机房里的所有机器进行通信。需要注意的是:局域网和局域网之间在没有连接的情况下,是不能进行通信的。
交换机:是用来组建局域网的,但是不能跨局域网。
路由器:我们熟悉的 WiFi 就是一个无线路由器,路由器本质上就是把两个或者多个交换机连接起来。
局域网组建网络的方式也有很多种:
2. 广域网
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
二. 网络通信基础
1. IP 地址
IP地址主要用于标识网络主机,其他网络设备(如路由器)的网络地址,简而言之,IP地址用于定位主机的网络地址,标识了网络上设备所在的位置。
将网络通信类比为 “发送快递” ,IP 地址就表示购买客户的收货地址,有了 IP 地址才可以将包裹送到目的地。
格式:IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:
2. 端口号
在网络通信中,IP 地址用于标识主机网络地址,端口号可以标识主机中发送数据,接收数据的进程。简而言之,端口号用于定位主机中的进程(标识了一个具体的应用程序)。
依然将网络通信类比为 “发送快递” ,不仅需要购买客户的收货地址(IP 地址),还应该有收货人的信息,也就是端口号了。
格式:端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。
注意:两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个不同的端口号。(一个进程启动后,系统会随机分配一个未被使用的端口号,也可以自己设定。在程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送,接受数据)
现在有了 IP地址和端口号,就可以准确定位到网络中一个主机上的进程了, 但依然存在问题,网络通信是基于二进制数据来进行传输的,那么要如何做到发送方和接受方都能够理解对方的传递意思呢?
在网络通信中的数据类型是有很多种的,例如:文本,图片,视频等,并且同一类型的数据,格式也可能不一样,如发送一个文本字符串:“你好”,如何标识发送的数据是文本类型,及文本的编码格式呢?这就需要协议来解决问题了,用协议来规定双方的数据格式。
3. 网络协议
协议是网络通信中最核心的概念,理解为:通信双方约定,商量好数据是以什么样的格式来进行传输的,有了这个约定,才能让网络通信中双方相互理解对方的含义。(发送方以这个约定的格式来发送数据,接受方按照这个格式来进行解析)
协议最终体现为在网络上传输的数据包的格式。
知名协议的默认端口:上文说过系统端口号范围:0~65535,其中:0 ~ 1023为知名端口号,这些端口是预留给服务器程序绑定广泛使用的应用层协议的。所以一般自己设置端口都设置在 1023 ~ 65535 这个范围。
4. 协议分层
网络通信是一个比较复杂的事情,需求场景复杂,实现功能也就复杂。如果这个协议,太复杂了,学习成本,使用成本部,理解成本,维护成本也就会非常高。因此,采取的措施就是针对这个复杂的大协议,拆分成若干个相对简单的小协议,每个协议都负责一部分功能。随着把协议拆分成一些小的协议,就会发现在某些协议之间,起到的功能和作用是类似的,因此就再针对这些小协议,进行 “分层” ,把功能类似的协议放到同一层。
协议分层的好处:
1. 降低了学习和维护成本。
2. 灵活的针对这里的某一层协议进行替代。
在当前的互联网中,协议分层主要有两种风格,但实际上也可以算是一种。
1. OSI 七层网络模型:一般是教科书上,实际上并不多见。所以这里也不多介绍。
2. TCP/IP 五层(四层)网络模型,这个也算是 OSI 网络模型简化的实现方式,是在实际组建网络常见的实现模型。
5. TCP/IP 五层网络模型 (简述)
TCP/IP 是 OSI 的简化实现方式:
在TCP/IP 协议中,主要分为,应用层,传输层,网络层,数据链路层,物理层。越往下,越接近硬件设备,越往上,也就越接近用户。在这个网络分层,上层协议要调用下层协议,下层协议要给上层协议提供服务。
这里先对每一层进行一个简单介绍,后续会针对性的对每一层进行讲解。
还是将这个过程类比为 “网购寄快递”。
物理层:在类比事例中,把物理层类比为修路,因为只有在交通路程完整的情况下,才可以进行运输,相当于是一个准备条件。因此,物理层就是约定了网络通信中基础的硬件设备是啥样,例如通信使用的网线,网口等设备,这个我们在生活中也就有所体会:所使用的网线,网口都是相同规格的。
数据链路层:在类比事例中,把数据链路层类比为:广州到汕头的快递运输,可以是广州-惠州-汕头,也可以是广州-厦门-汕头等多条路径,而每一条路径途经的每一个地点就是一个节点,而两个节点之间有很多种运输方式:货运,火车等。因此,数据链路层也就主要负责相邻两个节点之间,具体要怎么进行传输。这里的节点指的是连入网的主机,交换机,路由器等,传输也就是在这些相邻节点之间进行的,传输方式可以是有线传输,无线传输等。
也就是要考虑下图中每一对连接起来的相邻两个节点之间是要通过什么方式去通信。
网络层:网络层主要负责的就是路径的规划,判断哪条路径是最合适的。例如数据链路层中的类比事例中,广州到汕头的快递,可以是广州-惠州-汕头,也可以是广州-厦门-汕头等多条路径。要注意,在网络通信中,两个节点之间的传输路径是有很多个选择的!
传输层:传输层在上述类比事例中,表示的就是广州到汕头,是站在商家的角度的,不关心快递的运输过程,而只关心起点和终点,这个过程也就是传输层做的工作。
应用层: 应用程序,描述了传输的数据,用户要怎么来进行使用。
一般也可以称为 TCP/IP 四层模型(不算物理层)。
一般而言,直接和我们打交道的只有应用层,应用层是需要通过我们写的应用程序去实现,传输层和网络层都是基于操作系统内核来实现的,数据链路层和物理层是基于硬件和驱动程序来实现的。(驱动程序,是和硬件设备关联的,每个硬件厂商都会提供对应的驱动程序,操作系统内核通过驱动程序来控制硬件)
6. 网络数据传输的基本流程
这里只是大概了解,后续文章会针对网络原理进行详细介绍。
基础五元组:一次通信中,基础的五元组:源IP,目的IP,源端口,目的端口,协议类型。
(站在协议分层的背景下来理解) 以 QQ 为例,A 给 B 发送一个 hello
发送方:用户在输入框在输入 hello 这个字符串,qq 这个应用程序就把这个字符串,构造成一个应用层数据报。
1. 应用层:这里假设一个应用层协议的格式:发送方qq号;发送时间;接收方qq号;消息内容(应用层数据,数据格式,这里不同的应用程序都是不一样的,这里只是假设。)
此时就会根据应用层协议来构造出应用层数据报,本质上是一个遵守了约定格式的字符串。
程序要调用操作系统的API,把这个应用层数据报,交给传输层。
2. 传输层(进入操作系统内核): 在传输层中,就要把得到的应用层数据报,构造成传输层数据报,传输层使用到的协议中,最知名的就是 TCP 和 UDP,(TCP和UDP的报头结构不一样,报头不同,支持的功能和特性也就不同)比如此处使用的是 UDP,就需要构造出 UDP数据报(在应用层数据的基础上,加个 UDP 报头)
此时,这就是另一个特定格式的字符串了(具体细节后续就进行讲解),此处就像字符串的拼接,把前面的报头跟后面的数据拼到一起。此处的 UDP报头,暂时可以理解为一个 “标签”,通过标签来表示出当前的这个消息要怎么进行传输。在传输层中就会涉及到通信中的源端口和目的端口了。
然后传输层再把这个 UDP数据报,交给网络层。
3. 网络层:网络层中最知名的协议就是 IP协议。IP协议就要基于上述数据,打包成一个 IP数据报。
这里,也是另一个特定格式的字符串,包含了另一组信息,其中最核心的就是:源IP 和 目的IP。网络层数据报准备好了之后,就需要进一步交给数据链路层。
4.数据链路层:数据链路层中最知名的协议,被称为 “以太网” ,所以同样是基于上述数据,打包成一个 “以太网数据帧” 。
接下来这个数据继续往下传输,交给物理层。
5. 物理层:在物理层中,就把上述二进制的数据转换成 电信号/光信号 进行传输发送,此时就真正把数据给发送出去了。
封装:上述的这个流程,是发送过程,是从应用层到物理层,层层加码,这个过程称为 “封装” 。
接收方:此处省略了中间的转发过程,只考虑 B的接受。
1. 物理层:网卡接收的是电信号和光信号,把这个电信号和光信号转换回二进制的数据。转换回的这个二进制数据,其实也就是一个 以太网数据帧 了。因此把这个数据交给数据链路层。
2. 数据链路层:数据链路层就需要解析并去掉帧头和帧尾,取出中间的载荷,得到网络层数据报,并交给上层的网络层(IP协议)。(以太网数据帧帧头里会有记录,这个载荷是不是一个 IP数据报)
3. 网络层: 网络层的 IP协议会对传来的数据进行解析,解析出 IP报头并取出载荷,也就得到了传输层数据报,并交给上一层传输层。(IP报头里会记录,载荷是 TCP 还是 UDP)
4. 传输层:UDP对得到的数据再次进行解析,解析出 UDP报头并取出载荷,再把这个载荷交给对应的应用层程序。(UDP报头中有一个重要的字段:目的端口,目的端口是和一个具体的应用程序联系起来的,因此就可以根据这个端口来把数据交给对应的应用程序了。)
5. 应用层: 这里指的就是 qq程序了,qq 就会根据对应的应用层协议来对传来的数据报进行解析,并显示到界面上。
分用:这一个过程,就是接收的过程,对传来的数据进行一步一步的解析,从下到上,这个过程就称为 “分用” 。
从上述的这个发送信息,接受信息的流程来看,我们也就可以理解协议存在的意义了,协议可以让通信双方以相同的方式去解析理解数据,才保证了网络通信的准确性。也就是发送方使用什么协议,接收方就得使用什么样的协议。
例如:QQ邮箱和网易邮箱是属于不同的应用程序,但是它们却可以进行相互发送和接受,也就意味着它们遵守着相同的应用层协议(其余四层也是一样的)。
在网络协议的分层中,上层协议要调用下层协议(上层协议把数据交给下层协议,继续封装),下层协议要给上层协议提供支持(下层协议解析好数据,交给上层)。要注意协议之间不能跨层交互,只有相邻的两层之间才可以进行交互。
相关文章:

网络原理之初识
目录 一. 网络互连 1. 局域网 2. 广域网 二. 网络通信基础 1. IP 地址 2. 端口号 3. 网络协议 4. 协议分层 5. TCP/IP 五层网络模型 (简述) 6. 网络数据传输的基本流程 一. 网络互连 随着时代的发展,越来越需要计算机之间互相通信&am…...

CAN总线开发一本全(4) - FlexCAN的驱动程序
CAN总线开发一本全(4) - FlexCAN的驱动程序 苏勇,2023年2月 文章目录CAN总线开发一本全(4) - FlexCAN的驱动程序引言从MindSDK获取FlexCAN驱动程序数据结构配置通信引擎的结构体类型访问MB的结构体类型配置ID过滤器的…...
如何分析linux tcp/ip 丢包问题
引用手把手教你用Dropwatch诊断问题通过dropwatch定位系统内核丢包Finding out if/why a server is dropping packetsgithub source coed: pavel-odintsov/drop_watchHow to drop a packet in Linux in more ways than one试试Linux下的ip命令,ifconfig已经过时了Ho…...
旅游规划(树型dp)
W 市的交通规划出现了重大问题,市政府下定决心在全市各大交通路口安排疏导员来疏导密集的车流。 但由于人员不足,W 市市长决定只在最需要安排人员的路口安排人员。 具体来说,W 市的交通网络十分简单,由 n 个交叉路口和 n−1 条街道…...

【C++】string类的模拟实现
当你将放弃作为一种习惯,你一辈子也不会有出息… 文章目录一、Default member functions1.Constructor2.Copy constructor(代码重构:传统写法和现代写法)3.operator(代码重构:传统写法和现代写法ÿ…...
笔记(一)——STL容器
容器分类:序列式容器:每个元素都有固定位置,取决于插入的时机和地点,和元素无关,如vector、deque、list、stack、queue。关联式容器:元素位置取决于特定的排序准则,和插入顺序无关,如…...
红黑树
红黑树是一个相对的平衡,减少了旋转的消耗 一个节点不是红的就是黑的根节点是黑的一个节点是红的,孩子是黑的(没有连续的红色节点)对于每个节点,从该节点到后代节点的简单路径,都包含相同的黑色࿰…...

RIP路由协议的更新(电子科技大学TCP/IP第二次实验)
一.实验目的 1、掌握 RIP 协议在路由更新时的发送信息和发送方式 2、掌握 RIP 协议的路由更新算法 二.预备知识 1、静态路由选择和动态路由选择 2、内部网关协议和外部网关协议 3、距离向量路由选择 三.实验原理 RIP 协议(…...
基于JWT实现用户身份认证
常见场景 账号/密码登录、手机号验证码登录、微信扫码登录 解决方案 基于Session认证方案 什么是session认证方案 服务端生成httpsession认证(内存-sessionId)sessionId写到浏览器cookie浏览器请求的header中自动带sessionId到服务端服务端校验sessionId是否合法 优点 .…...
SaltStack 远程命令执行漏洞(CVE-2020-16846)
目录 (一)漏洞描述 (二)漏洞复现 1、在vulhub上启动docker 2、访问docker靶机 https /ip:8000...
SAP 详细解析成本收集器
成本收集器作为成本对象,主要应用于按期间进行成本核算的情况,在这种情况下会把产品创建为成本收集器,实际成本的收集和差异的结算全部按照成本收集器进行处理,财务的成本分析也针对成本收集器进行。 成本收集器是按期间核算&am…...

Vision Transformer学习了什么-WHAT DO VISION TRANSFORMERS LEARN? A VISUAL EXPLORATION
WHAT DO VISION TRANSFORMERS LEARN? A VISUAL EXPLORATION 文章地址 代码地址 摘要 视觉转换器( Vision Transformers,ViTs )正在迅速成为计算机视觉的事实上的架构,但我们对它们为什么工作和学习什么知之甚少。虽然现有研究对卷积神经网络的机制进…...

一种全新的图像滤波理论的实验(三)
一、前言 2023年02月22日,我发布了滤波后,为针对异常的白色和黑色像素进行处理的实验,本次发布基于上下文处理的方案的实验,目的是通过基于加权概率模型滤波后,在逆滤波时直接修复大量的白色和黑色的异常像素…...

CV——day79 读论文:基于小目标检测的扩展特征金字塔网络
Extended Feature Pyramid Network for Small Object DetectionI. INTRODUCTIONII. RELATED WORKA. 深层物体探测器B. 跨尺度特征C. 目标检测中的超分辨率III. OUR APPROACHA. 扩展特征金字塔网络B. 特征纹理传输C. 交叉分辨蒸馏IV. EXPERIMENTSA. Experimental Settings1&…...

智能家居项目(五)测试串口功能
目录 一、写一个单独测试串口的demo 二、直接运行上一篇智能家居的代码 一、写一个单独测试串口的demo 1、TTL串口与树莓派的连接方式 (1)TTL的RXD和TXD针脚连接到树莓的TXD和RXD上(T–>R R–>T),交叉连&…...
2023年全国最新道路运输从业人员精选真题及答案7
百分百题库提供道路运输安全员考试试题、道路运输从业人员考试预测题、道路安全员考试真题、道路运输从业人员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 71.根据《中华人民共和国安全生产法》,生产经营单位…...

python的所有知识点(含讲解),不看就亏死了
目录 简介 特点 搭建开发环境 版本 hello world 注释 文件类型 变量 常量 数据类型 运算符和表达式 控制语句 数组相关 函数相关 字符串相关 文件处理 对象和类,注:不是那个对象!!!!&…...

【Servlet篇】Response对象详细解读
文章目录Response 继承体系Response 设置响应数据设置响应行数据设置响应头数据设置响应体数据Response 重定向Response 响应字符数据Response 响应字节数据Response 继承体系 前面说到,我们使用 Request 对象来获取请求数据,使用 Response 对象来设置响…...
SAP FICO期初开账存货导入尾差
一、问题 1.AFS物料网格级别库存导入先除再乘有尾差: 旧系统数据迁移自两个系统:一个管理数量账(网格级别),一个管理金额账(物料级别) 2.MB52分工厂与MB5L分工厂统计差异: M…...

微信商城小程序怎么做_分享实体店做微信商城小程序制作步骤
各行各业都在用微商城小程序开店,不管是餐饮店还是便利店,还是五金店。都是可以利用微信小程序开一个线上店铺。实现线上跟线下店铺更加全面的结合。维护好自己的老客户。让您的客户给您拉新,带来新客户。小程序经过这几年的快速发展和不断升…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...