【计网】计算机网络基础

news2024/11/15 10:13:52

在这里插入图片描述

当自律变成一种本能的习惯,
你就会享受到它的快乐。
--- 村上春树 ---

初识计算机网络

  • 1 初识协议
    • 1.1 协议分层
    • 1.2 OSI七层模型
    • 1.3 TCP / IP协议
  • 2 初识局域网
    • 2.1 什么是局域网
    • 2.2 MAC地址
    • 2.3 局域网通信
  • 3 简单认识IP地址

1 初识协议

1.1 协议分层

首先,协议是一种约定。就比如使用汉语进行通信,就要遵循汉语的使用约定,不能胡乱遣词造句!

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

那么既然是进行计算机的通信,如果每个地区的通信协议不一致,就好比地方上的方言,那么肯定是不可能行的,必须是要推广普通话的。计算机世界也是这样,需要进行一个统一的协议来保证通信的可行性!!!

协议本质也是软件, 在设计上为了更好的进行模块化, 解耦合, 也是被设计成为层状结构的!这种分层的结构让维护通信的成本降低,提高效率!

张三和李四通过电话来进行通信,张三会把汉语协议的信息传给电话,电话再通过电话协议将信息传给李四的电话,李四通过汉语协议理解张三的信息。这就是实现了物理意义的分层:
张三 -> 电话 -> 电话 -> 李四

这样就是良好的解耦,张三李四不需要考虑电话之间是如何进行通信的,只需要向电话中传入信息或者获取信息!电话不需要管张三李四之间通信的信息如何理解,只需要做到信息的传递就可以。这样维护起来不就简单多了!!!

通过上面的简单例子, 我们是能理解, 分层可以实现解耦合, 让软件维护的成本更低。但是实际的网络通信协议, 设计的会更加复杂, 需要分更多的层。

1.2 OSI七层模型

OSI(Open System Interconnection, 开放系统互连) 七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范;

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

在这里插入图片描述

但是, 它既复杂又不实用; 所以我们按照 TCP/IP 四层模型来讲解:

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

  • 物理层: 负责光/电信号的传递方式。物理层的能力决定了最大传输速率、 传输距离、 抗干扰性等. 集线器(Hub)工作在硬件层面的。这里我们不对其进行探索!
  • 数据链路层: 负责设备之间的数据帧的传送和识别。 例如网卡设备的驱动、 帧同步(就是说从网线上检测到什么信号算作新帧的开始)。有以太网、 令牌环网,无线 LAN 等标准。交换机(Switch)工作在数据链路层.
  • 网络层: 负责地址管理和路由选择。 例如在 IP 协议中,通过 IP 地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。
  • 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
  • 应用层: 负责应用程序间沟通 ,如简单电子邮件传输(SMTP) 、 文件传输协议(FTP) 、 网络远程访问协议(Telnet) 等.。我们的网络编程主要就是针对应用层。

1.3 TCP / IP协议

为什么要有TCP/IP协议?

  1. 首先, 在独立的计算机内部 ,其实都是存在协议的, 比如: 其他设备和内存通信, 会有内存协议;其他设备和磁盘通信, 会有磁盘相关的协议(SATA, IDE, SCSI 等).只不过我们感知不到罢了。 而且这些协议都在本地主机各自的硬件中, 通信的成本低、 不容易出现问题。
  2. 而在计算机之间的通信过程中,距离是比较远的,通信的成本变高了,那么也一定会带来新的问题。 有问题就得解决问题, 所以需要新的协议啦。

我要发信息到目标主机B:

  1. 我需要发送信息给B,但是距离太远了,需要先发送给路由器,这要怎么办?
  2. 网上有很多主机,怎样才可以定位并找到B。
  3. 如果我发送数据出去了,中途数据丢失了,怎么办?
  4. B接收到了数据,他怎么知道我传送的数据要如何处理呢?

所以必然需要协议来解决这些问题!TCP/IP协议就是解决方案!

在这里插入图片描述
无论是windows ,linux 或者安卓,都要遵循这样的协议,这样就能实现不同设备之间的通信!在四层的协议之间中,网络层和传输层是最重要的,统称为TCP/IP协议。

所谓协议 ,就是通信双方都认识的结构化数据类型!

下面通过快递单来朴素的理解协议:

小明买了一个新键盘,那么他想要收到的就是键盘。但事实上,快递送达的时候除了键盘,他还会收到一张记录信息的快递单。这张快递单上储存着各种各样的信息,这些信息是卖家填的,小明和卖家都可以理解这些信息,那么小明就会明白这是他的快递!这张单子是快递公司制定的板式,小明和卖家都是按照规则读取和写入数据。所以这个快递单本质就是一种协议!!!用C语言表示不就是一个结构体吗!!!
我们把“快递单”称之为报头 , “键盘”称之为有效载荷!
在这里插入图片描述

通过协议就可以理解对方发送的信息的含义什么,就可以进行通信了!!!

2 初识局域网

2.1 什么是局域网

首先,两台计算机在一个局域网中,是可以进行直接通信的。就比如在我的世界里的局域网联机,这就允许在同一个局域网中玩家之间可以直接进行通信!!!

我们以上课的例子来理解局域网:

王老师在教室给同学们上课,教室里有张三,李四,王五,赵六,刘八等同学。突然王老师说:“张三站起来 , 你作业为什么不交!”,所有同学都听见了这个信息,但只有张三站了起来,其他人不会站起来,因为其他人在听到消息后理解了这条信息的接受者是张三,而不是他们!
同学们听到信息,都提取出了对话目标是张三,再与自身信息进行对比。所以只有张三会站起来!

张三站起来之后说:“我交了作业,只是你没看罢了”
此时也不会有其他人进行插嘴,因为这是传送给王老师的信息!

在这个过程中,王老师和同学们同处在一个区域网(教室)中,张三和王老师的对话可以称之为单独对话吗?当然可以,因为两人话语的对象是彼此,虽然其他同学也会听到,但是他们知道消息不是发送给他们的!仅仅是吃瓜群众罢了!!!

王老师和同学们就相当于局域网下的不同主机,为了可以在局域网中判断信息是否是发送给自己的,就需要一个唯一的标识信息来进行判断:

  • 每台主机都要有一个MAC地址!这是唯一的!

2.2 MAC地址

MAC 地址用来识别数据链路层中相连的节点:

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

我们可以查看一下Linux主机的MAC地址:
在这里插入图片描述
通信过程中,就会将自己的MAC地址和对方的MAC地址加入到报头中,方便其他计算机的判断!
在这里插入图片描述

2.3 局域网通信

  • 以太网中, 任何时刻, 只允许一台机器向网络中发送数据
  • 如果有多台同时发送, 会发生数据干扰, 我们称之为数据碰撞。(数据的传输是通过光电信息进行传递的,多个信息回互相干扰!!!)
  • 所有发送数据的主机要进行碰撞检测和碰撞避免
  • 没有交换机的情况下, 一个以太网就是一个碰撞域
  • 局域网通信的过程中, 主机对收到的报文确认是否是发给自己的, 是通过目标mac 地址判定

那么可以看到,这个以太网只允许一台机器进行访问,不就相当于是临界资源吗!但是并不会进行上锁的方式解决,而是通过碰撞检测来进行解决临界问题。发送碰撞就重新进行发送!

每台电脑都可以理解为:用户层,传输层,网络层和数据链路层。如果要进行通信,那么就要从用户层来进行,一层一层的向下传递,传递到网卡,通过网卡将数据发送出去,然后另一台计算机接收到信息,一层一层的向上解包传递!

  • 封装信息的过程,可以理解为不断的用纸盒进行包装,然后贴上快递单(每层的协议)!
  • 解包信息的过程,可以理解为阅读快递单(通过协议进行解包),一层一层的打开包装!

在这里插入图片描述
每层只关注自己的信息,都认为是在与对方同层协议进行直接通信!!!
整个结构可以理解为栈结构,封装信息的过程就是不断将信息进行入栈,解包的过程就不断的弹栈!!!所以网络才称之为网络协议栈!

数据在网络中传送,一定最终是要在硬件上进行!!!所以才要进行封装和解包的过程,而不是每次协议直接进行通信!

报头部分, 就是对应协议层的结构体字段, 我们一般叫做报头,除了报头, 剩下的叫做有效载荷:

报文 = 报头 + 有效载荷

除了应用层,其他层都需要解决一个问题:自己的有效载荷应该交给上层的哪一种协议?所以协议结构体中都要有一个字段表示上层应该传给哪一个协议!!!

总的来说:通信的过程可以理解为下面一张图
在这里插入图片描述

3 简单认识IP地址

如果要进行跨网络通信,就需要IP地址来进行标识!

IP 协议有两个版本, IPv4 和 IPv6. 我们整个的课程, 凡是提到 IP 协议, 没有特殊说明的,默认都是指 IPv4

  • IP 地址是在 IP 协议中, 用来标识网络中不同主机的地址;
  • 对于 IPv4 来说, IP 地址是一个 4 字节, 32 位的整数;
  • 我们通常也使用 “点分十进制” 的字符串表示 IP 地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;跨网段的主机的数据传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.

对比 IP 地址和 Mac 地址的区别:
• IP 地址在整个路由过程中, 一直不变(目前, 我们只能这样说明, 后面在修正)
• Mac 地址一直在变
• 目的 IP 是一种长远目标, Mac 是下一阶段目标, 目的 IP 是路径选择的重要依据, mac 地址是局域网转发的重要依据

以后我们会继续深入学习IP,这里只是简单介绍一下!

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

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

相关文章

Xilinx SDK入门示例

本文以测试PS端的UART和DDR3,介绍Xilinx SDK的简单用法。 1 创建VIVADO工程 Step1:新建工程 Step2: Step3:选择器件 Step4:在接下来的页面中,点击Finish完成工程的创建 Step5:点击IP INTERGA…

JavaScript 编程精粹:JavaScript 事件处理

JavaScript 编程精粹:JavaScript 事件处理 一 . BOM1.1 Window1.1.1 alert()1.1.2 confirm()1.1.3 setInterval()1.1.4 setTimeout()1.1.5 小案例 - 通过定时器来控制灯的亮暗 1.2 History1.3 Location 二 . DOM2.1 获取 Element 对象2.2 常见 Element 对象的使用 三…

【Qt】实现一个小闹钟

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton>//按钮类 #include <QLineEdit>//行编辑器 #include <QLabel>//标签类 #include <QTextEdit>//输入框 #include <QTimerEvent>//定时器事件类 #inc…

【Java】SpringCloud中使用set方法报错空指针

前言&#xff1a;今天在交流群中看见了一个空指针报错&#xff0c;想着哪里为空点过去看看为什么赋不上值就行&#xff0c;没想到啪啪打脸了&#xff0c;今天总结一下。 以下是他的RedisTempate注入和方法 可以看到&#xff0c;89行报错空指针。先分析一下&#xff0c; ①赋值…

机器学习:opencv--图像旋转、模版匹配多项

目录 一、图像旋转 1.numpy方法 2.opencv方法 二、模版匹配多项 1.完整代码 2.步骤解析 3.结果 三、图像旋转模版匹配 一、图像旋转 图像旋转有两种方式 1.numpy方法 import cv2 import numpy as npimg cv2.imread(suda.jpg) img cv2.resize(img, (300, 300))# np…

解决Windows Server 2012加密套件过时的问题

给自己网站加了SSL证书后&#xff0c;发现在360极速浏览器浏览时&#xff0c;会显示加密套件已经过时。一直以为是.cn域名的问题&#xff0c;后面才发现是IIS上面加密套件过时的问题。 TLS/SSL (Schannel SSP) 中的密码套件 - Win32 apps | Microsoft Learn 一开始我以为切换到…

力扣518-零钱兑换 II(Java详细题解)

题目链接&#xff1a;518. 零钱兑换 II - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 最近刚学完背包&#xff0c;所以现在的题解都是以背包问题为基础再来写的。 如果大家不懂背包问题的话&am…

【重点】抓取三次握手的数据报文,分析每次握手的交互过程

1、制造三次握手的报文 三次握手是TCP&#xff08;传输控制协议&#xff09;建立连接的过程。它包括以下三个步骤&#xff1a; 1&#xff09;SYN&#xff08;同步&#xff09;&#xff1a;客户端发送一个SYN报文&#xff0c;请求与服务器建立连接。 2&#xff09;SYN-ACK&am…

text2video的step1出错,与纠正

也就是配置RWKV向外提供API访问权;并将openai的api_base改为本地访问地址。 # 设置 OpenAI 的 API 密钥 openai.api_key = "free"#os.getenv(OPENAI_API_KEY) #老版本,过时了,1.2已经不支持了 openai.api_base = "http://127.0.0.1:8000/v1" #在这里设置…

Java入门:08.Java中的static关键字

1 static关键字 可以修饰属性变量&#xff0c;方法和代码段 static修饰的属性称为静态属性或类属性&#xff0c; 在类加载时就在方法区为属性开辟存储空间&#xff0c;无论创建多少个对象&#xff0c;静态属性在内存中只有一份。 可以使用 类名.静态属性 的方式引用 static修饰…

图的基础概念

图和树一样&#xff0c;是一种十分重要的算法思想&#xff0c;是很多算法比如floyd算法&#xff0c;Dijkstra算法等的实现基础 一、节点和边 节点和边是图的基本组成部分&#xff0c;以公交路线图为例&#xff0c;每一个站点相当与图的节点&#xff0c;连接每一个站点的路线相…

【03】深度学习——神经网络原理 | 多层感知机 | 前向传播和反向传播 | 多层感知机代码实现 | 回归问题、分类问题 | 多分类问题代码实现

深度学习 1.神经网络原理1.1神经元模型1.2神经网络结构1.3隐藏层1.3.1激活函数层 1.4输出层1.4.1softmax层 1.5损失函数1.6反向传播 2.多层感知机2.1线性网络的局限性2.2引入非线性2.3多层感知机&#xff08;Multi-Layer Perceptron&#xff0c;MLP&#xff09;2.4激活函数&…

卷轴模式系统源码开发在当今时代的多重益处

随着信息技术的飞速发展&#xff0c;数字化转型已成为各行各业不可逆转的趋势。在这一背景下&#xff0c;卷轴模式系统&#xff08;这里的“卷轴模式”可理解为一种以滚动、分层或模块化展示信息的界面设计方式&#xff0c;类似于古代卷轴展开的过程&#xff0c;但更多地是指其…

2024金砖展 | 蓝卓:“1+2+N”智能企业新架构,赋能全球工业数字化转型

2024金砖国家新工业革命展——工业互联网专题展览作为2024金砖国家新工业革命展聚焦工业互联网的专题展示区域&#xff0c;全面展示工业互联网新技术、新产品、新方案、新应用、新项目、新生态等。 展览时间&#xff1a;2024年9月8日-9月11日 展览地点&#xff1a;厦门国际会展…

FreeRTOS学习记录——持续更新

目录 入门知识&#xff1a; 裸机与FreeRTOS: 裸机&#xff1a; RTOS系统&#xff1a; 基础知识: 任务调度&#xff1a; 分类&#xff1a; 时间片调度&#xff1a; 任务状态&#xff08;四种&#xff09;&#xff1a; 四种状态图片&#xff1a; 入门知识&#xff1a; …

AV1 Bitstream Decoding Process Specification:术语和定义

原文地址&#xff1a;https://aomediacodec.github.io/av1-spec/av1-spec.pdf没有梯子的下载地址&#xff1a;AV1 Bitstream & Decoding Process Specification摘要&#xff1a;这份文档定义了开放媒体联盟&#xff08;Alliance for Open Media&#xff09;AV1视频编解码器…

上海市皮肤病医院引入AcrelEMS-MED平台打造绿色医院

在数字化转型的浪潮中&#xff0c;上海市皮肤病医院再次走在前列&#xff0c;宣布对其能源管理系统进行全面升级&#xff0c;引入AcrelEMS-MED医院能源管理平台&#xff0c;以科技力量推动绿色医院建设&#xff0c;为患者和医护人员打造更加安全、高效、环保的就医与工作环境。…

2024.9.9(极客大挑战 2019]EasySQL,[极客大挑战 2019]Knife)

题目一&#xff1a;极客大挑战 2019]EasySQL 1、点开题目链接&#xff0c;来到下面的界面 2、遇到这样的登录界面&#xff0c;先尝试admin和万能密码&#xff08;1 or 11#&#xff09;&#xff0c;拿到flag 题目二&#xff1a;[极客大挑战 2019]Knife 1、点开链接&#xff0c…

【C++】模板:进阶(仿函数深度剖析)

目录 一.仿函数的概念 二.仿函数的作用 三.模板的非类型模板参数 四.array 五.模板的特化 六.函数模板 七.类模板 1.全特化 2.偏特化 八.模板分离编译 一.仿函数的概念 仿函数本质就是一个类&#xff0c;此类中重载了运算() &#xff0c;因此它使用起来就和函数很像&a…

新160个crackme - 053-devilz KeyGen me#3

运行分析 解压出来4个文件运行程序发现要破解Name和Serial PE分析 32位&#xff0c;petite壳 手动脱壳 使用windows XP虚拟机OD打开程序按2下F8&#xff0c;发现ESP变红&#xff0c;根据ESP定律&#xff0c;在该地址右键 -> HW break下断点 继续按2下F9&#xff0c;来到灰色…