网络的基础认知

news2025/1/17 13:52:33

 日升时奋斗,日落时自省

目录

1、网络发展史

1.1、独立模式

1.2、局域网

1.3、广域网

2、网络通信基础

2.1、IP地址

2.2、端口号

2.3、协议

2.4、网络协议分层

2.4.1、协议类别

2.4.2、TCP和UDP区别

2.5、分层理解事例

2.5.1 封装

2.5.2分用

2.5.3、总结


1、网络发展史

计算机网络怎么来的???有需求才会有创造。

为什么这么说,因为计算机原来也是为了打仗来,因为人力计算是很漫长的,并且也很难精准计算导弹的弹道,计算机网络也是为了打仗而来的,那都解决了导弹精准度问题,还有什么能需要吗?操作导弹的是网络通信,自然网络通信在战争中就起到至关重要的作用,一旦破坏就会造成对其他打击者没有反制能力了。

网络发展也很漫长,从游戏方面来看是一样的,我们大部分的友友应该都听说过或者玩过单击游戏,对,这就是计算机早期无连网状态,后来又经历一段时间的发展有了局域网,这个就以一个游戏来解释CS在早期就是使用局域网进行联机,例如网吧就那时候就能实现这一点。局域网依然是很有限的,只能部分人在一起联机限制了人,也限制了地域,网络发展也开始出现广域网,就是升级版的局域网,将更大范围的电脑连起来。

网络中以游戏为例:从单击 到 局域网 到 广域网

1.1、独立模式

开始简单的解释一下网络的发展变化。这里详细解释

计算机与计算机之间没有任何的联系

 当前还没有网络 ,随着时代发展,计算机需要相互通信,共享软件和数据,渐渐有了网络互连,将多台计算机连接在一起,完成数据共享(网络数据传输)也成为网络通信

1.2、局域网

局域网诞生就有了网络,局部组建的一种私有网络(本地的) ;局域网即Local Area Network 简称 LAN局域网内的主机之间能方便的进行网络通信,又称“内网”;局域网和局域网之间没有连接的情况下是无法通信的,在了解局域网连接之前需要了解一下组建网络要涉及的重要设备

(1)集线器 : 类似交换机,当前也不常听说到,除了课本

(2)交换机: 组建局域网(不能跨局域网)

(3)路由器: WiFi本质就是无限路由器,路由器本质就是把两个局域网给连接起来

现在有路由功能(三层转发)交换机,可见路由器与交换机没有实际的界限分明

注:“三层转发”在“总结”里面讲解

局域网连接方式:
主机- 主机

主机-交换机 -主机

1.3、广域网

广域网 Wide Area NetWork 简称 : WAN

通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网,广域网内部的局域网都是该广域网的子网

以上说是用路由器进行局域网的连接,试问交换机行不行?答案:不行

因为交换机是不能跨局域网连接的

广域网连接 :

 扩展:互联网称为:“外网”,输入全球化公共型广域网 ,严格说互联网属于广域网的一个子集,不严格说广域网就是指互联网

注:广域网和局域网是相对的。

2、网络通信基础

2.1、IP地址

标识网络上设备所在的位置,IP地址用于定位主机的网络地址,每个主机的网络地址都是唯一的

事例:这个地址就类似于家庭地址,现在地址这个东西少不了,无论是买外卖还是快递都需要填写才能发成功

IP地址是一个32位的二进制数(四个字节),通常被分割为4个8位二进制每8个二进制数由一个点号隔开;以点分十进制的方式来表示 a.b.c.d的形式(a,b,c,d都是0到255的十进制)

特殊IP

本机调用IP地址127.*或者127.0.0.1地址用于本机环回测试

本机环回:是本机到本机的网络通信

IP地址解决了网络通信地址额的问题,但是还存在一个问题,传输到目的主机后,由哪个程序来接收这个数据这就需要端口来标识

2.2、端口号

标识了一个具体的应用程序,端口号可以识别主机中发送的数据

以买外卖为例:除了收外卖的地址(IP地址),还有就是收外卖的人或者是电话号(端口号),直接能接收信息的。

程序端口号是要通过绑定的,端口当然也不是随便的一个数字(范围:0 到  65535也就是2的16次幂-1)

注:两个程序不能绑定同一个端口号,但是一个程序可以把绑定多个端口号

现在有端口号和IP地址了,定位到一台主机的程序,但是问题还是有的,我们端口号只是负责程序来接收数据的,网络通信是通过二进制的,如何处理能够让传输的多种数据类型被识别??

传输数据有不同类型和不同的格式基于网络数据传输,需要使用协议来规定双方的数据格式

2.3、协议

协议是网络通信中最核心的概念,约定好以什么样的格式来进行传输的,有了这个约定,才能让双方相互理解对方的含义。所谓的协议就是大家共同遵守的一个行为规范(固定格式)

举例类比:协议就好比是擂台比武 只能使用武功决出胜负,不能使用热武器(枪)还有一些规定,两者比武同意的话就签字画押;这样的明文规定就是协议

网络通信,是一个比较复杂的事情,需求场景太复杂了,实现功能也会比较复杂,如果这个协议,太复杂了,学习成本太,使用成本,理解成本维护成本都会非常高,因此会采取针对复杂的大的协议拆成若干个小的简单的协议

如果一个协议拆分成了一些小的协议(每个协议复负责一部分功能)此时就发现,某些协议之间功能和作用都是类似的,分层后进行学习

协议分层的好处
(1)降低了学习和维护成本(封装)

(2)灵活针对某一层协议进行替换

2.4、网络协议分层

2.4.1、协议类别

当前互联网网络协议分层有两个风格(两者很像,算是一种):

(1)OSI七层网络模型 (教科书解释)

(2)TCP/IP五层网络模型(实际应用)

OSI七层模型划分为以下:(应用层,表示层,会话层),(传输层,网络层),(数量链路层,物理层)

TCP/IP分层 :应用层 ,(传输层,物联网层),(网卡层,硬件)

为什么会部分部分分层括起来,其实OSI分层和TCP/IP是对应的,也是相同的(TCP/IP是OSI简化的实现方式)

在TCP/IP协议中,有以下几个元组标识一个网络通信

<1>源IP :标识源主机

<2>源端口号:标识源主机中该次通过发送数据的程序(进程)

<3>目的IP:标识目的主机

<4>目的端口号:标识目的主机中该通信接收数据的程序(进程)

<5>协议号:标识发送进程和接收进程中双方约定的数据格式

以TCP/IP分层模型来说
物理层:约定了网络通信中基础的硬件设备接口的样子,物理层也就是硬件比如网线,网口等设备,我们使用的网线和网口都是相同规格的,同时物理层也会解决最大的传输速率、传输距离、抗干扰性等。

数据链路层:主要负责相邻的两个节点之间,具体怎么进行传输(就是传输方式)

这里提到节点可能友友们一时想不到是啥(以下图解释)

 节点:上述设备都可以叫做节点 

相邻接点: 通过一个线连接起来的节点

网络层:负责地址管理和路由选择,直白点就是负责选择走那一条路径更划算;路由:主机与主机之间数据传输的线路

传输层:确保数据可以从源主机发送到目标主机,相当于站在我和快递企业这个角度,我们不关心过程只关心起点和终点是否能够传输

应用层:负责应用程序间的沟通,描述传输数据

当前这些就是五层协议:也有地方叫做四层协议(不加物理层)

这么分层其实跟代码有关系层也只有应用层,(传输层,网络层)是操作系统内核,(数据链路层,物理层)是通过硬件和驱动程序来实现的。

2.4.2、TCP和UDP区别

注: 看两者区别之前可以先看完“分层理解事例”后回头来看这里效果会更好 

UDP: 无连接 、不可靠运输、 面向数据 、全双工

TCP: 有连接 、 可靠运输 、面向字节流 、 全双工

(1)有连接与无连接

 什么情况是连接?打电话就是有连接,需要连接建立才能通信,打电话就如此,一个人打电话需要的是对方能“接受”,才能进行通信, 反之如果对方法不接受就不能通信

像邮箱啥的qq,微信等,消息可以直接发,没有检测连接,这就是无连接,不是说所有的聊天软件都是无连接的,例如钉钉发消息是不是可以“已读不回”,也是有连接的,以为能检测到连接这边发消息,对方接受后会显示返回就是“已读”。

(2)可靠传输与不可靠传输

打电话就是可靠运输 (能探知对方的情况)

发短信,qq、微信是不可靠传输;发了归发了,但是也不知道对方收到没有收到,不能探知对方情况(当然“已读不回”也是可靠传输)

(3)面向数据与面向字节流

面对数据报:数据传输是通过一个个“数据报”为基本单位(一个数据报可能有若干个字节,带有一定的特殊格式)

面向字节流:数据传输就和文件读写类似 “流式”的

(4)全双工和半双工

全双工:一个通信通道,可以双向传输(既可以发送,也可以接收)

类似于高速公路上的大型隧道 ,虽然是同一个隧道,但是同样有车进车出(也类似网线,一根网线里有8根线,可进可出)。

半双工:一个通信通道 ,单向传输(类似水管就是单向传输,只有能有一端进水另一端出水)

2.5、分层理解事例

整个网络协议中,协议分成了很多层,上层协议要调用下层协议(上层协议把数据交给了下层,继续封装)。下层协议要给上层协议提供支持(下层协议解析好数据,交给上层),这些层协议有明确的层级关系,只有相邻的两个层级之间能进行交互(不能跨层级)

不能跨层级:可以理解为一个层级有一个层级的任务,如果交互就会造成一个层级忙不过来,可能会短时间卡壳或者崩坏。

2.5.1 封装

以下所有为了更好的理解协议的分层

以QQ为例 用户1 给 用户2 发送一个 hello

发送方用户在输入框中输入hello这个字符串,qq这个应用程序就把这个字符串给构造成一个应用层数据报 (本质上就是一个遵守了约定格式的字符串针对当前)

(1)应用层

一个假设的应用层协议格式:(不同的应用程序有不同的数据格式)

 程序执行会调用到操作系统API,把这个应用层数据交给传输层

(2)传输层(进入系统内核)

在传输层中就要把上述应用层数据,构造成传输层的数据报

传输层就会使用到协议,最知名就是TCP和UDP,比如这里是用TCP就需要构造出TCP的数据报需如果构成?刚才从应用层取来的作为UDP的载荷(payLoad)如字符串拼接一样将UDP报头这个报头和后面的数据拼接到一起

报头:就像快递一样上面会贴上一个标签,用来辨识

 上面的内容是一个特定格式的字符串(涉及到源端口和目的端口)

然后传输层就吧UDP数据报给网络层

(3)网络层

此处使用的都是熟知的协议IP协议,IP协议要基于上述数据,打包成一个IP数据报

 此处也相当于一个字符串。同时包含了另一组信息(核心的信息,源IP和目的IP)

网络层数据准备好了后交给数据链路层

(4)数据链路网

知名协议 “以太网”,与上操作相同,这里要打包成一个“以太网数据帧”

 最后数据传输给物理层

(5)物理层

上述传递还是二进制数据转换成光信号或者电信号此时就真正的把数据发送出去了(封装结束)。

2.5.2分用

接收工作省略转发过程 用户2接收过程  这里很想是把刚刚封装的部分进行拆解

(1)物理层

网卡接收到的是 光信号 和 电信号,是在物理层 ,把这个光信号转换回二进制的数据 ,转换回的这个数据,其实是一个以太网数据帧

(2)数据链路层解析

 数据链路层 ,需要去掉帧头帧尾,取出中间的载荷,交给上层的网络层接收 目的IP

以太网数据帧头也会记录 ,这个载荷是不是一个IP数据报

(3)网络层

IP协议会对这里进行解析,解析出IP报头,取出IP协议的载荷 ,把这里得到的传输层,交给上层传输层

 IP报头里会记录载荷是TCP还是UDP (封装和分用传输层使用的相同的肯定是协议)后交给传输层

(4)传输层

 此处使用的是UDP协议 ,所以这里UDP进行解析,取出载荷,再把载荷交给对应的应用程序

 UDP报头中有一个重要的字段,“目的端口”,目的端口是一个具体的应用程序关联在一起的。通过这个端口传递数据给应用程序

(5)应用层 QQ应用程序 qq就会针对应用层协议进行解析,显示到界面上

2.5.3、总结

表示一个网络传输的数据单的位包(packer),报(datagram),帧(frame),段(segment)

不同协议层对数据包有不同的称谓,在传输层叫做段,在网络层叫做数据报,在数据链路层叫做帧。

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装

数据封装成帧后发到传输介质上,达到目的主机后每层协议再拆下相应的首部,将首部中的上层协议字段交个上层协议处理称为分用

 协议之间有统一的标准,那谈到这里肯定有友友想问qq邮箱能给其他邮箱发消息,这里是不是个例或者应用层协议可以不同???

答案:都不是 ,是因为两个不同的程序都遵循了相同的应用层协议!!;应用程序不同不代表应用层协议一定不通过,也不是所有的应用层协议都是专门为此的,有广泛使用的应用层协议,让多个程序可以可以进行沟通

前面遗留了一个三层转发的问题?

路由器是三层转发: 在网络层转发

交换机是二层转发:在数据链路层转发

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

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

相关文章

114. 二叉树展开为链表

114. 二叉树展开为链表 难度中等 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先…

04 链式队列的实现

带头节点的链式队列&#xff1a; 初始化&#xff1a;rear和front指针都指向头节点入队&#xff1a;向rear指向的节点后插入新节点&#xff0c;并让rear指针移动指向新的队尾节点出队&#xff1a;front指针始终指向头节点&#xff0c;即删除头节点后一个节点&#xff1b;最后一个…

Arduino,Nodemcu,ESP8266网络连接(局域网),网页控制内部LED状态变化

整体思路&#xff08;无线终端模式&#xff09; 需要注意&#xff1a;esp8266是 802.11n⽀支持**(2.4GHz )&#xff0c;也就是平常说的wifi4&#xff0c;WiFi5G是连不上的** 配置指定的LED接口&#xff0c;配置网络的WiFi&#xff0c;记录ESP8266模块做为服务器的IP&#xff0…

2022某站百大up主公布名单,python如何快速获取up名单

前言 2022年已经过去&#xff0c;各大厂商都在做年度总结。某站在1月13日中午19点30分公布了2022百大UP主名单&#xff0c;那么今年的某站年度UP主都是谁呢&#xff1f;接下来就让我们一起了解一下吧。不过&#xff0c;我们去用python获取名单&#xff0c;是非常有成就的。 环…

Git(1)基础命令

Git基础知识总结 Author&#xff1a;onceday date&#xff1a;2022年8月8日 满满长路有人对你微笑过嘛… Modified date&#xff1a;2022年11月22日&#xff0c;完成第一章部分内容。 windows安装可参考文章&#xff1a;git简易配置_onceday_CSDN博客 參考文档&#xff1a…

腾讯云短信服务——获取验证码

引言 之前介绍过阿里云短信服务&#xff0c;传送门&#xff1a;阿里云短信服务——短信发送验证码&#xff0c;但是由于阿里云现在短信调用门槛较高&#xff0c;申请有很多限制&#xff08;我申请好几次都没有通过&#xff09;&#xff0c;所以只能使用测试账号给固定的手机号…

2023速卖通开店入驻流程及费用,新店运营思路

开店前准备 从卖家开始注册账户起&#xff0c;需速卖通平台的销售政策和全球速卖通平台规则。平台要求卖家在速卖通经营需遵循公平、诚实的行事原则&#xff0c;以确保安全的购买及销售体验。 1.注册账号 注册账户前&#xff0c;以下所有资料都是必须提供的资料。若资料不完…

AtCoder Beginner Contest 044(4/4)

Tak and Hotels (ABC Edit)前k晚花费x&#xff0c;k1晚以后花费yAC代码&#xff1a;import java.util.*; import java.io.*; public class Main {public static void main(String[] args) {InputStream inputStream System.in;OutputStream outputStream System.out;InputRea…

喜报 | 迅镭激光荣获2022年度江苏省科学技术奖

1月6日&#xff0c;江苏省科技厅发布了2022年度江苏省科学技术奖综合评审结果公示名单&#xff0c;迅镭激光与江苏师范大学等单位合作的“高功率2微米激光器关键技术及应用”项目&#xff0c;荣获2022年度江苏省科学技术二等奖。 江苏省科学技术奖是省内科技领域最高级别的奖项…

Java 23种设计模式(1.设计模式概念和UML)

1. 设计模式概念 软件设计模式&#xff08;Software Design Pattern&#xff09;&#xff0c;又称设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结 1.1 设计模式学习必要性理由 设计模式的本质是面向对象设计原则的实际运用&#xff0c;是对类的…

2022边缘计算开源项目

在边缘计算社区&#xff0c;统计边缘计算开源项目发展情况&#xff0c;开源软件生态蓬勃发展&#xff0c;边缘计算开源项目又是开源软件生态中不可忽视的重要力量。 2022 年边缘计算领域较为活跃和热门的十个开源项目&#xff1a;KubeEdge、EdgeXFoundry、Akraino、OpenYurt、B…

【UE4 第一人称射击游戏】47-修改AI为僵尸样貌

上一篇&#xff1a;【UE4 第一人称射击游戏】46-蹲高调整本篇效果&#xff1a;将AI修改成了僵尸的模样步骤&#xff1a;可以先从Mixamo网站下载 僵尸 资源&#xff0c;相关教程可以参考这篇文章&#xff1a;UE4 利用Mixamo自动绑骨并导入虚幻4我下载的是这个僵尸资源下载的时候…

【Qt】富文本处理简单介绍

文章目录Qt富文本处理富文本文档结构文本块QTextBlock表格、列表、图片查找功能语法高亮与HTML参考《Qt Creator快速入门(第三版)》。 Qt富文本处理 富文本Rich Text&#xff0c;简单说就是在文档中可以使用多种格式&#xff0c;比如字体颜色、图片和表格等&#xff0c;是与纯…

给定一个有序数组arr,代表坐落在X轴上的点 给定一个正数K,代表绳子的长度 返回绳子最多压中几个点? 即使绳子边缘处盖住点也算盖住

目录暴力求解贪心二分法滑动窗口对数器测试题目&#xff1a; 给定一个有序数组arr&#xff0c;代表坐落在X轴上的点 给定一个正数K&#xff0c;代表绳子的长度 返回绳子最多压中几个点&#xff1f; 即使绳子边缘处盖住点也算盖住 这道题有三个解决方案 暴力求解 //暴力求解O(N…

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

1.快速启动mysql容器 1&#xff1a;拉取mysql镜像&#xff1a; 根据自己需要&#xff0c;我这个是5.7版本的镜像。 docker pull nanlist/mysql:5.72&#xff1a;宿主机建立挂载目录&#xff1a; mkdir三个文件夹&#xff0c;方便持久化。 /home/mysql/conf /home/mysql/log…

java面试资料(二)

这里写目录标题Spring什么是 Spring Framework&#xff1f;列举 Spring Framework 的优点。Spring Framework 有哪些不同的功能&#xff1f;Spring Framework 中有多少个模块&#xff0c;它们分别是什么&#xff1f;什么是 Spring 配置文件&#xff1f;Spring 应用程序有哪些不…

MySQL数据同步ES的4种方法,你能想到几种?

大家好&#xff0c;我是老三&#xff0c;这期给大家分享一个电商中常见的场景——MySQL数据同步Elasticsearch。 大家应该都在各种电商网站检索过商品&#xff0c;那么检索商品一般都是通过什么实现呢&#xff1f;搜索引擎Elasticsearch。 那么问题来了&#xff0c;商品上架&a…

【布隆过滤器】如何防止缓存穿透、海量邮箱的垃圾邮件过滤等问题?

目录 一、布隆过滤器是什么&#xff1f; 二、布隆过滤器的模拟实现 2.1、模拟实现 2.2、布隆过滤器的优点和缺点 优点&#xff1a; 缺点&#xff1a; 2.3、布隆过滤器的删除功能 2.4、布隆过滤器的使用场景 一、布隆过滤器是什么&#xff1f; 它是一种概率型数据结构&am…

敏捷.概念辨析

第一部分 1. 最小可行产品MVP&#xff08;Minimum Viable Product&#xff09; 在很多同学的脑海里&#xff0c;MVP就是你想传达给用户的功能的最小集合。 错&#xff0c;完全错。 问题不在于“你觉得应该……”&#xff0c;关键是“用户目前感觉……”。我们预设了立场&am…

Android Glide 4.9 常见方法总结

转载请标明出处&#xff1a;http://blog.csdn.net/zhaoyanjun6/article/details/128665358 本文出自【赵彦军的博客】 文章目录依赖submit 下载图片DrawableImageViewTargetRequestListener 加载圆角图片回调圆形 CircleCrop圆角 RoundedCornersFitCenterCenterCropCenterInsid…