网络入门基础
网络入门基础
文章目录
- 网络入门基础
- 网络的发展
- 协议的概念
- 网络协议初识
- 协议分层
- 层状结构
- OSI七层模型
- TCP/IP五层(或四层)模型
- TCP/IP模型和计算机软硬体系结构的关系
- 网络传输基本流程
- 同局域网的两台主机通信
- 不同局域网的两台主机通信
- 网络中的地址管理
- 认识IP地址
- 认识MAC地址
网络的发展
独立阶段:
早期计算机是独立工作的,各个主机存储着各自独有的数据。
由于各个计算机之间是相互独立的,因此要利用多台计算机共同完成同一份工作,需要计算机的使用者将计算机的数据拷贝到可移动的存储介质中,然后利用可移动的存储介质将数据传输到其他计算机上,实现数据的共享,以达到多态主机共同完成同一工作的目的。
网络互联阶段:
为了各独立的计算机之间能够协同工作,使用特定的线路将各计算机连接起来,计算机将数据交于服务器,再让服务器将数据传给其他计算机完成数据的共享。网络就是在这个时候出现的。
网络的定义: 网络是由若干结点和连接这些结点的链路组成。网络中的结点可以是计算机、集线器、交换机、路由器。
互联网的定义:将不同的网络连接在一起形成的规模庞大的网络互联网中的计算机称为主机。
局域网LAN阶段:
由于网络中连接的计算机数量变多, 通过交换机和路由器将网络中的计算机连接在一起,形成局域网。计算机传输的数据经过链路到达交换机或路由器,交换机或路由器会根据一定策略将数据转发出去,使得其他计算机收到数据,完成资源的共享。
由交换机连接各计算机形成的网络称为局域网,由路由器将不同网络连接起来形成的网络也是局域网。
广域网WAN阶段:
为了让更多远距离计算机之间进行协同工作,将不同的局域网连接在一起,形成一个更大网络,这个网络称为广域网。各局域网内的计算机通过链路将数据传输出去,经过交换机或路由器时,会根据一定策略将数据转发出去,使得其他局域网中的计算机收到数据,完成资源的共享。
所谓 “局域网” 和 “广域网” 只是一个相对的概念。可以称由一个路由器连接的两个网络为局域网,也可以称为广域网(并将被连接的两个网络称为局域网)。
协议的概念
-
协议是指在特定情境下,各方之间达成的一种行为规范或约定它规定了参与方在特定场景中应如何进行交流、互动和合作,以达到共同的目标。 比如使用摩斯密码进行通信的的双方,发送方根据摩斯密码进行编码发送信息,接收方根据摩斯密码进行解码获取数据,双方就通过遵守摩斯密码的这一协议让发送方根据特定规定有办法发送数据,让接收方通过规定能够读懂数据,进行正确的发送数据和接收数据。
-
计算机生产厂商有很多、计算机操作系统,也有很多、 计算机网络硬件设备 还是有很多。为了让这些不同厂商之间生产的计算机能够相互顺畅的通信,就需要有人站出来, 约定一个共同的标准, 大家都来遵守, 这就是网络协议。
网络协议初识
协议分层
互联网是由若干网络连接形成的巨大的网络,因此将一条主机上的数据传输到另一台主机上可能需要讲过许多中间结点。
由于数据传输需要经过许多中间结点,就会产生如下的问题:
- 定位目标主机的问题。
- 数据传输时,路径选择的问题。
- 长距离传输,数据丢失的问题。
- 硬件级别定义的问题。
首先,网络产生的问题可以被分类为不同性质的问题,其次,网络产生的问题具有一定的上下关系(比如先要能够定义目标主机进行传输才会有路径选择的问题,有了根据选择的路径进行数据传输才会有数据丢失的问题),因此网络被设计成层状结构。各层之间定义相同性质的问题的实现方案,层与层之间具有一定的上下关系,这是一种"高内聚,低耦合"的模型。
层状结构
为了理解层状结构,我们举一个打电话的例子,打电话的双方将双方电话机连接起来,然后通过电话机进行交流。在这个情境下,可以将打电话的双方看作语言层,使用的是汉语协议,电话机看作是通信设备层,使用的电话机协议,逻辑上打电话双方都认为在和对方直接通信,因为双方所作的都是听和说的都是遵守汉语协议的数据,但是物理上,打电话双方是通过电话机提供的听筒和话筒进行听和说。
通过打电话的例子,可以看出层状结构的特点:
- 同层的实体通信时认为,自身和对方在直接进行通信。(双方发送和接收的数据遵守相同的协议)
- 上层的实体是需要调用下层实体提供的接口,然后将数据交给下层,下层就会完成数据的发送和接收。
关于打电话的例子,还可以做一定的延伸,比如将电话机换成无线电,将打电话的人遵守的协议换成英语协议。
将电话机换成无线电不影响语言层双方通信,语言层依旧是使用通信设备层提供的功能,然后通过通信设备层进行数据的发送和接收。将打电话的人遵守的协议换成英语协议不影响通信设备层,通信设备层只会将语言层传入的数据按自身协议编码发送,按自身协议解码接收。至于语言层要发送什么,和语言层接收到数据后如何处理,通信设备层不关心也无需关心。
因此可以看出层状结构的优点: 分层之后,每一层都只关注自己同层的功能,只使用下层的接口,任何一层出现问题,都不会直接影响另一层,减少后期开发者的维护成本。
OSI七层模型
- OSI(Open System Interconnection,开放系统互联)七层网络模型称为开方式系统互联参考模型,是一个逻辑上的定义和规范。
- OSI把网络从逻辑上分为了七层,每一层都有相关的、相对应的物理设备,比如路由器,交换机。
- OSI七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输,比如手机和电视之间数据的传输。
- OSI七层模型最大的优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
- OSI七层模型是一种理想模型,既复杂又不实用,所以后来在具体实现的时候就对其进行了调整,于是就有了我们现在看到的TCP/IP四层协议。
OSI七层模型如下:
TCP/IP五层(或四层)模型
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。 TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
- 物理层: 负责光/电信号的传递方式。 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决 定了最大传输速率、传输距离、抗干扰性等。 集线器(Hub)工作在物理层。
- 数据链路层: 负责设备之间的数据帧的传送和识别。 例如网卡设备的驱动、帧同步(就是说从网线上检测 到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。 有以太网、令牌环网, 无线LAN等标准。 交换机(Switch)工作在数据链路层。
- 网络层: 负责地址管理和路由选择。 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规 划出两台主机之间的数据传输的线路(路由)。 路由器(Router)工作在网路层。
- 传输层: 负责两台主机之间的数据传输。 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标 主机。
- 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问 协议(Telnet)等。 我们的网络编程主要就是针对应用层。
与OSI七层模型各层的对应关系:
TCP/IP模型和计算机软硬体系结构的关系
TCP/IP模型描述的是一种网络协议栈,该网络协议栈的实现存在于计算机软硬体系结构中的每一个层次结构中:
在计算机软硬体系结构中,操作系统层的实现最为重要,由于操作系统层中的传输层使用的是TCP协议,网络层采用的是IP协议,因此该模型被称之为TCP/IP模型。
由于网络使用的在使用的网卡等设备属于计算机软硬体系结构中的硬件层次,而Linux操作系统中硬件的管理数据文件管理的范畴,因此在Linux操作系统中,网络的管理也属于文件管理的范围。因此,操作系统提供的大量系统接口中,一定是有与文件相关的。
比起OSI模型,TCP/IP模型中的各层可以更好地实现在计算机软硬体系结构中,因此TCP/IP模型能够成为网络实现的实际模型。大部分计算机都要网络层、传输层都要采用TCP/IP协议,以保证这些计算机之间都可以正确交换数据,由于物理层、数据链路层只需要提供接口,在不同计算机上实现可以不同。
网络传输基本流程
我们这里以两台主机进行文件传输为例,此时各层对应的协议如下:
同局域网的两台主机通信
同局域网的两台主机通信
首先需要明确的是,同一个局域网内的主机是能够直接进行通信的,因为最初局域网设计的目的,就是为了让局域网内的主机能够进行通信。其次,要明确的是,两个主机进行网络通信的本质是两台主机的协议栈在进行通信。
发送方主机会的协议栈会在数据(这个数据称为有效载荷)发送前对数据进行封装:
- 有效载荷先交给应用层,应用层添加上对应应用层协议的报头信息后,将数据再交给传输层。
- 传输层收到数据后,再添加上对应传输层协议的报头信息,并将数据继续向下进行交付。
- 网络层收到数据后,再添加上对应网络层协议的报头信息,接着将数据再交给链路层。
- 链路层收到数据后,最后再添加上对应链路层协议的报头信息,至此数据封装完毕。
数据封装完成后,就会根据物理层的传输,将数据传输到对应的主机中,接收方主机需要对收到的数据进行解包和分用,最终得到有效载荷:
- 链路层收到数据后,先将数据中对应链路层协议的报头信息提取出来,然后将剩下的数据交给网络层。
- 网络层收到该数据后,再将数据中对应网络层协议的报头信息提取出来,然后将剩下的数据继续向上进行交付。
- 传输层收到该数据后,再将数据中对应传输层协议的报头信息提取出来,然后将剩下的数据再交付给应用层。
- 应用层收到数据后,最后将数据中对应应用层协议的报头信息提取出来,至此便完成了数据的解包与分用。
任何一台主机在发送数据之前,数据都要自顶向下的经过网络协议栈,在这个过程中,每一层协议都会添加上对应的报头信息;而任何一台主机收到数据后,数据都要自底向上的经过网络协议栈,在这个过程中,每一层协议都会将对应的报头信息提取出来。
可以看出,每种协议都至少具备以下两个功能:
- 报头必须能够和有效载荷分离
- 必须支持将有效载荷传输给上层
补充知识
- 报头(Header):是数据通信中用于携带控制信息和描述性信息的一部分。
- 有效载荷(Payload):是指在通信中实际承载传输的有用数据部分,不包括任何协议头、尾部或其他控制信息。
- 分用(Multiplexing)是指将多个数据流或信号合并在一条通信链路上进行传输的技术或方法。
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
下图为数据封装的过程:
下图为数据分用的过程:
不同局域网的两台主机通信
如下是由一个路由器连接的两个不同局域网的示意图,其中一个局域网以太网,另一个是令牌环局域网:
有效载荷产生自FTP客户,自顶向下经过网络协议栈,每层协议都给其添加报头,其中网络层的报头中存储的目的主机的IP地址,在网络层添加报头前会查阅路由表,验证目的主机是否为本局域网的主机,在数据链路层根据以太网协议,添加报头,报头内存储的是数据下一步传送的主机的MAC地址。
根据数据链路层添加的报文,数据会被传输到路由器中,路由器虽然作为网络层硬件,但是也有自己物理层和数据链路层,因此数据到了路由器会自底向上经过路由器的网络协议栈(只有物理层、数据链路层、网络层),由于路由器网络层也采用的IP协议,因此能够读懂数据的IP地址,然后路由器进行路由选择,将数据再交给其数据链路层,路由器的数据链路层会根据目的主机所处局域网使用的协议添加报头,也就是遵守令牌环协议的报头,然后发送给对应的局域网。
目的主机接收到地址后,数据到自底向上经过路由器的网络协议栈,进行解包和分用,最终得到数据的有效载荷。
可以看出,路由器和IP协议共同作用,屏蔽了底层子网的差异,无论底层子网使用何种方式实现,路由器会根据发送方协议解包数据,然后查看目的主机IP地址,根据接收方协议封装封装数据,使得接收方的网络层收到的数据和发送方网络层发送的数据一样。
网络中的地址管理
认识IP地址
IP协议有两个版本, IPv4和IPv6。没有特殊说明的, 默认都是指IPv4。
- IP地址是在IP协议中, 用来标识网络中不同主机的地址。
- 对于IPv4来说, IP地址是一个4字节, 32位的整数; 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1。
- 用点分割的每一个数字表示一个 字节, 范围是 0 - 255。
认识MAC地址
- MAC地址用来识别数据链路层中相连的节点。
- 长度为48位, 及6个字节。一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- 在网卡出厂时就确定了, 不能修改。mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)。
相关文章:

网络入门基础
网络入门基础 文章目录 网络入门基础网络的发展协议的概念网络协议初识协议分层层状结构OSI七层模型TCP/IP五层(或四层)模型TCP/IP模型和计算机软硬体系结构的关系 网络传输基本流程同局域网的两台主机通信不同局域网的两台主机通信 网络中的地址管理认识IP地址认识MAC地址 网络…...

Towards a Rigorous Evaluation of Time-series Anomaly Detection(论文翻译)
1 Introduction 随着工业4.0加速系统自动化,系统故障的后果可能会产生重大的社会影响(Baheti和Gill 2011; Lee 2008; Lee,Bagheri和Kao 2015)。为了防止这种故障,检测系统的异常状态比以往任何时候都更加重要ÿ…...
理解Python装饰器
本文将从多个方面对Python装饰器进行详细的阐述,并给出完整的代码示例。 一、装饰器的概念 装饰器是Python中非常重要的概念,它可以在不修改函数本身的情况下对函数的功能进行扩展或修改。装饰器本质上是一个函数,它接收一个函数作为参数&a…...

VR智慧景区,为游客开启智慧旅游新时代
近年来,文旅部加强了5G、VR虚拟技术等在文旅产业行业的运用,随着科技的不断发展,VR技术的运用越来越广泛,VR智慧景区作为一种全新的旅游方式,也渐渐的受到了人们广泛的关注,它可以让人们足不出户就欣赏到各…...
蓝桥杯 Java 青蛙过河
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改/**二分法从大(n)到小找足够小的步长前缀和记录每个位置的前面有的总石头数(一个石头表示可以容纳一个青蛙,一位置有多少个石头hi就是多少)&…...
雷达图应该如何去绘制?
雷达图(又称为蜘蛛网图、星形图)是一种用来显示多变量数据的图表,它可以直观地展示出数据在多个维度上的表现。雷达图中,每个轴代表一个维度,所有的轴都从中心点射出并均匀分布在圆周上,形成一个星形。每个…...

1024 蓝屏漏洞攻防战(第十九课)
1024 蓝屏漏洞攻防战(第十九课) 思维导图 一 永恒之蓝的介绍 漏洞为外界所知源于勒索病毒的爆发,该病毒利用NSA(美国国家安全局)泄露的网络攻击工具 永恒之蓝( EternalBlue )改造而成,漏洞通过TCP的445和139端口,利用SMB远程代码执行漏洞,攻击者可以在目标系统上执行…...

短视频矩阵系统软件源码
短视频矩阵系统软件源码 视频成为获得免费流量最便宜的渠道,平台给所有视频最基础的保底流量。如果按照一个视频最低500流量计算,5个账户就是2500的流量,200个视频就是50W流量,如果从其他渠道获得50W流量是个很困难的事情。短视频…...

内网穿透的应用-如何通过TortoiseSVN+内网穿透,实现公网提交文件到内网SVN服务器?
文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用…...

有没有PC端的配音软件推荐?(免下载)
配音软件还是电脑上使用最方便,而且电脑上可以使用的配音软件也非常多。只是你平时使用的不多,所有想用的时候才会找不到,对于经常使用配音软件的人来说,那真的太多了。今天给大家推荐一个免下载的配音网站,微信扫码即…...
clickhouse
官方链接 <insert id"insertTable" parameterType"com.ioc.orm.ck.model.TableModel">insert into table_name<trim prefix"(" suffix")" suffixOverrides","><if test"ts ! null">ts,</if…...
linux下创建文件夹软链接
软链接: 软链接是Linux下常用的一种共享文件方式、目录的方式,这种方式类似于Windows下的快捷方式。一般一个文件或者目录在不同的路径都需要的时候,可以通过创建软链接的方式来共享,这样系统下面只有一份源文件、目录。另外&…...
常用的工具网站
1.免费的在线pdf解密网站:https://smallpdf.com/unlock-pdf 2.常用的梯子登录页面:https://3.akkcloud1.com/auth/login 3.chatgpt登录页面:https://chat.openai.com/auth/login 4.国外短信收发平台:https://sms-activate.org/cn/…...

号外!百度Comate代码助手全新上线SaaS服务 - 免费申请试用+深入教程解读!
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

AUTOSAR通信篇 - CAN网络通信(七:Nm)
文章目录 基础功能NM协调器功能NM协调器功能的适用性保持协调总线活动总线关闭的协调嵌套子总线的协调关闭定时器的计算同步用例1 – 同步指令同步用例2-同步启动同步用例3 -同步网络睡眠示例 唤醒和中止协调关闭外部的网络唤醒协调唤醒协调关闭的中止 部分网络功能PNC位向量过…...
CentOS 7 中安装Kafka
文章目录 安装JDK解压环境变量验证 安装ZooKeeper下载解压环境变量配置启动开放端口 安装Kafka下载解压配置启动 CentOS 7.6 JDK 1.8 ZooKeeper 3.5.7 Kafka 2.11-2.4.0 安装JDK 解压 # 解压 tar -xzvf jdk-8u181-linux-x64.tar.gz mv jdk1.8.0_181 /usr/local/jdk1.8环境变量…...
Centos 7 部署Docker CE和docker-compose教程
一、Docker CE 1、Docker CE 安装 ①、安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2②、设置yum源 # 官方源(二选一) yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 阿里源…...
【数据结构】模拟实现无头单向非循环链表
链表的概念 学过ArrayList后我们知道它的底层是用数组来存储元素的,是连续的存储空间,当我们要从ArrayList任意位置删除或插入元素时,我们要把后续整体向前或后移动,时间复杂度为O(n),效率比较低,因此Arra…...
linux驱动开发学习001:概述
linux的内核源码编译后,会生成一个总的镜像。镜像加载到内存中运行他,就会启动内核。驱动属于内核代码的一部分,对驱动修改要重编整个内核,麻烦但驱动可以独立于内核镜像外,并能动态加载和卸载字符设备驱动,…...

安全响应中心 — 垃圾邮件事件报告(10.13)
2023年10月 第二周 一. 样本概况 ✅ 案例1:DocuSign钓鱼 本周收到一封看似来自 DocuSign(DocuSign 是一种在企业环境中广泛使用的电子协议管理平台)的网络钓鱼电子邮件反馈。 如下图所示: 以上样本内容大体是说XX发送了一份文…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...