网络原理 - 初识

文章目录

  • 局域网(LAN)
  • 广域网(WAN)
  • 网络设备
  • IP地址
    • 格式
  • 端口号
    • 格式
  • 认识网络协议
    • 协议分层
  • OSI七层模型(只是理论,没有实际运用)
  • TCP/IP五层(或四层)模型
    • 网络设备所在分层
  • 封装和分用

计算机之间通过网络来传输数据,也称为网络通信。
根据网络互连的规模不同,可以划分为局域网和广域网。
所谓 “局域网” 和 “广域网” 只是⼀个相对的概念。

局域网(LAN)

局域网,即 Local Area Network,简称LAN。
局域网是本地,局部组建的⼀种私有网络,又称为内网。局域网内的主机之间能方便的进行网络通信;局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网组建网络的方式有很多种:
(1)基于网线直连
(2)基于集线器组建
(3)基于交换机组建
(4)基于交换机和路由器组建

广域网(WAN)

广域网,即 Wide Area Network,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
如果有很多分公司,甚至海外分公司,把这些分公司以专线方式连接起来,即可称为“广域网”。
如果属于全球化的公共型广域网,则称为互联网(又称公网,外网)。
有时在不严格的环境下说的广域网,其实是指互联网。

网络设备

主机:上网的设备(电脑,手机…)
组建网络的重要设备:路由器,交换机

  • 路由器有WAN口(连接运营商的网线)和LAN口(连接要上网的设备)
  • 交换机的接口没有WAN口和LAN口一说

家里的路由器和其连接的上网设备形成一个局域网
而家里的路由器可以连接到运营商的路由器,运营商的路由器又连接到更大的运营商路由器,这样就可以形成一个大的网络

“猫”,专业术语叫做"调制解调器"
以前没有宽带的时候,上网用电话线,通过"猫"把电话线中的模拟信号转成数字信号
后面宽带入户就不用电话线上网了,光猫就是路由器,只不过WAN口是插光纤的,LAN口还是正常插网线的
光纤主要材质是玻璃,通过激光在玻璃里传输信号;网线里面是铜丝,是通过电流来传输信号

虽然路由器有很多网口,但路由器上的口可能不够用,此时就可以使用交换机对网口进行拓展(类似于电脑的扩展坞)
交换机的特点是口特别多,连接到交换机上的设备彼此之间不会相互影响和干扰

IP地址

如何判断哪台主机发出数据,哪台主机接收数据呢?这就需要使用IP地址来标识。

IP地址用于标识网络主机、其他网络设备(如路由器)的网络地址。通过地址找到这个设备,进而进行通信。
就像我们寄快递⼀样,需要知道对方的收货地址,才能将包裹送达。

格式

IP地址是⼀个32位的二进制数(IPv4),通常被分割为4个“8位二进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110

通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数),如:100.4.5.6

在控制台输入ipconfig就可以看到本地IPv4 地址和其他一些信息
在这里插入图片描述

端口号

在网络通信中,IP地址用于标识主机的网络地址,端口号可以标识一个主机中发送数据、接收数据的进程。简单说:端口号用于标识主机中的进程(应用程序)。
类似寄快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。

格式

端口号是0~65535(2个字节)范围的数字,在网络通信中,进程可以通过绑定⼀个和其他进程不重复的端口号,来发送及接收网络数据。

端口号不会不够用,端口号是区分同一个主机上的不同进程,而不是区分不同主机的不同进程

可能会谈到有的程序是有固定的端口号的,这种说法源自于一个概念,“知名端口号”。很久以前,为了避免当时的一些程序的端口号之间发生冲突,就给一些知名的程序分配了不同的端口号,一共分了1024个。如今,知名端口更多是"建议"而不是约束,也可以使用别的不重复的端口号。不过最好避开知名端口号,有些系统上要使用知名端口号需要管理员权限

认识网络协议

网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的⼀组约定,而且一定是通信双方都认可的。比如怎么样建立连接、互相怎么样识别等。只有遵守这个约定,计算机之间才能相互通信交流。
协议(protocol)最终体现为在网络上传输的数据包的格式

有了IP地址和端口号这样的协议,就可以定位到网络中唯⼀的⼀个进程,但还存在⼀个问题: 网络通信是基于二进制数据来传输,如何告诉对方发送的数据是什么样的呢?

网络通信传输的数据类型可能有多种:图片,视频,文本等。同⼀个类型的数据,格式可能也不同,这时就需要使用协议来规定双方的数据格式。

另外:
• 计算机生产厂商有很多;
• 操作系统也有很多;
• 计算机网络硬件设备,还是有很多
如何让这些不同厂商生产的计算机能够相互顺畅的通信?
就需要约定⼀个共同的规则,大家都来遵守。

协议与标准的区别:
协议可以是私下自定义的,而标准需要有一个具有公信力的官方的组织,公开发布并得到大家的支持和拥护。

协议分层

网络通信是一件非常复杂的事情,如果用一个协议来约定上述所有的细节,这个协议就会非常庞大,非常复杂。所以网络协议往往分成几个层次进行定义。
此处谈到的分层,每一层里都有很多协议(对协议进行了分类,就得到了所谓的"层")

把很多协议按照功能分在不同的层级,每个层级都有对应的目标/要解决的问题。上层协议调用下层协议的功能,下层协议给上层协议提高服务。分层而不乱的前提是: 不能跨级交流

网络协议分层的作用:

  1. 封装的效果

分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。
⼀方为接口的实现类(提供方,提供服务),⼀方为接口的使用类(使用方, 使用服务)
• 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可,降低学习成本
• 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可

  1. 任意层的协议,都是可以灵活替换的(解耦合)

OSI七层模型(只是理论,没有实际运用)

OSI:即Open System Interconnection,开放系统互连

• OSI 七层网络模型是⼀个逻辑上的定义和规范:把网络从逻辑上分为了7层。
• OSI 七层模型是⼀种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输

OSI 七层模型既复杂又不实用,所以 OSI 七层模型没有落地、实现。
实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也就是 TCP/IP 五层(或四层)模型来实现。

TCP/IP五层(或四层)模型

在这里插入图片描述

这个就是现在实际采用的网络分层模型。我们目前接触到的电脑上网大部分都是TCP/IP模型。4G/5G通信就是另外一套专门的模型协议(手机流量上网)

TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议的5层层级结构:

  1. 应用层(具体的应用程序):负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。
  2. 传输层(通信双方):负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
  3. 网络层(通信路径的规划):负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层
  4. 数据链路层(两个相邻节点之间的通信):负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层
  5. 物理层(硬件层面上相关约定):负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层

物理层我们考虑的比较少。因此很多时候也可以称为 TCP/IP四层模型。

程序猿打交道最多的就是应用层,写的网络程序都会涉及到应用层。其他的四层的协议都是操作系统内核,硬件和驱动已经实现好了,无需干预。不过我们要重点关注传输层,因为应用层是需要调用传输层提供的接口(API)来进行一些功能的实现的

网络设备所在分层

  • 对于主机,它的操作系统内核实现了从传输层到物理层的内容,也就是TCP/IP五层模型的下四
    层;
  • 对于路由器,它实现了从网络层到物理层,也就是TCP/IP五层模型的下三层;
  • 对于交换机,它实现了从数据链路层到物理层,也就是TCP/IP五层模型的下两层;
  • 对于集线器,它只实现了物理层;

注意我们这里说的是传统意义上的交换机和路由器,也称为二层交换机(工作在TCP/IP五层模型的下两层)、三层路由器(工作在TCP/IP五层模型的下三层)。现在的路由器和交换机功能越来越多,界限也越来越模糊了。有些交换机的功能,路由器也有;有些路由器的功能,交换机也有。有些路由器和交换机,能工作在应用层。比如通过QQ发消息,路由器/交换机就能感知到发的消息内容是啥

封装和分用

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
  • 应用层数据通过协议栈发送时,每层协议都要加上⼀个数据首部(header),这个过程称为封装
  • 首部信息中包含了⼀些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理,这就是分用

QQ里就有一个应用层网络协议,约定了数据按照什么样的格式来组织。在QQ发消息,QQ应用程序就会把要传递的内容组织成"应用层数据包"
网络传输的数据,本质上是二进制字符串/字符串,所以要把结构化数据(包含很多属性,字段)先转成二进制字符串/字符串(序列化)

现在有应用层数据包了, QQ程序接下来就要调用传输层(操作系统内核)的API(socket API),把数据包交给传输层,传输层拿到应用层数据包之后就会对这个数据包进一步地封装,构造成传输层数据包。在传输层典型的协议有两个:TCP和UDP

此处假设使用UDP来作为传输层协议

在这里插入图片描述

传输层构造好数据包之后,就会继续把数据包交给网络层(传输层会调用网络层提供的API,这个调用过程是系统内核自行负责了)

网络层典型的协议是IP协议
IP协议不关心载荷里面是啥,只关心IP报头里的数据
在这里插入图片描述
之后调用数据链路层的API,把IP数据包交给数据链路层的协议,同样也是系统内核负责完成的,程序猿感知不到。这里的API往往是网卡的驱动程序提供的

硬件厂商发布硬件的时候提供配套的软件(驱动程序),通过驱动程序可以让操作系统实现对硬件的精细控制

数据链路层典型协议是"以太网"协议
电脑通过有线网传输数据走的就是"以太网"协议,我们电脑上插的网线也叫做"以太网线"
WiFi则是另外一套数据链路层的协议
因特网则指当前世界上最大的、开放的、由众多网络相互连接而成的特定计算机网络

以太网也有自己的数据包格式,会对上述IP数据包进一步封装
在这里插入图片描述
上述数据已经进入到网卡驱动中了,接下来就要真正发送出去了

到达物理层,上述的以太网帧本质上还是二进制数据,硬件设备要把上述的二进制数据转换为光信号/电信号才真正进行发射

通过交换机/路由器一系列转发之后最终到达收件人的主机
之后就是上述过程的"逆过程"

物理层收到一系列光电信号,把这些信号转成二进制数据交给数据链路层

数据链路层按照以太网协议对数据进行解析(解析报头中的关键信息,为后续的传输/转发打下基础),解析出来的载荷数据是要交给上层(网络层)

网络层的IP协议拿到了IP数据包,按照协议格式进一步解析,解析报头中的关键信息,取出载荷,把载荷再进一步的交给上层(传输层)

传输层拿着UDP的数据包,按照UDP格式进一步解析,解析出关键的信息(要交给哪个端口号对应的进程),以及解析出载荷数据,再把载荷交给对应的应用程序

在应用层,QQ程序拿到了应用数据包
QQ按照自己的协议格式进行解析,拿到数据包里的二进制字符串/字符串转成结构化数据(反序列化),显示到界面上

上述层层包装数据,不停加数据报头的过程,称为"封装"
"分用"就是上述逐层解析数据包的过程

中间的路由器,交换机也要封装分用,也是上述过程,只不过交换机封装分用到数据链路层,即可知道下一步如何转发(工作在数据链路层),路由器封装分用到网络层即可知道下一步如何转发(工作在网络层)

每个协议报头中,都包含对应的信息,告诉上一层要交给哪个协议来处理
要确保分用使用的协议和封装使用的协议对得上

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

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

相关文章

linux系统编程:数据库

1. 数组、链表、变量-----》内存:程序运行结束、掉电数据丢失 文件----------------------》硬盘:程序运行结束、掉电数据不丢失 数据库: 专业存储数据、大量数据-----》硬盘 sqlite相关的命令 .tables 查看…

库克库伯防爆电容器会起火吗

库克库伯(Cooke Colb)防爆电容器设计用于在具有爆炸性气体或粉尘的危险环境中安全运行。尽管这些防爆电容器经过严格的设计和测试,能够保障不会出现爆炸现象,以确保在恶劣环境中运行时的安全性,但在某些极端情况下&…

[数据集][目标检测]电力场景输电线均压环歪斜检测数据集VOC+YOLO格式303张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):303 标注数量(xml文件个数):303 标注数量(txt文件个数):303 标注类别…

【网络安全】Instagram 和 Meta 2FA 绕过漏洞

未经许可,不得转载。 文章目录 漏洞概述技术细节Meta 2FA 绕过步骤Instagram 2FA 绕过步骤总结漏洞概述 该漏洞允许攻击者在具有受害者Facabook账户权限的情况下,绕过 Meta 的双重身份验证 (2FA) 机制,实现账户接管;并且也能够绕过 Instagram 的双重身份验证 (2FA) 机制,…

【GeoScenePro】Generic Server Error

错误 解决方案 在portal中进行知识图谱许可授权

国密起步5:GmSSL3交叉编译arm64

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 之前已经建立好了交叉编译环境…

视频集中存储智能边缘计算网关软硬一体机智能边缘计算网关应用场景

在信息化飞速发展的今天,数据处理的速度和效率直接影响到各行各业的运作和发展。传统的云计算模式虽然强大,但在面对实时性和带宽要求越来越高的应用场景时,往往显得力不从心。此时,智能边缘计算网关的出现,为我们带来…

sqli-labs靶场(56-60)

56关 ?id-1)union select 1,2,database()-- 看数据库 ?id-1) union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- 看表 ?id-1) union select 1,group_concat(column_name),3 from information_schema.columns wh…

深入探索MySQL数据库结构设计:实战案例解析,打造高效、可扩展的数据存储方案

作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客 前言:…

noge-gyp构建项目踩坑记录

开发环境 系统: win11 node: 19.7.0 npm: 8.3.2 node-gyp: 10.0.2可以不使用windows-build-tools来安装构建工具,手动进行安装 我这边用windows-build-tools安装时候会提示 process.env only accepts a configurable, writable, and enumerable data descriptor. 查了资料后…

转换视频格式轻松搞定!3个小窍门助你轻松将mxf格式转mp4

你是否因为格式转换而烦恼?你是否经历过这样的情况:你想要在别的设备或平台上播放心仪的视频,但是你的视频文件是xmf格式的,很多设备都不支持这个格式,导致视频无法播放。现在,你需要把mxf格式转mp4格式。你…

【时间盒子】-【2.准备】HarmonyOS 开发前需要准备什么?

零基础新手或转行进入鸿蒙生态应用的开发者,请提前准备以下内容: 一、注册华为帐号 此帐号在华为官方各平台通用,比如:华为手机、华为商城、华为云、华为开发者联盟等等。 https://id1.cloud.huawei.com/CAS/portal/userRegist…

如何在Windows和Mac上免费提取RAR文件?这里有方法

序言 你有没有下载过一个文件,却发现它有一个奇怪的.rar文件扩展名?RAR是一种压缩文件格式,与ZIP文件非常相似,在本文中,我们将向你展示如何在Windows或macOS上打开RAR文件。 如何在Windows 11上打开RAR文件 Windows 11在2023年增加了对RAR文件的原生支持。从那时起,你…

144. 腾讯云Redis数据库

文章目录 一、Redis 的主要功能特性二、Redis 的典型应用场景三、Redis 的演进过程四、Redis 的架构设计五、Redis 的数据类型及操作命令六、腾讯云数据库 Redis七、总结 Redis 是一种由 C 语言开发的 NoSQL 数据库,以其高性能的键值对存储和多种应用场景而闻名。本…

可重入VI,VI模板和动态VI之间的差异 转

可重入VI 当您想要同时运行同一VI的多个实例时,将使用可重入VI。当VI不可重入时,VI只有一个数据空间。因此,一次只能有一个调用者运行VI,因此调用者可能必须“等待轮到它”时才能使用VI。这是VI的默认选项,但您可以将V…

Hibernate 批量插入速度慢的原因和解决方法

由于业务需要一次性连续写入超过10k条以上的新数据,当对象超过10个成员变量以后,整个写入过程居然需要长达35秒,这个速度是不能接受的,故此研究了一下怎么开启Hibernate批量写入的功能。 我这边使用的是Hibernate 5.6.15 在网上…

【Java|Stream流】不可变集合

文章目录 1.什么是不可变集合2.创建不可变集合的方式2.1 List类型2.2 Set2.3 Map 1.什么是不可变集合 不可变集合:不可以被修改的集合 不可变集合优点: 安全性 由于不可变集合不能被修改,所以可以安全地在多个线程之间共享,而不用担心被意外修改&#xf…

【kubernetes】Service 介绍和应用

一,Service介绍 四层代理是基于传输层(第四层)工作的代理,主要在传输层(如TCP、UDP协议)上转发和管理数据流 七层代理是基于应用层(第七层)工作的代理,能够对应用层协议…

# 利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优--2

利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优–2 二、Tomcat专题 - Tomcat性能调优 - 性能测试结果说明 1、压力性能测试 # 打开另一个终端,切换目录 [rootbogon ~]# cd /usr/local/tomcat# 进行压力性能测试[rootbogon tomcat]# …

JSON处理库 -- Fastjson

文章目录 一、json格式1.1 用途1.2 语法1.3 常见格式 二、fastjson常用类2.1 JSONObject2.2 JSONArray 三、序列化和反序列化3.1 默认序列化与反序列化3.2 序列化的扩展3.3 自定义序列化SerializeFilter3.4 JSONField 注解3.5 复习Jackson 一、json格式 1.1 用途 一种轻量级的…