当前位置: 首页 > news >正文

网络原理之初识

目录

一. 网络互连

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个字节),如:

01100100.00000100.00000101.00000110。通常用 点分十进制” 的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:100.4.5.6
特殊 IP:127.0.0.1 为本机环回地址,本机环回主要用于本机到本机的网络通信。
IP 地址解决了网络通信的时候,定位网络主机的问题,但还存在一个问题,传输到了目的主机后,要由哪个进程(哪个应用程序)来接收这个数据呢?也就是快递到了目的地后,要由谁来领取快递呢?这就需要端口号来标识了。

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(代码重构:传统写法和现代写法&#xff…...

笔记(一)——STL容器

容器分类:序列式容器:每个元素都有固定位置,取决于插入的时机和地点,和元素无关,如vector、deque、list、stack、queue。关联式容器:元素位置取决于特定的排序准则,和插入顺序无关,如…...

红黑树

红黑树是一个相对的平衡,减少了旋转的消耗 一个节点不是红的就是黑的根节点是黑的一个节点是红的,孩子是黑的(没有连续的红色节点)对于每个节点,从该节点到后代节点的简单路径,都包含相同的黑色&#xff0…...

RIP路由协议的更新(电子科技大学TCP/IP第二次实验)

一.实验目的 1、掌握 RIP 协议在路由更新时的发送信息和发送方式 2、掌握 RIP 协议的路由更新算法 二.预备知识 1、静态路由选择和动态路由选择 2、内部网关协议和外部网关协议 3、距离向量路由选择 三.实验原理 RIP 协议&#xff08…...

基于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日,我发布了滤波后,为针对异常的白色和黑色像素进行处理的实验,本次发布基于上下文处理的方案的实验,目的是通过基于加权概率模型滤波后,在逆滤波时直接修复大量的白色和黑色的异常像素&#xf…...

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…...

微信商城小程序怎么做_分享实体店做微信商城小程序制作步骤

各行各业都在用微商城小程序开店,不管是餐饮店还是便利店,还是五金店。都是可以利用微信小程序开一个线上店铺。实现线上跟线下店铺更加全面的结合。维护好自己的老客户。让您的客户给您拉新,带来新客户。小程序经过这几年的快速发展和不断升…...

【moment.js】时间格式化插件

Moment.js 用于在JavaScript中解析,验证,操作和显示日期和时间。是一款在项目中使用频率极高的时间格式化工具,Ant Design Vue 组件中就是使用它来处理时间的。 安装 npm install moment --save # npm yarn add moment # Ya…...

微信小程序开发【壹】

随手拍拍💁‍♂️📷 日期: 2023.02.24 地点: 杭州 介绍: 2023.02.24上午十点,路过学院的教学楼时🏢,突然看见了一团粉红色。走进一看是一排梅花🌸,赶在它们凋零前,将它们定格在我的相…...

2 k-近邻算法

0 问题引入 想一想:下面图片中有三种豆,其中三颗豆品种未知,如何判断他们类型? 1 KNN概述 1.1 KNN场景 电影可以按照题材分类,那么如何区分 动作片 和 爱情片 呢? 动作片:打斗次数更多爱情…...

深入探究文件I/O

目录Linux 系统如何管理文件静态文件与inode文件打开时的状态返回错误处理与errnostrerror 函数perror 函数exit、_exit、_Exit_exit()和_Exit()函数exit()函数空洞文件概念实验测试O_APPEND 和O_TRUNC 标志O_TRUNC 标志O_APPEND 标志多次打开同一个文件验证一些现象多次打开同…...

【LeetCode】剑指 Offer(9)

目录 题目:剑指 Offer 25. 合并两个排序的链表 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 题目:剑指 Offer 26. 树的子结构 - 力扣&#…...

python 遍历可迭代对象的方法

python 遍历可迭代对象的方法 可迭代(iterable) 迭代(遍历)就是按照某种顺序逐个访问对象中的每一项。 Python中有很多对象都是可以通过for语句来直接遍历的,例如list、string、dict等,这些对象都是可迭代的,被称为可迭代对象。 可以将可迭…...

【数据库】 第11章 并发控制

第11章 并发控制 事务 事务:(从微观角度,或者从DBMS角度)是数据库管理系统提供的控制数 据操作的一种手段,通过这一手段,应用程序员将一系列的数据库操作组合 在一起作为一个整体进行操作和控制,以便数据库管理系统能…...

Python3-数字

Python3 数字(Number) Python 数字数据类型用于存储数值。 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。 Python 支持三种不同的数值类型: 整型(int) - 通常被称为是整型或整数,是正或负整数&#x…...

(四十一)Read Committed隔离级别是如何基于ReadView机制实现的?

今天我们来给大家讲一下,基于之前我们说的ReadView机制是如何实现Read Committed隔离级别的,那么当然了,首先就是要先做一些简单的回顾。所谓的Read Committed隔离级别,我们可以用骚气一点的名字,就是简称为 RC 隔离级…...

React echarts封装

做大屏的时候经常会遇到 echarts 展示,下面展示在 React (^18.2.0) 中对 echarts (^5.4.0) 的简单封装。 文章首发于https://blog.fxss.work/react/echarts封装.html,样例查看 echarts 封装使用 props 说…...