网络基础(一)【网络发展/认识协议/网络 VS 系统/以太网通信原理/重谈协议/网络中的地址管理】

网络基础(一)

  • 1. 网络的发展
  • 2. 认识协议
  • 3. 网络 VS 系统
  • 4. 以太网通信原理
  • 5. 重谈协议
  • 6. 网络中的地址管理


1. 网络的发展


最开始时,计算机之间相互独立。

在这里插入图片描述

但是为了协作完成一些任务,就产生了计算机之间相互通讯的需求,于是,网路诞生了。

在这里插入图片描述

局域网:参与通讯的主机越来越多,形成一个更大的网络。各个计算机通过交换机和路由器连接在一起。

在这里插入图片描述

广域网:参与通讯的计算机更多了,远隔千里的计算机也能相互通讯了。路由器将各个子网连接在一起。

在这里插入图片描述

所谓 “局域网” 和 “广域网” 只是一个相对的概念。


2. 认识协议


1. 什么是协议?

  • 计算机生产厂商有很多;
  • 计算机操作系统,也有很多;
  • 计算机网络硬件设备,还是有很多;
  • 网络一定要保证,各种不同的机器,都能够无障碍进入互联网,所以从硬件到软件上,都要制定一些统一的约定;
  • 这些约定就是 网络协议

2. 跨网络通讯存在的问题(新技术带来新问题)

  • 单台机器中,各个硬件之间也要相互通讯,他们通过各种电路连接到一起。所以单台机器,其实也是一个网络结构。
  • 两台机器跨网络通讯的本质,是一台机器的网卡和另一台机器的网卡之间相互通讯。单台机器硬件间相互通讯时,因为距离短,所以很容易实现。
  • 跨网络通讯由于距离很长,所以产生了如下几个新问题:
    • 数据丢包了怎么办?
    • 目标机器如何定位?
    • 如何保证,我们的报文,在经历了无数个设备之后,还能准确的把数据推送到远端机器?
  • 协议的制定,也解决了上述三个问题。

3. 协议分层

在这里插入图片描述

  • 在打电话的场景中,我们的直观感受是,自己在和人说话,而不是在跟手机说话。而实际场景是,我们所说的话,需要通过电话先转成电信号,再传递给对方的手机,由对方的手机解析该信号,转化成语音。
  • 人是无法直接跟手机说话的,因为人无法识别电信号,手机也无法识别语音信号。可以理解为,人和人之间,有一种协议,大家都说语音信号,所以可以相互沟通;手机和手机之间也有一种协议,大家都使用电信号,所以也可以相互沟通。
  • 当人和人之间的协议变化时,比如大家都改说英文,是不影响下层手机的协议的;当手机由座机变为移动手机时,下层协议变为无线电协议,不影响上层人和人之间的协议。
  • 协议只适用于同层之间相互通信,不能上下层通信,这样的设计理念就是协议分层。

3. 网络 VS 系统


1. 网络通讯存在的问题,更具体

  • a. 怎么保证把数据给下一跳主机;
  • b. 在转发中,如何进行路径选择,目标主机定位的问题;
  • c. 如果报文中间出现错误或丢失,如何解决;
  • d. 对于送达的数据,还要解决如何使用数据的问题。
  • 上述abcd中的每一个问题,都要由协议解决,由此可以知道,协议有很多。

2. 网络的解决方案 —— 网络的层状结构

  • 理论模型:OSI参考模型

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

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

在这里插入图片描述

绝大部分优秀的软件,结构都是层状的。

3. 网络协议栈(TCP/IP协议栈)

在这里插入图片描述

  • 每一层都有对应的协议;每一层都解决一个网络传输中的具体问题。

4. 网络和系统的关系

在这里插入图片描述

  • 如图所示,网络协议栈和系统的各层级有一一对应关系。TCP/IP协议是存在在系统内核中的。
  • 对于不同的操作系统,如Windows、Linux、MacOS,他们的左边系统部分是不同的,实现上甚至有很大差别。但是他们的右边网络部分,必须相同。所以在不同的操作系统中,网络的系统调用接口大同小异。

4. 以太网通信原理


在同一个局域网中,两台主机可以直接通信,每一个网卡都有一个mac地址,这个mac地址是全球唯一的(mac地址也可以虚拟,例如虚拟机的mac地址就是虚拟出来的)

利用ifconfig命令可以查看Linux操作系统的mac地址:

在这里插入图片描述

同一个局域网中的主机,连接在同一个网线中,如果主机A想向主机B发送一个消息“你好”,只需要知道主机A和主机B网卡的mac地址即可,这个信息携带着主机A和主机B网卡的mac地址,发送到了网线上,所有连接在这个网线上的主机都收到了这个信息,只是有的主机解析该信息后,发现mac地址不是自己的,也就不是发给自己的,就把这个信息丢弃了。

在这里插入图片描述
不难看出,要想正确的发送数据,任何时刻,只允许一台主机在局域网中发消息,不然就会发生数据碰撞。我们也将会发生数据碰撞的地方叫做碰撞域。局域网就是一个基于碰撞检测和碰撞避免的通信网络。

如果从系统的角度来看,局域网就是一个临界资源,要保证对临界资源的互斥访问。

以太网名字的由来:以太网就是局域网,上个世纪,物理学家认为,既然声音的传播需要介质,那么光的传播也是需要介质的。学者们把这种假想出来的介质称为“以太”,并认为宇宙中一定充满了“以太”。后来经过实验证明,“以太”这种物质不存在,但是“以太”这个名词被计算机领域使用了,也就有了最早的“以太”网。


5. 重谈协议


1. 生活小例子

在这里插入图片描述

  • 在快递的场景中,一个完整的快递件,是由快递单号+快递内容组成的。作为用户,我们实际上并不关心快递具体是怎么送达的(不会去看快递单号),只关心最后拿到的快递内容;
  • 快递单本身就是一种约定,是一种协议,它详细记录了寄件人和收件人的信息,以保证快递能正确的送到收件人手中;
  • 如果我们用计算机语言来表示这个快递单,它实际上就是一个结构体数据。协议通常就是由结构体字段表征的,这个结构体字段定义的对象,我们叫做协议报头。

2. 数据包的封装和分用

在这里插入图片描述

  • 假如现在有两台主机在通信(假设两天主机在同一局域网内),主机A给主机B发送了一条消息:你好。实际的传输过程如上图所示。
  • “你好”消息在主机A中,需要对其逐层添加报头,封装数据包;B首先拿到的是封装了各种报头的数据帧,随后开始对这个数据帧进行逐层的解包和分用,返回给最上层用户的就是最原始的数据“你好”。
  • 应用层封装的数据叫request&response,传输层封装的数据叫数据段,网络层封装的数据叫数据报,数据链路层封装的数据叫数据帧

3. 只要有封装,就一定要考虑后续解包的过程,今后在学习协议时,绕不开的两个问题

  • 如何将报文中的报头和有效载荷进行分离;
  • 任何协议,都要解决如何将自己的有效载荷,交付给上层的哪一个协议的问题。

6. 网络中的地址管理


1. 认识IP地址

  • IP协议有两个版本,IPv4和IPv6。我们整个的课程,凡是提到IP协议,没有特殊说明的,默认都是指IPv4。
    • IP地址是在IP协议中,用来标识网络中不同主机的地址,最大的意义在于路径选择;
    • 对于IPv4来说,IP地址是一个4字节,32位的整数;
    • 我们通常也使用 “点分十进制” 的字符串表示IP地址,例如 192.168.0.1 ;用点分割的每一个数字表示一个字节,范围是 0 - 255。
    • 在实际的网络传输中,IP地址是以整数形式传递的;在编程角度,也可以以字符串形式使用IP;IP地址是可以在整数和字符串之间相互转化的。
  • Linux下的IPV4地址如下:

在这里插入图片描述

  • Windows下的IPV4地址如下:

在这里插入图片描述

  • IP地址又分为:a.公网IP b.内网IP(这个后面再详谈)。
  • 可以通过一个struct结构体,来描述IP:
struct ip_struct
{uint8_t p1;uint8_t p2;uint8_t p3;uint8_t p4;
};

2. 认识MAC地址

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

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

在这里插入图片描述

  • Windows下的MAC地址:

在这里插入图片描述

3. IP地址 VS MAC地址

  • IP地址用来标识数据的发出地和目的地;
  • MAC地址用来标识数据上一站从哪里来,以及下一站到哪里去。

就好比唐僧要去西天取经,起始地是大唐长安,目的地是大雷音寺;此时唐僧到了女儿国,上一站是火焰山,下一站是黑风岭。

4. 模拟跨网络传输

在这里插入图片描述

  • 假设两台机器在不同的局域网中,A发送了一条消息“你好”给机器B;
  • 该消息首先要进行封装,在网络层封装时,报头处必然要携带发送方主机A的IP地址,和接收方主机B的IP地址;
  • 连接局域网和局域网的设备是路由器,所以消息“你好”首先要转发到这个路由器中。在数据链路层,报头处封装了主机A的MAC地址,和要到达的下一跳主机路由器R的MAC地址;
  • 路由器拿到该消息后,首先进行解包,然后再进行封装。虽然我们不了解令牌环这种局域网,但是我们知道,该协议报头必然携带路由器R的MAC地址和主机B的MAC地址;
  • 数据链路层,关于MAC地址的报头一直在变化,网络层关于IP的报头则一直不变(起始IP可能会变)。

令牌环网络:拿到临牌的主机才可以通信,同一时刻只能有一个主机拿到令牌,令牌按照一定规则轮流交给每个主机。从系统的角度看,令牌就是一把锁。

5. 网络通信整体轮廓

在这里插入图片描述


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

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

相关文章

【ESP-IDF】组件

前言 对于要封装自己的库,在ESP-IDF中,可以采用构建组件的方式导入,而不是单纯在文件夹下导入.h和.c文件,不然一旦要导入的文件过多,它们背后的依赖可能就会相互交叉,不在方便移除和复用。本文就分别讲述&a…

AR配置静态IP双链路负载分担示例

AR配置静态IP双链路负载分担示例 适用于大部分企业网络出口 业务需求: 运营商1分配的接口IP为100.100.1.2,子网掩码为255.255.255.252,网关IP为100.100.1.1。 运营商2分配的接口IP为200.200.1.2,子网掩码为255.255.255.248&am…

视觉 Yolov11 环境配置(GPU版)

虚拟环境 首先用 anaconda 创建虚拟环境 根据自己需求创建一个虚拟环境 一个环境名叫 yolov11-py-3-8 就创建好了,后续的 yolov11 就会以这个环境去做深度学习(这里不建议把环境的 py 版本设置到最新,设置个 3.8 或者 3.10 完全够用了 &am…

【微知】如何命令行查看Linux上连接的Wi-Fi信息?(iw dev wlp4s0 link ; information wireless)

背景 有时候没有桌面查看wifi链接,如何命令行查看 命令 iw dev wlp4s0 linkman手册: 实操 综述 如果查看信号强度、协商速率日常使用中比较常用。

从0到1入门Linux

一、常用命令 ls 列出目录内容 cd切换目录mkdir创建新目录rm删除文件或目录cp复制文件或目录mv移动或重命名文件和目录cat查看文件内容grep在文件中查找指定字符串ps查看当前进程状态top查看内存kill终止进程df -h查看磁盘空间存储情况iotop -o直接查看比较高的磁盘读写程序up…

[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)实操部署

标题:[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)实操部署 水墨不写bug 文章目录 一、无法拷贝类(class uncopyable)的设计解释:重要思想:使用示例 二、锁的RAII设计解释重要考虑使用示例 三、基于RAII模式和互斥锁…

登录固定账号和密码:账号:hmheima

接口文档 【apifox】面试宝典 个人中心-保存用户数据信息 - 教学练测项目-面试宝典-鸿蒙 登录固定账号和密码: 账号:hmheima 密码:Hmheima%123 UI设计稿 【腾讯 CoDesign】面试宝典 CoDesign - 腾讯自研设计协作平台 访问密码&#xff1…

Docker和DockerCompose基础教程及安装教程

Docker的应用场景 Web 应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。 CentOS Docker 安装 使用官方安装脚本自动安装 安装命令…

C语言学习笔记-进阶(7)字符串函数3

1. strstr的使用和模拟实现 char * strstr ( const char * str1, const char * str2); Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part of str1. (函数返回字符串str2在字符串str1中第⼀次出现的位置&#x…

Elasticsearch为索引设置自动时间戳,ES自动时间戳

文章目录 0、思路1、配置 ingest pipeline2、在索引映射中启用_source字段的时间戳3、使用 index template 全局设置时间戳4、写入测试数据5、验证结果6、总结 在使用 Elasticsearch 进行数据存储和检索时,时间戳字段是一个非常重要的组成部分。它可以帮助我们追踪数…

2024四川大学计算机考研复试上机真题

2024四川大学计算机考研复试上机真题 2024四川大学计算机考研复试机试真题 历年四川大学计算机考研复试机试真题 在线评测:https://app2098.acapp.acwing.com.cn/ 分数求和 题目描述 有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13… 求出这个数列的前 …

韩国互联网巨头 NAVER 如何借助 StarRocks 实现实时数据洞察

作者: Youngjin Kim Team Leader, NAVER Moweon Lee Data Engineer, NAVER 导读:开源无国界,在“StarRocks 全球用户精选案例”专栏中,我们将介绍韩国互联网巨头 NAVER 的 StarRocks 实践案例。 NAVER 成立于 1999 年&#xff0…

VanillaVueSvelteReactSolidAngularPreact前端框架/库的简要介绍及其优势

VanillaVueSvelteReactSolidAngularPreact前端框架/库的简要介绍及其优势。以下是这些前端框架/库的简要介绍及其优势: 1. Vanilla 定义:Vanilla 并不是一个框架,而是指 原生 JavaScript(即不使用任何框架或库)。优势…

图像滑块对比功能的开发记录

背景介绍 最近,公司需要开发一款在线图像压缩工具,其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此,我们设计了一个对比组件,它允许用户通过拖动滑块,动态调整两张图像的显示区域,从而清晰…

从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(十一) 实现服务端和客户端socketio 连接

1.后端部分 socketIO文档参考Socket.IO 首先在lib下新建socket.js文件 参考服务器API | Socket.IO import {Server} from socket.io; import http from http import express from "express"const app express() const server http.createServer(app) const io …

慕慕手记项目日志 项目从开发到部署多环境配置 2025-3-8

慕慕手记项目日志 项目从开发到部署多环境配置 2025-3-8 现在是已经到了课程的第十章了,开始进行配置项目环境了。现在要完成的任务是项目可以正常运行,而且可以自由切换配置,开发/测试。 下面是当前的目录结构图: 现在来解释一…

《Python实战进阶》No15: 数据可视化:Matplotlib 与 Seaborn 的高级用法

No15: 数据可视化:Matplotlib 与 Seaborn 的高级用法 Matplotlib 是 Python 中最受欢迎的数据可视化软件包之一,支持跨平台运行,它是 Python 常用的 2D 绘图库,同时它也提供了一部分 3D 绘图接口。Matplotlib 通常与 NumPy、Pand…

C++学习之格斗小游戏综合案例

C格斗游戏效果视频 1.案例简介 #include "broadSword.h" //构造函数 BroadSword::BroadSword() { FileManager fm; map<string, map<string, string>> mWeapon; fm.loadCSVData("Weapons.csv", mWeapon); //武器id string id …

LeetCodeHot100

1.两数之和 解题思路&#xff1a; 1.暴力解法 两个for循环解决问题 时间复杂度为 O(n2) class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for (int i 0; i < n; i) {for (int j i 1; j < n; j) {if (nums[i] nums[j] target) {…

大语言模型进化论:从达尔文到AI的启示与展望

文章大纲 引言大语言模型中的“进化论”思想体现遗传变异过度繁殖和生存斗争大模型“过度繁殖”与“生存竞争”机制解析**一、过度繁殖:技术迭代的指数级爆发****二、生存竞争:计算资源的达尔文战场****三、生存竞争胜出关键要素****四、行业竞争格局演化趋势**核心结论自然选…