【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用

news2024/12/26 14:29:19

文章目录

  • 局域网 LAN
  • 广域网 WAN
  • 网络中的重要概念
    • IP 地址
    • 端口号
  • 认识协议
    • 协议分层
      • 是什么
      • OSI 七层网络模型
      • TCP/IP 五层网络模型(或四层)
        • 物理层
        • 传输层
        • 网络层
        • 数据链表层
        • 应用层
        • 网络设备所在分层
    • 封装和分用
      • [站在发送方视角](封装)
      • [站在接收方视角](分用)

发展过程:
单机 —> 局域网 —> 广域网 —> 移动互联网

局域网 LAN

  • 局域⽹,即 Local Area Network,简称 LAN
  • Local 即标识了局域⽹是本地,局部组建的⼀种私有⽹络。
  • 局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。局域⽹组建⽹络的⽅式有很多种:

  • 把几个电脑连接到一起,就构成了局域网

  • 但当电脑多了之后,就不方便两两相连,就创造了“路由器”

    • 只要电脑都连在同一个路由器上面,就可以构成局域网

[!quote] 调制解调器

  • 不同种类的信号转换
  • 这个是宽带普及之前,上网操作是通过“电话线”进行的,猫的作用是将电话线中的模拟新欢转换成网络中的“数字信号”
  • 光猫”就是把光信号和电信号之间进行相互转换(一般带有路由功能)
  • 因为路由器上面接口有限,当机器多了之后,就插不下了,此时就引入了“交换机”,就解决了上述问题
    • 交换机就相当与是对路由器的端口的扩展
    • 将计算机都插到交换机上面,然后交换机再连接路由器就行了
    • 此时这些电脑就相当于都插到路由器上了,这些电脑就都早一个局域网中了
    • 局域网是有路由器负责的,本身与交换器没有关系

image.png|527


广域网 WAN

  • ⼴域⽹,即 Wide Area Network,简称 WAN
  • 过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部的局域⽹都属于其⼦⽹。
  • 现在见到的“万维网”就是把全世界的设备都连接在一起的巨大广域网
  • “网游”就是电脑连接到了广域网上,可以和全国甚至全世界的玩家一起进行对抗

网络中的重要概念

IP 地址

  • IP 地址就是描述了一台主机,在互联网上所处的位置
  • IP 地址是使用一个 32 位整数来表示的
  • 使用“点分十进制”这样的方式,来表示“IP 地址”
    • 将 32 位整数用三个点分成了四份,每份取值范围 0~255(一个字节)
    • 使用点分十进制之后,更方便人阅读
    • image.png|568

端口号

  • 用来区分当前主机上的指定的应用程序(进程)
  • 一个主机上,使用网络的程序有很多个,可以通过端口号,区分当前主机收到的数据是要交给哪个程序来处理使用
  • 端口号同样也是一个整数,是一个两个字节的整数(0~65535)
    • 虽然是 0 ~65535 这样的范围,实际上 0~1023 这些端口都是有一些特定含义的
    • 咱们自己写代码使用的端口,一般都是用剩下的

[!quote] IP 地址和端口号
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)

认识协议

网络中最核心的概念


  • 协议是进行一切通信的基础
  • 协议至少得有两个主机,让发送方发送数据,接收方能理解
  • 比如,我虽然在重庆上学,但我是湖北人,如果周围有人说重庆话,我有时候就听不到。
  • 这就属于无效的通信
  • 所以双方需要按照同样的规则来构造/解析数据,否则就是无效的通信
  • 协议就是在约束通信双方,交互数据的“规则”,协议确定了,双方就在一个频道上了,才能进行有意义的通信

所以,如何进行网络通信的问题,就转为了如何设计网络通信协议。

网络上传输的数据:光信号(光纤,激光的光)/电信号(网线里的)/电磁波(WiFi、5G…)

  • 无论是哪种信号,本质上都是传输 0101 这样的二进制
    • 光信号:可以用高低频光代表 0/1
    • 电信号:可以用高低频电代表 0/1
    • 电磁波:也是光,也可以通过频率进行编码
  • 所以在通信时就需要约定好,传输的这一大串 101010 都是啥意思
    • 这个就是"网络通信协议“要完成的核心工作

由于网络通信,是一件非常复杂的事情,如果只使用一个协议,去约定所有的网络通信细节,就会导致这个协议非常庞大,非常复杂

为了对抗这种复杂度,我们就进行“拆分”。将一个大的协议,拆分成多个小的协议,让每个小的协议,专注于解决一个/一类问题,再让这些协议相互配合

协议分层

是什么

  • 但是,拆分之后,拆出来了很多协议,不方便组织
  • 所以,将这些协议分层,把功能类似的协议放到一层,并且约定号,协议之间,不能随意进行交互,只能是相邻的层之间才能进行交互
    • 上层协议调用下层协议,下层协议给上层协议提供服务image.png

分层的好处:
image.png|463

  1. 降低了使用的成本,使用某个协议的时候,不需要关注其他协议的实现细节
    • 打电话这个事情,不需要理解电话机的工作原理,只需要会说话即可
  2. 降低整个体系的耦合性,可以灵活的变更某个协议
    • 可以经汉语协议变为英语协议,不妨碍打电话;可以经无线电协议变为电话协议,也不妨碍打电话

当前互联网体系的现状就是“协议分层”的效果

OSI 七层网络模型

这种划分方式,只是存在于教科书里,并没有被真正的采用


TCP/IP 五层网络模型(或四层)

当前世界上最主流的网络协议模型
四层就是不散物理层,物理层和硬件相关,距离程序员非常遥远


image.png

物理层

  • 物理层:描述的是硬件设备(网线这样的设备)需要满足什么样的条件
    • 物理层就相当与是“公路“、”铁路”、“航线”
传输层

  • 传输层:主要就是关注网络通信中的“起点和终点”,并不关心通信的中间细节
  • 比如,你在网上买了个东西
  • 下单的时候,需要填写“收件人信息”
  • 卖家给你发快递的时候,也需要填写“发件人信息”
  • 最后卖家就把快递给快递小哥,快递小哥最后将快递送到你手上
  • 在这个过程中,传输层就只关注发货地和收货地,并不关心快递是如何到你手上的、如何运输的…
网络层

  • 网络层:进行网络通信的路径规划地址管理
    • 网络是很负责的结构,从 A 到 B 中间有很多不同的路线,此时网络层协议就要进行“路径规划”,称为“路由选择
    • 网络上的这些设备他们的地址都是什么、怎么去描述、用什么样的一套规则也是网络层安排
  • 比如快递小哥揽收你的包裹之后,需要进行包裹运输
  • 就要规划选择一条合适的路径将包裹送到你手中
  • 合适的选择不是绝对的,可能看路程、可能看速度、可能看成本…
  • 使用地图导航,也是类似于网络层“路由选择”的过程
数据链表层

  • 数据链路层:针对好上述规划好的路径,进行具体的实施
  • 比如,你的包裹要从上海运往西安,选择的路径是:上海 —> 南京 —> 西安
  • 上海 —> 南京:走水路,坐船
  • 南京 —> 上海:走铁路,火车
  • 西安 —> 驿站:走公路,坐卡车
  • 驿站 —> 收货地:骑三轮
  • 在这每两个地点之间的交通选择,都是数据链路层负责的
  • 董事长(传输层) —> 制定一个公司的发展目标(今年营业额要达到 xxx 小目标)
  • 高管(网络层) —> 规划一下,如何达到上述目标,明确达到上述目标,分成几个步骤,先做什么再做什么。路径规划/路由选择的过程
  • 基层员工(数据链路层) —> 进行具体实施,第一步到第二步,第二步到第三步… 具体咋办
  • 办公用到的基础设施(物理层) —> 办公室、工位、电脑、打印机、网络…

这四层都是程序员干预不了的,操作系统/硬件设施已经实现好了的

应用层

  • 应用层:程序员可以干预到的,可以决定这个应用是用来干什么
网络设备所在分层
  • 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是 TCP/IP 五层模型的下四层
  • 对于⼀台路由器,它实现了从⽹络层到物理层,也即是 TCP/IP 五层模型的下三层
  • 对于⼀台交换机,它实现了从数据链路层到物理层,也即是 TCP/IP 五层模型的下两层
  • 对于集线器,它只实现了物理层
    这都是站在经典的模型上讨论的,笔试中遇到了相关的选择/填空题,可以照着答

真实情况下,交换机也可能是工作在网络层,甚至是传输层/应用层
路由器也可能是工作在数据链路层,也可能是传输层,也可能是应用层

封装和分用

通过 QQ,发送一个 hello 给另一个人

[站在发送方视角](封装)

  1. 用户输入框中输入“hello”字符串,点击“发送”按钮
    • QQ 这样的程序,就会把 hello 这个内容从输入框读取到,构成一个“应用层数据包”
    • “应用层数据包”是应用层的协议,描述了这个数据包的构造,此处的应用层协议,往往是开发 QQ 的程序员自行定义的

[!quote] 序列化/反序列化

  • 将结构化数据 —> 二进制字符串:序列化
  • 将二进制字符串 —> 结构化数据:反序列化
  • 进行网络传输数据,通常就需要把一个“结构化”(C 的结构体/Java 的类,包含很多属性)数据转成一个“字符串”(二进制字符串,不需要非得在码表上可以查到,任何的 01 序列都可以接在一起)

[!quote] 应用层数据包

  • 主要是做了一个“序列化”的工作,将传入的信息整合成一个“字符串”
  • “应用层数据包”是应用层的协议,描述了这个数据包的构造,此处的应用层协议,往往是开发 QQ 的程序员自行定义的
  • 如果是我来开发 QQ,我可能会按照下列的方式定义这个应用层数据包的结构(定义方式有很多种)
    • 数据包格式:发送者的 QQ 号;接收者的 QQ 号;发送时间;消息正文\n
    • 数据包样例:123456789;987654321;2024-01-14 23:50:10;hello\n
  1. 应用层数据包准备就绪后,QQ 这样的应用程序,就会调用操作系统提供的 API传输层给应用层提供的 API

    • 操作系统就会提供一个类似于“发送数据”这样的 API,然后应用程序就会把上述组织好的应用层数据包作为参数传进来,于是应用层数据包就到了系统内核里,就进入到传输层的代码部分了
    • 此时,传输层这里,就会把上述的应用层数据,再进一步封装(字符串拼接)成一个传输层数据包
    • 由于传输层有多种协议(其中最重要的是两个:TCPUDP),这些协议给应用层提供的 API 是不同的,看应用程序种使用哪组 API 就使用哪个协议
      • 假设此处使用 UDP 协议,则会在刚刚整合的“字符串”前面加一个“UDP 报头”,这串“字符串”叫“UDP 正文/载荷payload)”
      • UDP报头中就包含了一些 UDP 相关的信息,比如发送者的端口号和接受者的端口号
      • 拼上的这些信息,都是给后续的转发打下基础的,就类似于“贴标签
      • 网络中,有多层协议,每一层协议都要贴标签,每一层标签的侧重点不同,贴上的标签中的信息也不一样
        image.png|592
  2. 传输层构造好数据之后,就会继续调用网络层提供给传输层的 API,把数据进一步交给网络层

    • 由于传输层和网络层都是系统内核里面实现好的,上述调用的过程,我们无需关心,也感知不到
    • 网络层也有多种协议,其中最重要的就是 IPv4 协议(简称为 IP 协议
      • IP 协议就会把上述拿到的传输层数据包构造成网络层数据包
      • IP 报头中也会包含很多信息,主要信息为发送方的 IP 地址,接收方的 IP 地址 image.png
  3. 网络层继续调用数据链路层的 API,把数据交给数据链路层处理

    • 数据链路层的常见协议是:以太网(平时插网线,进行上网的方式)
    • 在 IP 数据包的基础上,进一步进行包装image.png

[!quote] 网络传输数据的基本单位

  1. 数据包(packet)
  2. 数据报(Datagram)
  3. 数据段(segment)
  4. 数据帧(frame)

这几个术语严格来说是有区别的,但平时日常交流的时候,不会刻意区分

  1. 上述得到的数据,需要进一步交给物理层(硬件设备)
    • 网卡就会针对上述的二进制数据,进行真正的传输操作
    • 就需要把上述 0101 这样的序列转为光信号/电信号/电磁波…

[站在接收方视角](分用)

  1. 接收方物理层收到光电信号,把这样的光电信号还原成 010101 这样的二进制字符串

  2. 物理层转换回来的数据,交给数据链路层以太网拿到这个数据包,就会对这个数据包进行解析image.png|551

    • 拿出这里的报头载荷,根据报头中的信息做一些处理
    • 这个数据包是要丢弃、还是转发、还是自己保留,向上进行解析
      • 由于是站在接收方的视角,所以在这里这个数据包要交给上层协议,再做进一步解析
      • 所以这个数据包就会从数据链路层交给网络层

  1. 网络层拿到了上述解析好的数据,网络层的 IP 协议也要对这个数据包进行解析image.png|525
    • 取出 IP报头载荷
    • 根据报头中的信息确认,是丢弃、转发还是保留(给上层协议)
    • 由于是站在接收方的视角,所以在这里这个数据包要交给上层协议,再做进一步解析

  1. 传输层这边,UDP 协议也要针对数据进行解析|528
    • 取出 UDP 报头载荷
    • 此处也需要把载荷里面的内容,进一步交给应用层协议
    • 依赖 UDP 报头中的端口号,区分需要交给哪个应用程序(端口号就是用来区分不同进程的)

  1. 数据就到了 QQ 这样的应用程序这里了
    • QQ 就要针对上述的数据进行“反序列化
    • 再针对里面的数据进行进一步的逻辑
      1. 将收到的消息显示到界面上
      2. 播放“滴滴滴”这样的声音,提醒收到信息
      3. 显示弹窗,提示收到信息
      4. 更新未读消息的列表(红色的圆圈写个数字)

  • 此处接收方做的工作就是发送方工作的“逆向工作
  • 发送方的“封装”,认为是“打包快递
  • 接收方的“分用”,认为是“拆快递

一个电脑,会先连到交换机上,交换机可能连到路由器上,路由器可能又连到另一个交换机上,交换机又连到另一个路由器上… 总之,这中间会连接很多的交换机和路由器,来完成数据转发的过程
image.png|579

中间过程的交换机和路由器,也会涉及到封装和分用(不会像主机这样复杂)

  • 交换机封装分用到链路层,就可以决定数据是丢弃还是继续转发了,不再继续分用(经典的教科书上的交换机)
  • 路由器,封装分用到网络层,就可以决定数据是丢弃还是继续转发了,也不再继续分用
    在传输的过程中,每到一个设备都要进行封装分用,经过层层数据的交换,最终到达终点

封装分用这么麻烦,会不会导致交换机、路由器、主机之间的通信效率很低呢?

  • 得看和谁比
    • 如果是那网络通信和人的反应时间相比,速度还是很快的
    • 如果拿网络通信和读写硬盘相比,通常认为,网络的速度比硬盘的速度更慢
    • 更不必说和内存比了

也有特殊情况:

  • 如果拿网络中最强的“万兆网卡”和硬盘中最弱的“机械硬盘”相比,网络的速度更快

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

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

相关文章

新工种,AI商业化变现思路

本文由 ChatMoney团队出品 AI变现,你我都能成为创收高手! 不必是科技大咖,也无需深厚背景,让我们一起探索Chatmoney全能知识库AI的奥秘,轻松步入收益之门! 想象一下,你的智慧和创意通过ChatmoneyAI技术转化为可观的收益…

如何使用 Go 连接 MO

MatrixOne 是一款超融合异构分布式数据库,与 MySQL 高度兼容,通过云原生化和存储、计算、事务分离的架构构建 HSTAP 超融合数据引擎,实现单一数据库系统支持 OLTP、OLAP、流计算等多种业务负载,通过为用户提供一站式超融合数据解决…

【数据结构与算法】最短路径算法

最短路径算法目录 一.什么是最短路径二.最短路径算法的实现1.准备工作2.拆解为子问题——递归 三.完整代码 一.什么是最短路径 顾名思义根据需求,可以获取的最优的路径. 比如说: 我标的数值,就是时间,那么假如我们是A点到D点. 那么我们可以看到有三条路径: A->E->D所花…

AI绘画:一篇文章带你解析Stable Diffusion 原理!

前言 Stable Diffusion原理 1. Stable Diffusion能做什么 直白地说,SD是一个text-to-image模型,通过给定text prompt(文本提示词),它可以返回一个匹配文本的图片。 2. Diffusion 模型 Stable Diffusion属于深度学习…

2003-2023年高铁线路信息数据

2003-2023年高铁线路信息数据 1、时间:2003-2023年 2、来源:高铁航线数据库(Chinese High-speed Rail and Airline Database,CRAD) 3、指标:高铁线路名称、起点名、终点名、开通时间、线路长度(km)、设计…

直接插入排序(C语言)

一、图解 思想: 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为 止,得到一个新的有序序列 。 当插入第i(i>1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时…

解决idea中注释部分的中文乱码问题

问题背景: application.properties注释部分突然出现中文乱码问题,重启idea仍乱码,如下: 解决方案:设置UTF-8 注意不要漏步骤,设置好后重启idea 如果还不行,说明可能是在文件保存的时候没有按U…

vue3 快速入门 (七) : Vue打包并部署到Nginx服务器上

1. 本文环境 Vue版本 : 3.4.29Node.js版本 : v20.15.0系统 : Windows11 64位IDE : VsCode 2. vue打包,减少体积 打包之前我们可以对包的体积进行一些优化,比如可以实现自动按需引入、开启图片压缩、文件压缩等,具体详见这篇文章 : 分享基…

C++类模版中限定模版参数类型

1.模版类 这里我们实现一个大小比较的的模版类&#xff0c;如下。 template<class T> class Myless { public:bool operator()(const T& x,const T& y){return x < y;} }; 然而这样的实现方式&#xff0c;当传入模版参数为指针时&#xff0c;比较的就是指针…

LVS+Keepalived 双机热备

LVSKeepalived 双机热备 Keepalived案例分析Keepalived工具介绍Keepalived工具介绍一、功能特点 一、理解Keepalived实现原理实验报告资源列表一、安装keepalived以及ipvsadm Keepalived案例分析 企业应用中&#xff0c;单台服务器承担应用存在单点故障的危险单点故障一旦发生…

CAD图纸加密软件哪个好用,帮你总结十款CAD图纸加密软件

在数字化设计领域&#xff0c;CAD图纸是企业核心竞争力的体现。随着网络安全威胁的日益增多&#xff0c;确保CAD图纸的安全性变得至关重要。选择一款合适的CAD图纸加密软件&#xff0c;可以有效防止图纸泄露、未经授权的访问和篡改&#xff0c;保护企业的知识产权。本指南将为您…

线性代数:每日一题1/特征值与相似对角化

设A, B 为二阶矩阵&#xff0c;且 AB BA , 则“A有两个不相等的特征值”是“B可对角化"的&#xff08;&#xff09; A. 充分必要条件 B. 充分不必要条件 C.必要不充分条件 D.既不充分也不必要条件 知识点&#xff1a; 特征向量与特征值的关系 相似矩阵的定义和性质 n阶…

高阶数据结构——B树

1. 常见的搜索结构 以上结构适合用于数据量相对不是很大&#xff0c;能够一次性存放在内存中&#xff0c;进行数据查找的场景。如果数据量很大&#xff0c;比如有100G数据&#xff0c;无法一次放进内存中&#xff0c;那就只能放在磁盘上了&#xff0c;如果放在磁盘上&#xff0…

STM32——PWM波形输出

一、IC和OC 可以看到&#xff1a;定时器除了基本的定时中断功能&#xff0c;输入捕获、输出比较均是STM32定时器的功能 输入捕获IC&#xff08;Input Capture&#xff09; 输入捕获是一种用于测量外部信号脉冲宽度或频率的技术。它通过定时器模块捕获外部信号的特定事件&…

创客匠人对话标杆(上)|央视嘉宾揭秘心理抑郁赛道爆款的六大逻辑

今天是我们对话标杆栏目第61期内容&#xff0c;本期我们邀请到【钧岚心理平台】创始人杨钧岚老师&#xff0c;为我们分享了心理学领域如何精准定位垂直赛道&#xff0c;并详细阐述了她如何打造爆品&#xff0c;以高质量课程交付&#xff0c;高效实现高客单转化&#xff0c;实现…

centos8以上系统安装docker环境

由于docker官方更新了相关镜像路由&#xff0c;导致国内用户无法正常手段安装使用docker&#xff0c;本人推荐使用下面操作进行安装。 1.docker-ce安装 # 添加docker-ce仓库&#xff0c;本次使用的是阿里云的仓库 dnf config-manager --add-repo https://mirrors.aliyun.com/do…

c#实现数据导出为PDF的方式

PdfSharp vs iTextSharp: C#中PDF导出功能比较 PdfSharp 优点 轻量级&#xff1a;适合简单的PDF生成任务易于学习&#xff1a;API相对简单&#xff0c;学习曲线较缓开源&#xff1a;提供开源版本&#xff0c;可自由使用和修改纯C#实现&#xff1a;不依赖外部库或COM组件支持…

江协科技STM32学习笔记(第11章 RTC实时时钟)

第11章 RTC实时时钟 实时时钟本质上是一个定时器&#xff0c;但是这个定时器是专门用来产生年月日时分秒&#xff0c;这种日期和时间信息的。学会了RTC实时时钟&#xff0c;就可以在STM32内部拥有一个独立运行的钟表。想要记录或读取日期和时间&#xff0c;就可以通过操作RTC来…

【机械原理学习】——《机械原理》(第二版)机构部分

机械原理 绪论&#xff1a; 机械机器机构 第一章&#xff1a;平面机构的结构分析 构件与零件 每个独立运动的单元体称为构件机构总是由一些零件组成的‌过盈配合是指两个配合零件之间存在一定的过盈量&#xff0c;即一个零件的孔径比另一个零件的轴径小&#xff0c;装配时…

算法:排序(下)

六、快速排序 快速排序用到了分治思想&#xff0c;同样的还有归并排序。乍看起来快速排序和归并排序非常相似&#xff0c;都是将问题变小&#xff0c;先排序子串&#xff0c;最后合并。不同的是快速排序在划分子问题的时候经过多一步处理&#xff0c;将划分的两组数据划分为一…