初识网络基础

一、网络的发展

1.独立模式: 计算机之间相互独立;

        在早期计算机是孤立的单机系统,无法互相通信或共享资源。

由于缺乏互联性,早期的计算机系统无法实现有效的资源共享。只能依靠光驱和网盘经行将数据拷贝,线下将数据经行传输,每台计算机都需要独立处理自己的任务和数据,导致资源利用率较低。这促使了计算机网络的发展,以实现计算机之间的通信和协作。

2.网络互联,多台计算机连接在一起,实现数据共享

由于数据传输效率太低,于是当时的人们提出了将共享的数据由服务器统一管理起来,也就是说将共享的数据统一交给一个计算器管理储存,此时各个计算机就都能获取到这些共享的数据,所以各个业务在处理就能随时进行切换了。这是将计算机“用线”连接起来,这也就是网络的雏形。

3. 局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起;

后来这样的网络雏形逐渐发展,连入这个网络中的机器变得越来越多,于是就出现了局域网的概念。

在局域网中有一种设备叫做交换机,交换机主要完成局域网内数据的转发工作,也就是在局域网内将数据从一台主机转发给另一台主机。各个局域网之间通过路由器连接起来,路由器主要完成数据的路由转发工作。 

4.广域网WAN:将远隔千里的计算机都连在一起

各个局域网之间通过路由器相互连接在一起,便组成了一个更大的网络结构,我们将其称之为广域网。实际局域网和广域网是一种相对的概念,我们也可以将广域网看作一个比较大的局域网。

所谓 " 局域网 " " 广域网 " 只是一个相对的概念 . 比如 , 我们有 " 天朝特色 " 的广域网 , 也可以看做一个比较大的局域网.

二、认识协议

我们经常听说什么TCP/IP、HTTP、SMTP,其实这些都是协议。

那么为什么要有协议呢?

1计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式。

2.1什么是协议

所谓协议其实就是在通信系统中用于规定数据交换和通信的规则和约定的一种规范或标准。它定义了在不同设备之间如何进行通信、数据格式、错误处理等方面的规则,以确保信息的准确传递和互操作性。

看到这里,对于什么是协议可能还是一知半解。在计算机网络和通信领域,协议通常涵盖以下几个方面:

  1. 数据格式: 协议规定了数据在传输中的格式,包括数据的结构、编码方式、数据帧的格式等。这确保了发送方和接收方能够正确地解释和处理交换的数据。

  2. 通信流程: 协议定义了通信的流程,包括建立连接、数据传输、连接终止等步骤。通信流程的规定使得通信设备能够按照一致的方式进行通信。

  3. 错误处理: 协议通常包含对错误和异常情况的处理规则,以确保在数据传输过程中出现问题时能够及时发现和处理,提高通信的可靠性。

  4. 安全性: 一些协议还包含用于保障通信安全性的规定,例如加密算法、认证机制等,以防止未经授权的访问和数据泄露。

  5. 网络拓扑和设备角色: 在网络中,协议规定了设备的角色和网络拓扑,例如哪些设备可以充当服务器,哪些设备可以充当客户端,以及网络的结构是星型、总线型还是其他。

 从上面我们可以看出协议其实是多方面的,网络的传输其实是一个多层的结构不同的层自然有着不同的协议。

2.2协议分层

在这个例子中 , 我们的协议只有两层 ; 但是实际的网络通信会更加复杂 , 需要分更多的层次 .
分层最大的好处在于 " 封装 " . 面向对象例子.

2.3协议由谁来定义

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

而那个站出来的人一定是该领域当中的佼佼者,协议的定制通常由相关领域的专业组织、标准化机构、行业协会或国际组织负责。这确保了协议的制定是基于广泛的共识和专业知识,以满足特定领域的需求并促进设备和系统的互操作性。可以说每一套常见的通用协议都是有大智慧的。

2.4c语言的角度去看协议

我们都知道,操作系统的底层是使用c语言经行编写的,那么我们协议说白了不就是将一些不同类型的数据合并在一起后添加报头之类的东西发送给别的主机吗,那么在C语言中不就是两台主机都一个相同的结构体?协议不就是结构体该如何定义?当然协议还涉及到序列化和反序列化,以及数据的压缩、字段对齐等

三、OSI七层模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
  • 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;

 

分层名称功能

7

应用层应用层为用户提供网络服务和应用程序接口,针对特定应用的协议
6表示层设备格式转换,网络标准数据转换。处理数据的语法语义问题。
5会话层通信管理、负责建立和断开通信连接(数据流动的逻辑通路)、管理传输层以下的分层
4传输层管理两个节点之间的数据传输、负责可靠性传输(确保数据被可靠地传送到目标地址)
3网络层地址管理与路由选择
2数据链路层互联设备之间传送和识别数据帧。处理物理层的错误。该层还负责流控制、错误检测和纠正,以确保可靠的数据传输。
1物理层以0/1代表电压的高低以及灯光的闪灭、界定连接器和网线的规格

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

虽然OSI模型作为一个理论框架有其价值, 但是, 它既复杂又不实用; 在实际应用中,TCP/IP协议家族更为普及。由于互联网的普及,TCP/IP协议已成为事实上的标准,而OSI模型并没有在实际应用中得到广泛采用。
TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求 .
物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决 定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测 到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太 网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规 划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标 主机.
应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问 协议(Telnet)等. 我们的网络编程主要就是针对应用层

 

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

一般来说

对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
对于一台路由器, 它实现了从网络层到物理层;
对于一台交换机, 它实现了从数据链路层到物理层;
对于集线器, 它只实现了物理层;

 4.1集线器

集线器(Hub)是一种传输数据的网络设备,用于在局域网中连接多台计算机或网络设备。它属于物理层设备,主要起到将多个设备连接在一起的作用。虽然集线器在过去曾经常用于网络,但随着技术的进步,它的使用逐渐被交换机所取代。以下是关于集线器的一些基本信息。

同时集线器信号放大,使型号传到更远,是物理层,使相隔千里的设备有了相连的可能性。为了让正确的路径识别,让主机有识别标志。

需要注意的是,集线器属于纯硬件网络底层设备,基本上不具有类似于交换机的“智能记忆”能力和“学习”能力,也不具备交换机所具有的MAC地址表,所以它发送数据时都是没有针对性的,而是采用广播方式发送,也就是说,当集线器要向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的所有节点。

五、网络传输基本流程

 

  1. 应用层:

    • 发送端:应用层负责应用程序与网络的通信。数据由应用程序生成,并在应用层封装成应用层协议的数据包。
    • 接收端:应用层接收到数据包后,将其解封装并交给相应的应用程序处理。
  2. 传输层:

    • 发送端:数据包在应用层后被传递到传输层。传输层主要使用TCP或UDP协议。TCP提供可靠的、面向连接的传输,而UDP提供不可靠的、面向无连接的传输。
    • 接收端:接收端的传输层接收数据包并将其交给上层应用层。
  3. 网络层:

    • 发送端:数据包在传输层后,被传递到网络层。网络层主要使用IP协议,负责在网络中寻址和路由数据包,将数据包传输到目标主机。
    • 接收端:接收端的网络层接收数据包,根据目标地址将其传递给数据链路层。
  4. 数据链路层:

    • 发送端:数据包在网络层后,被传递到数据链路层。数据链路层通常使用以太网协议,将数据包封装成帧,并添加源和目标MAC地址。
    • 接收端:接收端的数据链路层接收帧,进行解封装,然后将数据包传递到网络层。
  5. 物理层:

    • 发送端:数据包在数据链路层后,被传递到物理层。物理层将数字数据转换为电信号,并通过物理介质(如电缆或光纤)传输到接收端。
    • 接收端:接收端的物理层接收电信号,将其转换为数字数据,然后传递给数据链路层。

 整个过程中,数据在每个层次上都会被封装和解封装,最终在接收端被还原成原始数据,传递给接收端的应用程序。这种分层的网络模型有助于实现模块化和可扩展的网络架构。

跨网段的主机的文件传输 . 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器 .

六、数据包封装和分用

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

下图为数据封装的过程:

下图为数据分用的过程

七、网络中的地址管理

前面我们提到集线器采用用广播方式发送,那么他是如何将数据正确的发送到目标电脑上的呢。答案是他需要一个地址来进行路径规划,这个路径就是IP地址。

以太网(局域网)通信,其实就是当一个主机发出信息,然后将该信息发给局域网里面的所有的设备,然后根据MAC地址确定是发给谁的,是自己的就留下,不是自己的就废弃掉。

这个判断是在数据链接层就完成了。这个信号是用光纤传递的,他传递的是高低电频,如果短时间传大量的信息,就会让传的信息失效 ,解决可以加交换机(划分碰撞域)。

令牌环网---和以太网差不多,但是令牌网避免碰撞的原理是,只有拥有令牌数据的主机才能发消息。

7.1认识IP地址

IP 协议有两个版本 , IPv4 IPv6. 我们整个的课程 , 凡是提到 IP 协议 , 没有特殊说明的 , 默认都是指 IPv4
IP地址是在IP协议中, 用来标识网络中不同主机的地址;
对于IPv4来说, IP地址是一个4字节, 32位的整数;
我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

 7.2认识MAC地址

MAC地址用来识别数据链路层中相连的节点;
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).

 7.3Ip VS Mac

Ip协议屏蔽了底层网络的差异化靠的就是工作在ip层的路由器,所以IP实现了全球的软件虚拟层,一切皆是ip报文。

Ip地址尤其是目的ip一般是不会改变的,协助路径选择,

而mac地址出局域网后源和目的都要改变,由路由器重新分配。

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

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

相关文章

基于A-Star搜索算法的迷宫小游戏的设计

这篇文章是作者人工智能导论课的大作业,发出来供大家学习参考(有完整代码)。想要论文WORD文件的可以在本文资源处下载(可能还在审核)。 摘要: 本文章聚焦于基于A-Star搜索算法的迷宫小游戏设计,…

Python学习路线 - Python高阶技巧 - PySpark案例实战

Python学习路线 - Python高阶技巧 - PySpark案例实战 前言介绍Spark是什么Python On SparkPySparkWhy PySpark 基础准备PySpark库的安装构建PySpark执行环境入口对象PySpark的编程模型 数据输入RDD对象Python数据容器转RDD对象读取文件转RDD对象 数据计算map方法flatMap方法red…

HuggingFace库中BERTForxxx模型代码详细分析 使用BERT进行无监督预训练

HuggingFace库中BERTForxxx模型代码详细分析 使用BERT进行无监督预训练 引言 HF库封装的各种任务列举 BertModel的结构分析 BertForPreTraining的结构分析 BertForMaskedLM的结构分析 BertForNextSentencePrediction的结构分析 BertForSequenceClassification的结构分析 …

sqli.labs靶场(23关到28a关)

23、第二十三关 id1单引号闭合 找位置1 and 12 union select 1,2,3 爆库:1 and 12 union select 1,2,database() 爆表名:1 and 12 union select 1,2,group_concat(table_name) from information_schema.tables where table_schemasecurity 爆字段&#…

推动海外云手机发展的几个因素

随着科技的不断发展,海外云手机作为一种新兴技术,在未来呈现出令人瞩目的发展趋势。本文将在用户需求、技术创新和全球市场前景等方面,探讨海外云手机在未来的发展。 1. 用户需求的引领: 随着人们对移动性和便捷性的需求不断增长&…

Linux|Grep 命令的 12 个实用示例

您是否曾经遇到过在文件中查找特定字符串或模式的任务,但不知道从哪里开始查找?那么,grep 命令可以拯救你! grep 是一个功能强大的文件模式搜索器,每个 Linux 发行版都配备了它。如果出于某种原因,它没有安…

JavaScript运行机制

在web前端开发中,JavaScript无疑是一种非常重要的编程语言。它能够为网页添加动态交互功能,提升用户体验。然而,要充分发挥JavaScript的威力,我们需要对它的运行机制有一定的了解。 JavaScript是一种解释执行的脚本语言&#xff…

【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题

目录 1、题目介绍 2、解题思路 2.1、暴力破解法 2.2、经典Next Greater Number问题解法 1、题目介绍 原题链接:496. 下一个更大元素 I - 力扣(LeetCode) 示例1: 输入:nums1 [4,1,2], nums2 [1,3,4,2].输出&…

SpringSecurity(17)——OAuth2令牌管理策略

刷新令牌策略 注意&#xff1a;刷新令牌只有在授权码模式和密码模式中才有&#xff0c;对应的指定这两种模式时&#xff0c;在类型上加上refresh_token <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-se…

Prometheus 采集Oracle监控数据

前言 oracledb_exporter是一个开源的Prometheus Exporter,用于从Oracle数据库中收集关键指标并将其暴露给Prometheus进行监控和告警。它可以将Oracle数据库的性能指标转换为Prometheus所需的格式,并提供一些默认的查询和指标。 download Oracle Oracle Windows Install …

【前端web入门第四天】02 CSS三大特性+背景图

文章目录: 1. CSS三大特性 1.1继承性 1.2 层叠性 1.3 优先级 1.3.1 优先级1.3.2 优先级-叠加计算规则 2. 背景图 2.1 背景属性2.2 背景图2.3 背景图的平铺方式2.4 背景图位置2.5 背景图缩放2.6 背景图固定2.7 背景复合属性 1. CSS三大特性 1.1继承性 什么是继承性? 子级默…

2023_中国零售业人工智能行业应用 发展图谱

01 零售人工智能行业应用发展背景 02 零售人工智能行业应用发展图谱及行业应用案例 案例&#xff1a;京东云、蓝色光标、京东言犀智能服务、腾讯企点、 案例&#xff1a;淘天集团、极睿科技、百度电商数字人直播 案例&#xff1a;中国联通、云拿科技AI智能商店&#xff1b; 0…

[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

【Iceberg学习二】Branch和Tag在Iceberg中的应用

Iceberg 表元数据保持一个快照日志&#xff0c;记录了对表所做的更改。快照在 Iceberg 中至关重要&#xff0c;因为它们是读者隔离和时间旅行查询的基础。为了控制元数据大小和存储成本&#xff0c;Iceberg 提供了快照生命周期管理程序&#xff0c;如 expire_snapshots&#xf…

基于Vue的移动端UI框架整理

一、Vant 官方地址&#xff1a;https://youzan.github.io/vant/#/zh-CN/ 简介&#xff1a;有赞公司开发。 特性&#xff1a;60 高质量组件、90% 单元测试覆盖率、完善的中英文文档和示例、支持按需引入、支持主题定制、支持国际化、支持 TS、支持 SSR。 特别说明&#xff1…

RabbitMQ-2.SpringAMQP

SpringAMQP 2.SpringAMQP2.1.创建Demo工程2.2.快速入门2.1.1.消息发送2.1.2.消息接收2.1.3.测试 2.3.WorkQueues模型2.2.1.消息发送2.2.2.消息接收2.2.3.测试2.2.4.能者多劳2.2.5.总结 2.4.交换机类型2.5.Fanout交换机2.5.1.声明队列和交换机2.5.2.消息发送2.5.3.消息接收2.5.4…

C语言第十八弹---指针(二)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 指针 1、const修饰指针 1.1、const修饰变量 1.2、const修饰指针变量 2、指针运算 2.1、指针- 整数 2.2、指针-指针 2.3、指针的关系运算 3、野指针 3.1、…

Stable Diffusion 模型下载:国风3 GuoFeng3

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十推荐提示词下载地址模型介绍 欢迎使用GuoFeng3模型 - 这是一个中国华丽古风风格模型,也可以说是一个古风游戏角色模型,具有2.5D的质感。 条目内

2024年Java面试题大全 面试题附答案详解,BTA内部面试题

基础篇 1、 Java语言有哪些特点 1、简单易学、有丰富的类库 2、面向对象&#xff08;Java最重要的特性&#xff0c;让程序耦合度更低&#xff0c;内聚性更高&#xff09; 阿里内部资料 基本类型 大小&#xff08;字节&#xff09; 默认值 封装类 6、Java自动装箱与拆箱 装箱就是…

Python中的while循环,知其然知其所以然

文章目录 while循环结构1.用循环打印1 ~ 100步骤解析2. 1 ~ 100的累加和3.死循环1. 用死循环的方法实现 1 ~ 100累加和 4. 单向循环(1)打印 一行十个小星星*(2)通过打印一个变量的形式,展现一行十个小星星(3)一行十个换色的星星 ★☆★☆★☆★☆★☆(4)用一个循环,打印十行十列…