网络入门基础

网络入门基础

文章目录

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

网络的发展

独立阶段:

早期计算机是独立工作的,各个主机存储着各自独有的数据。

image-20231020103301702

由于各个计算机之间是相互独立的,因此要利用多台计算机共同完成同一份工作,需要计算机的使用者将计算机的数据拷贝到可移动的存储介质中,然后利用可移动的存储介质将数据传输到其他计算机上,实现数据的共享,以达到多态主机共同完成同一工作的目的。

网络互联阶段:

为了各独立的计算机之间能够协同工作,使用特定的线路将各计算机连接起来,计算机将数据交于服务器,再让服务器将数据传给其他计算机完成数据的共享。网络就是在这个时候出现的。

image-20231020103406874

网络的定义: 网络是由若干结点和连接这些结点的链路组成。网络中的结点可以是计算机、集线器、交换机、路由器。

互联网的定义:将不同的网络连接在一起形成的规模庞大的网络互联网中的计算机称为主机。

局域网LAN阶段:

由于网络中连接的计算机数量变多, 通过交换机和路由器将网络中的计算机连接在一起,形成局域网。计算机传输的数据经过链路到达交换机或路由器,交换机或路由器会根据一定策略将数据转发出去,使得其他计算机收到数据,完成资源的共享。

image-20231020105110904

由交换机连接各计算机形成的网络称为局域网,由路由器将不同网络连接起来形成的网络也是局域网。

广域网WAN阶段:

为了让更多远距离计算机之间进行协同工作,将不同的局域网连接在一起,形成一个更大网络,这个网络称为广域网。各局域网内的计算机通过链路将数据传输出去,经过交换机或路由器时,会根据一定策略将数据转发出去,使得其他局域网中的计算机收到数据,完成资源的共享。

image-20231020110327426

所谓 “局域网” 和 “广域网” 只是一个相对的概念。可以称由一个路由器连接的两个网络为局域网,也可以称为广域网(并将被连接的两个网络称为局域网)。

协议的概念

  • 协议是指在特定情境下,各方之间达成的一种行为规范或约定它规定了参与方在特定场景中应如何进行交流、互动和合作,以达到共同的目标。 比如使用摩斯密码进行通信的的双方,发送方根据摩斯密码进行编码发送信息,接收方根据摩斯密码进行解码获取数据,双方就通过遵守摩斯密码的这一协议让发送方根据特定规定有办法发送数据,让接收方通过规定能够读懂数据,进行正确的发送数据和接收数据。

  • 计算机生产厂商有很多、计算机操作系统,也有很多、 计算机网络硬件设备 还是有很多。为了让这些不同厂商之间生产的计算机能够相互顺畅的通信,就需要有人站出来, 约定一个共同的标准, 大家都来遵守, 这就是网络协议。

网络协议初识

协议分层

互联网是由若干网络连接形成的巨大的网络,因此将一条主机上的数据传输到另一台主机上可能需要讲过许多中间结点。

image-20231020120822390

由于数据传输需要经过许多中间结点,就会产生如下的问题:

  • 定位目标主机的问题。
  • 数据传输时,路径选择的问题。
  • 长距离传输,数据丢失的问题。
  • 硬件级别定义的问题。

首先,网络产生的问题可以被分类为不同性质的问题,其次,网络产生的问题具有一定的上下关系(比如先要能够定义目标主机进行传输才会有路径选择的问题,有了根据选择的路径进行数据传输才会有数据丢失的问题),因此网络被设计成层状结构。各层之间定义相同性质的问题的实现方案,层与层之间具有一定的上下关系,这是一种"高内聚,低耦合"的模型。

层状结构

为了理解层状结构,我们举一个打电话的例子,打电话的双方将双方电话机连接起来,然后通过电话机进行交流。在这个情境下,可以将打电话的双方看作语言层,使用的是汉语协议,电话机看作是通信设备层,使用的电话机协议,逻辑上打电话双方都认为在和对方直接通信,因为双方所作的都是听和说的都是遵守汉语协议的数据,但是物理上,打电话双方是通过电话机提供的听筒和话筒进行听和说。

image-20231020131503064

通过打电话的例子,可以看出层状结构的特点

  • 同层的实体通信时认为,自身和对方在直接进行通信。(双方发送和接收的数据遵守相同的协议)
  • 上层的实体是需要调用下层实体提供的接口,然后将数据交给下层,下层就会完成数据的发送和接收。

关于打电话的例子,还可以做一定的延伸,比如将电话机换成无线电,将打电话的人遵守的协议换成英语协议。

image-20231020132402600

将电话机换成无线电不影响语言层双方通信,语言层依旧是使用通信设备层提供的功能,然后通过通信设备层进行数据的发送和接收。将打电话的人遵守的协议换成英语协议不影响通信设备层,通信设备层只会将语言层传入的数据按自身协议编码发送,按自身协议解码接收。至于语言层要发送什么,和语言层接收到数据后如何处理,通信设备层不关心也无需关心。

因此可以看出层状结构的优点: 分层之后,每一层都只关注自己同层的功能,只使用下层的接口,任何一层出现问题,都不会直接影响另一层,减少后期开发者的维护成本。

OSI七层模型

  • OSI(Open System Interconnection,开放系统互联)七层网络模型称为开方式系统互联参考模型,是一个逻辑上的定义和规范。
  • OSI把网络从逻辑上分为了七层,每一层都有相关的、相对应的物理设备,比如路由器,交换机。
  • OSI七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输,比如手机和电视之间数据的传输。
  • OSI七层模型最大的优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
  • OSI七层模型是一种理想模型,既复杂又不实用,所以后来在具体实现的时候就对其进行了调整,于是就有了我们现在看到的TCP/IP四层协议。

OSI七层模型如下:

image-20231020150402055

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

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。 TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

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

与OSI七层模型各层的对应关系:

image-20231020151108215

TCP/IP模型和计算机软硬体系结构的关系

TCP/IP模型描述的是一种网络协议栈,该网络协议栈的实现存在于计算机软硬体系结构中的每一个层次结构中:

image-20231020175500626

在计算机软硬体系结构中,操作系统层的实现最为重要,由于操作系统层中的传输层使用的是TCP协议,网络层采用的是IP协议,因此该模型被称之为TCP/IP模型。

由于网络使用的在使用的网卡等设备属于计算机软硬体系结构中的硬件层次,而Linux操作系统中硬件的管理数据文件管理的范畴,因此在Linux操作系统中,网络的管理也属于文件管理的范围。因此,操作系统提供的大量系统接口中,一定是有与文件相关的。

比起OSI模型,TCP/IP模型中的各层可以更好地实现在计算机软硬体系结构中,因此TCP/IP模型能够成为网络实现的实际模型。大部分计算机都要网络层、传输层都要采用TCP/IP协议,以保证这些计算机之间都可以正确交换数据,由于物理层、数据链路层只需要提供接口,在不同计算机上实现可以不同。

网络传输基本流程

我们这里以两台主机进行文件传输为例,此时各层对应的协议如下:

image-20231020195650458

同局域网的两台主机通信

同局域网的两台主机通信

首先需要明确的是,同一个局域网内的主机是能够直接进行通信的,因为最初局域网设计的目的,就是为了让局域网内的主机能够进行通信。其次,要明确的是,两个主机进行网络通信的本质是两台主机的协议栈在进行通信。

image-20231020195206483

发送方主机会的协议栈会在数据(这个数据称为有效载荷)发送前对数据进行封装:

  • 有效载荷先交给应用层,应用层添加上对应应用层协议的报头信息后,将数据再交给传输层。
  • 传输层收到数据后,再添加上对应传输层协议的报头信息,并将数据继续向下进行交付。
  • 网络层收到数据后,再添加上对应网络层协议的报头信息,接着将数据再交给链路层。
  • 链路层收到数据后,最后再添加上对应链路层协议的报头信息,至此数据封装完毕。

数据封装完成后,就会根据物理层的传输,将数据传输到对应的主机中,接收方主机需要对收到的数据进行解包和分用,最终得到有效载荷:

  • 链路层收到数据后,先将数据中对应链路层协议的报头信息提取出来,然后将剩下的数据交给网络层。
  • 网络层收到该数据后,再将数据中对应网络层协议的报头信息提取出来,然后将剩下的数据继续向上进行交付。
  • 传输层收到该数据后,再将数据中对应传输层协议的报头信息提取出来,然后将剩下的数据再交付给应用层。
  • 应用层收到数据后,最后将数据中对应应用层协议的报头信息提取出来,至此便完成了数据的解包与分用。

任何一台主机在发送数据之前,数据都要自顶向下的经过网络协议栈,在这个过程中,每一层协议都会添加上对应的报头信息;而任何一台主机收到数据后,数据都要自底向上的经过网络协议栈,在这个过程中,每一层协议都会将对应的报头信息提取出来。

可以看出,每种协议都至少具备以下两个功能:

  • 报头必须能够和有效载荷分离
  • 必须支持将有效载荷传输给上层

补充知识

  • 报头(Header):是数据通信中用于携带控制信息和描述性信息的一部分。
  • 有效载荷(Payload):是指在通信中实际承载传输的有用数据部分,不包括任何协议头、尾部或其他控制信息。
  • 分用(Multiplexing)是指将多个数据流或信号合并在一条通信链路上进行传输的技术或方法。
  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。

下图为数据封装的过程:

image-20231021131723305

下图为数据分用的过程:

image-20231021132558664

不同局域网的两台主机通信

如下是由一个路由器连接的两个不同局域网的示意图,其中一个局域网以太网,另一个是令牌环局域网:

image-20231020211910657

有效载荷产生自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地址)。

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

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

相关文章

【小白专用23.10.22 已验证】windows 11 安装PHP8.2 +Apache2.4

环境说明 windows:windows 11 x64apache: Apache/2.4.43php :php-8.2.11 一.php 1、PHP下载 PHP For Windows: Binaries and sources Releases 注意: 1.要下载Thread Safe,否则没有php8apache2_4.dll这个文件;如果使用Apache作为服务器…

python 桌面软件开发-matplotlib画图鼠标缩放拖动

继上一篇在 Java 中缩放拖动图片后,在python matplotlib中也来实现一个自由缩放拖动的例子: python matplotlib 中缩放,较为简单,只需要通过设置要显示的 x y坐标的显示范围即可。基于此,实现一个鼠标监听回调&#xf…

Kubernetes技术与架构-Ingress

Ingress是一个流量网关,其根据配置的URI路径路由规则,为运行在Kubernetes集群中的Service分发流量,从系统架构设计的角度看,Ingress位于Service的上层,本文主要描述Ingress的基本使用方式。 如上所示,clien…

Redis --- 安装教程

Redis--- 特性,使用场景,安装 安装教程在Ubuntu下安装在Centos7.6下安装Redis5 特性在内存中存储数据可编程的扩展能力持久化集群高可用快速 应用场景实时数据存储作为缓存或者Session存储消息队列 安装教程 🚀安装之前切换到root用户。 在…

docker 基本用法-操作镜像

1.下载镜像 docker search centos #默认从 Docker Hub 中搜索镜像 访问 dockerhub&#xff1a;https://registry.hub.docker.com docker pull centos 拉取镜像 如果不能拉取 方法 1.需要配置配置镜像加速器 tee /etc/docker/daemon.json << EOF {"registry-mirro…

1688拍立淘接口,按图搜索商品接口,图片识别接口,图片上传搜索接口,图片搜索API接口,以图搜货接口

1688拍立淘接口的作用是让用户通过上传图片或输入图片链接的方式&#xff0c;调用1688的图片搜索引擎&#xff0c;返回与该图片相关的所有1688商品。 使用该接口需要先获取一个key和secret&#xff0c;然后参考API文档里的接入方式和示例&#xff0c;查看测试工具是否有需要的…

腾讯云创建了jenkins容器,但无法访问

1、首先&#xff0c;查看本机能不能ping通你的腾讯云服务器 如果ping的通那就下一步 2、查看腾讯云服务器的防火墙关了没&#xff0c;没关关掉、 firewall-cmd --state not running 3、那就在云服务器的控制台开放端口

某马机房预约系统 C++项目(二) 完结

8.4、查看机房 8.4.1、添加机房信息 根据案例&#xff0c;我们还是先在computerRoom.txt中直接添加点数据 //几机房 机器数量 1 20 2 50 3 1008.4.2、机房类创建 ​ 同样我们在头文件下新建一个computerRoom.h文件 添加如下代码&#xff1a; #pragma once #include<i…

工具篇之Axure RP 10的使用

引言 最近在学习原型图&#xff0c;针对画原型图的工具&#xff0c;反复对比墨刀、Axure、xiaopiu后&#xff0c;最终选择Axure。 接下来&#xff0c;我便从Axure RP 10的下载、安装、中文字体、授权等几个方面&#xff0c;来介绍Axure。 一、背景 Axure是一款强大的原型设计…

GO学习之 goroutine的调度原理

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…

Zebec Protocol 薪酬支付工具 WageLink 上线,掀新一轮薪酬支付浪潮

Zebec Protocol 正在从多个方面推动流支付的应用&#xff0c;除了作为一种全新的支付手段来对支付领域进行重塑外&#xff0c;其也在以流支付体系为基础&#xff0c;不断地向薪酬发放领域深度的拓展。 在今年早些时候&#xff0c;Zebec Protocol 通过美国投资机构 Payroll Grow…

【FISCO-BCOS】十八、使用docker部署区块链

目录 前言&#xff1a; docker&#xff1a; 一、安装docker docker部署区块链&#xff1a; 一、 搭建单群组4节点区块链 二、启动区块链 三、检查容器 四. 查看节点 前言&#xff1a; 关于FISCOBCOS部署区块链的方式&#xff0c;我们已经学习过了很多种&#xff0c;如多群组部…

现代C++、STL、QTL的使用

0、现代C中最重要的是&#xff1a; 右值引用&&、移动语义std::move、完美转发std::forward、万能引用T&& void Func(int& x) { cout << "左值引用" << endl; } void Func(const int& x) { cout << "const左值引用…

软件测试之【单元测试、系统测试、集成测试】

一、单元测试的概念 单元测试&#xff08;Unit Testing&#xff09;是对软件基本组成单元进行的测试&#xff0c;如函数&#xff08;function或procedure&#xff09;或一个类的方法&#xff08;method&#xff09;。当然这里的基本单元不仅仅指的是一个函数或者方法&#xff…

volatile-可见性案例详解

6.3 volatile特性 6.3.1 保证可见性 保证不同线程对某个变量完成操作后结果及时可见&#xff0c;即该共享变量一旦改变所有线程立即可见 不加volatile&#xff0c;没有可见性&#xff0c;程序无法停止 加了volatile&#xff0c;保证可见性&#xff0c;程序可以停止 public…

RHCE---Shell基础 2

文章目录 目录 文章目录 前言 一.变量 概述 定义 自定义变量 环境变量 概述&#xff1a; 定义环境变量&#xff1a; 位置变量 "$*"会把所有位置参数当成一个整体&#xff08;或者说当成一个单词 变量的赋值和作用域 read 命令 变量和引号 变量的作用域 变…

基于拦截器Interceptor实现简易权限控制及行为记录功能

一、业务需求 使用拦截器(Interceptor)&#xff0c;实现Controller中方法的权限控制&#xff0c;并记录访问行为。要求仅在Controller方法上加注解&#xff0c;就可以实现权限控制。具体为&#xff1a; 1、拦截未登录用户的访问&#xff1b; 2、拦截不具有权限用户的访问&#…

Git教程

文章目录 Git 介绍GIt历史Git 安装环境配置工作区、缓存区和仓库区&#xff08;版本库&#xff09;工作区(工作目录)暂存区仓库区git工作目录下文件的装填 Git 生成公钥及添加到gitlab或Gerrit上Git常用命令git stautsgit statu -sgit addgit commitgit reset1. git reset --ha…

Post-Process1-水下

一、新建第三人称游戏项目&#xff0c;我这里选择C&#xff0c;你也可以选择Blueprint。 新建一个Level&#xff0c;命名为DemoUnderWater 保存一下&#xff0c;命名为DownUnderWater 添加水插件 选择Yes 勾选Show Engine Content和Show Plugin Content&#xff0c;在左侧可以看…

图(graph)的遍历----深度优先(DFS)遍历

目录 前言 深度优先遍历&#xff08;DFS&#xff09; 1.基本概念 2.算法思想 3.二叉树的深度优先遍历&#xff08;例子&#xff09; 图的深度优先遍历 1.图(graph)邻接矩阵的深度优先遍历 思路分析 代码实现 2.图(graph)邻接表的深度优先遍历 思路分析 代码实现 递…