初识计算机网络

从此篇我将开始网络新篇章!

1. 网络发展史

最初的计算机之间相互独立存在,每个计算机只能持有自己的数据,数据无法共享。此时的计算机为独立模式
随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完
成业务,就有了网络互连
网络互联即将多台计算机连接在⼀起,完成数据共享。
数据共享本质是网络数据传输,即计算机之间通过⽹络来传输数据,也称为网络通信。
根据网络互连的规模不同,可以划分为局域网广域网

2. 广域网VS局域网

2.1局域网LAN

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

局域网组建网络的方式有很多种:

1. 基于网线直连

在这里插入图片描述

2. 基于集线器组建

在这里插入图片描述
集线器只能单向转发数据,现在不使用了

3. 基于交换机组建

在这里插入图片描述
可以实现对所有计算机设置的数据转发
在内网中实现组网,主要用在公司内部

4. 基于交换机和路由器组建

在这里插入图片描述

2.2 广域网WAN

广域网,即WideAreaNetwork,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部
的局域网都属于其子网。

在这里插入图片描述

其局域网和广域网是一个相对概念,并没有明确的区分

3. 网络通讯基础

3.1 IP地址

概念IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。
就像我们发送快递⼀样,需要知道对方的收货地址,快递员才能将包裹送到目的地。

格式: IP地址是⼀个32位的二进制数,通常被分割为4个“8位⼆进制数”(也就是4个字节),如:01100100.00000100.00000101.00000110。通常用“点分十进制”的方式来表示,即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制整数)。如:100.4.5.6。


上述IP地址是用四个字节表示的,最多42亿左右的设备,那么不够用怎么办?

上述的IP地址采用的点分十进制的表示方法是Ipv4的表示方法,现如今有了Ipv6表示方法,完全足够使用

在这里插入图片描述
在cmd当中使用ipconfig指令可以查看当前设备的IP地址,以我电脑为例:

在这里插入图片描述


3.2 端口号

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

格式:
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定⼀个端口号,来发送及接收网络数据。


端口号是否是可变的呢?
  • 如果是服务提供方就需要一个确定的端口号,MYSQL服务端的端口号默认3306
  • 如果是客户端的话系统会随机分配一个

那么程序员是否可以随机指定端口号呢?

  • 其中1~ 1024 知名端口号,比较有名的程序已经占用了的端口号,比如:WEB程序用的80,FTP用的21
  • 1205~ 65535 这个范围内可以随便指定
  • 原则就是一台主机上的端口号在不同网络程序之间不能冲突

有了IP地址和端口号,可以定位到网络中唯⼀的⼀个进程,但还存在⼀个问题,⽹络通信是基于⼆进制0/1数据来传输,那么如何告诉对⽅发送的数据是什么样的呢?
网络通信传输的数据类型可能有多种:图片,视频,文本等。同⼀个类型的数据,格式可能也不同,
如发送⼀个文本字符串“你好!”:如何标识发送的数据是文本类型,及文本的编码格式呢?
基于网络数据传输,需要使用协议来规定双方的数据格式。


3.3 认识协议

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

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

  • 计算机⽣产厂商有很多;
  • 计算机操作系统,也有很多;
  • 计算机⽹络硬件设备,还是有很多;

如何让这些不同厂商之间⽣产的计算机能够相互顺畅的通信?
就需要有人站出来,约定⼀个共同的标准,大家都来遵守,这就是网络协议;

3.4 五元组

在TCP/IP协议中,⽤五元组来标识⼀个网络通信:

  1. 源IP: 标识源主机,等同于发件人地址
  2. 源端口号: 标识源主机中该次通信发送数据的进程,等同于发件人名称
  3. 目的IP: 标识目的主机,等同于收件人地址
  4. 目的端⼝号: 标识目的主机中该次通信接收数据的进程,等同于收件人名称
  5. 协议号: 标识发送进程和接收进程双方约定的数据格式,等同于运送的物品或其他相关约定
    在这里插入图片描述
    在这里插入图片描述

3.5 协议分层

对于网络协议来说,往往分成几个层次进行定义。
为什么要协议分层?
目的是为了让不同的层专注自身的数据处理方式,只需要为上层去提供API,并
为下层准备数据(根据下层协议要求)

3.5.1 OSI七层模型

OSI:Open System Interconnection,开放系统互连
在这里插入图片描述

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

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

在这里插入图片描述

  1. 应用层: 和用户打交道,接收与展示用户的数据,比如收发快递的过程中,只关注物品本身
  2. 传输层: 完成端到端的传输的准备,确定收送主机的地址和端口号,对比快递来说确定收件人和发件人的地址和电话
  3. 网络层: 规划出端到端之间的网络路径,路径中可能会包含中间经过的其他网络设备,比如快递中转站
  4. 数据链路层: 完成点到点之间的传输,每个网络设备之间的传输
  5. 物理层: 把真实的BIT数据流,通过转换成光电信号在传输介质中传输
    网线:电信号 光纤:光信号

注意四层模型即不包括物理层

3.6 封装和分用

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)

  • 应用层数据通过协议栈发到网络上时,每层协议都要加上⼀个数据首部(header),称为封装 (Encapsulation)。

  • 首部信息中包含了⼀些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。

  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理。

下图为数封装和分用的过程
在这里插入图片描述

发送方流程(封装):

  1. 应用层按照应用层协议组装好我们的数据
  2. 传输层确定源端口号和目的端口号
  3. 网络层确定源IP地址和目的IP地址
  4. 数据链路层确定源MAC地址和目的MAC地址放在MAC头中(帧头),通过CRC算法计算校验和放在MAC尾中(帧尾),加入帧头与帧尾之后,把数据以二进制的形式发送给物理层
  5. 物理层把具体的数据(报文)转换成光电信号,通过传输介质进行传输

接收方流程(分用):

  1. 物理层接收到光电信号之后,根据以太网协议把信号转换成二进制BIT流,以二进制的形式交给上一层(数据链路层)
  2. 数据链路层解析出帧头、载荷、帧尾确认数据正确后,去掉帧头与帧尾把本层的载荷交给上一层(网络层)
  3. 网络层根据IP协议解析报文件,取出载荷交给上一层(传输层)
  4. 传输层根据TCP协议解析报文件,取出载荷交给上一层(应用层)
  5. 应用层按应用程序协议解析数据

此时有一个疑问了? 计算机是如何知道对方的IP地址的呢? 这是因为我们在使用软件时,会连接到该软件的服务器,当我们登入成功使用时,该服务器就会把我们的IP地址和端口号存放在当中

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

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

相关文章

PyTorch 中 `torch.cuda.amp` 相关警告的解决方法

在最近的写代码过程中,遇到了两个与 PyTorch 的混合精度训练相关的警告信息。这里随手记录一下。 警告内容 警告 1: torch.cuda.amp.autocast FutureWarning: torch.cuda.amp.autocast(args...) is deprecated. Please use torch.amp.autocast(cuda, args...) i…

【PS 2022】Adobe Genuine Service Alert 弹出

电脑总是弹出Adobe Genuine Service Alert弹窗 1. 不关掉弹窗并打开任务管理器,找到Adobe Genuine Service Alert,并右键进入文件所在位置 2 在任务管理器中结束进程并将文件夹中的 .exe 文件都使用空文档替换掉 3. 打开PS不弹出弹窗,解决&a…

Vue2生命周期面试题

在 Vue 2 中,this.$el 和 this.$data 都是 Vue 实例的属性,代表不同的内容。 1. this.$el this.$el 是 Vue 实例的根 DOM 元素,它指向 Vue 实例所控制的根节点元素。在 Vue 中,el 是在 Vue 实例创建时,指定的根元素&…

unity 安装Entities

因为Entities目前不支持用资源名动态加载资源!没错,AssetsBundle或Addressables都不能用于Entities;也就意味着现阶段不能用Entities开发DLC或热更游戏。 Entities必须使用SubScene,而SubScene不能从资源动态加载,路被…

基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试

基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试 1. 引言 在计算机视觉领域,图像分类是一个经典的任务。本文将详细介绍如何使用 PyTorch 实现一个树叶分类任务。我们将从数据准备开始,逐步构建模型、训练模型,并在测试…

团结引擎 Shader Graph:解锁图形创作新高度

Shader Graph 始终致力于为开发者提供直观且高效的着色器构建工具,持续推动图形渲染创作的创新与便捷。在团结引擎1.4.0中,Shader Graph 迎来了重大更新,新增多项强大功能并优化操作体验,助力开发者更轻松地实现高质量的渲染效果与…

C# OpenCV机器视觉:模仿Halcon各向异性扩散滤波

在一个充满创意与挑战的图像处理工作室里,阿强是一位热情的图像魔法师。他总是在追求更加出色的图像效果,然而,传统的图像处理方法有时候并不能满足他的需求。 有一天,阿强听说了 Halcon 中的各向异性扩散滤波功能,它…

超详细的数据结构3(初阶C语言版)栈和队列。

文章目录 栈和队列1.栈1.1 概念与结构1.2 栈的实现 2. 队列2.1 概念与结构2.2 队列的实现 总结 栈和队列 1.栈 1.1 概念与结构 栈:⼀种特殊的线性表,其只允许在固定的⼀端进行插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶,另…

利用邮件合并将Excel的信息转为Word(单个测试用例转Word)

利用邮件合并将Excel的信息转为Word 效果一览效果前效果后 场景及问题解决方案 一、准备工作准备Excel数据源准备Word模板 二、邮件合并操作步骤连接Excel数据源插入合并域预览并生成合并文档 效果一览 效果前 效果后 场景及问题 在执行项目时的验收阶段,对于测试…

一个基于ESP32S3和INMP441麦克风实现音频强度控制RGB灯带律动的代码及效果展示

一个基于ESP32S3和INMP441麦克风实现音频强度控制RGB灯带律动的代码示例,使用Arduino语言: 硬件连接 INMP441 VCC → ESP32的3.3VINMP441 GND → ESP32的GNDINMP441 SCK → ESP32的GPIO 17INMP441 WS → ESP32的GPIO 18INMP441 SD → ESP32的GPIO 16RG…

用户认证综合实验

实验需求 需求一:根据下表,完成相关配置 需求二:配置DHCP协议,具体要求如下 需求三:防火墙安全区域配置 需求四:防火墙地址组信息 需求五:管理员 为 FW 配置一个配置管理员。要求管理员可以通…

Curser2_解除机器码限制

# Curser1_无限白嫖试用次数 文末有所需工具下载地址 Cursor Device ID Changer 一个用于修改 Cursor 编辑器设备 ID 的跨平台工具集。当遇到设备 ID 锁定问题时,可用于重置设备标识。 功能特性 ✨ 支持 Windows 和 macOS 系统🔄 自动生成符合格式的…

linux部署node服务

1、安装nvm管理node版本 # 下载、解压到指定目录 wget https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.1.tar.gz tar -zxvf nvm-0.39.0.tar.gz -C /opt/nvm # 配置环境 vim ~/.bashrc~:这是一个路径简写符号,代表当前用户的主目录。在大多数 …

Kotlin实战经验:将接口回调转换成suspend挂起函数

在 Kotlin 协程中, suspendCoroutine 和 suspendCancellableCoroutine 是用于将回调或基于 future 的异步操作转换成挂起函数。 suspendCoroutine 用途:将回调式异步操作转换为可挂起函数 行为: 启动一个新的协程来处理基于回调的操作挂起当前协程,直到调用回调回调负责…

【DeepSeek服务器繁忙,请稍后再试...如何解决?】

DeepSeek服务器繁忙,请稍后再试...如何解决? DeepSeek该咋使用?解决办法:本地桌面工具接下来说下,DeepSeek提示词该咋写? DeepSeek该咋使用? 首先,先说下DeepSeek该咋使用&#xff…

SDKMAN! 的英文全称是 Software Development Kit Manager(软件开发工具包管理器)

文章目录 SDKMAN! 的核心功能SDKMAN! 的常用命令SDKMAN! 的优势总结 SDKMAN! 的英文全称是 Software Development Kit Manager。它是一个用于管理多个软件开发工具(如 Java、Groovy、Scala、Kotlin 等)版本的工具。SDKMAN! 提供了一个简单的方式来安装、…

Python实现GO鹅优化算法优化支持向量机SVM分类模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着信息技术的迅猛发展,数据量呈爆炸式增长,如何从海量的数据中提取有价值…

网络安全工程师逆元计算 网络安全逆向

中职逆向题目整理合集 逆向分析:PE01.exe算法破解:flag0072算法破解:flag0073算法破解:CrackMe.exe远程代码执行渗透测试天津逆向re1 re22023江苏省re12023年江苏省赛re2_easygo.exe2022天津市PWN 逆向分析:PE01.exe …

Mysql 函数解析

文章目录 一、模糊匹配【like】二、CASE函数1、简单case2、搜索case3、搜索case 聚合函数 三、日期函数四、字符串处理 一、模糊匹配【like】 一般形式为:列名 [NOT] LIKE ‘%关键字%’,示例如下: like %北京%列名包括北京的字样like ‘北…

C# OpenCV机器视觉:SoftNMS非极大值抑制

嘿,你知道吗?阿强最近可忙啦!他正在处理一个超级棘手的问题呢,就好像在一个混乱的战场里,到处都是乱糟糟的候选框,这些候选框就像一群调皮的小精灵,有的重叠在一起,让阿强头疼不已。…