• 网络基础入门


    计算机网络背景

    独立模式: 计算机之间相互独立;

    在这里插入图片描述

    网络互联: 多台计算机连接在一起, 完成数据共享;

    在这里插入图片描述
    局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起
    在这里插入图片描述

    广域网WAN: 将远隔千里的计算机都连在一起
    在这里插入图片描述

    所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域网.

    认识 “协议”

    “协议” 是一种约定
    在这里插入图片描述
    计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式.

    注意:计算机生产厂商有很多; 计算机操作系统, 也有很多; 计算机网络硬件设备, 还是有很多; 这些不同厂商之间生产的计算机并不能相互顺畅的通信,这时就需要约定一个共同的标准, 大家都来遵守, 这就是网络协议。

    总结:所谓的网络协议,本质是通过数据的表达方式,来完成参与通信的各个主机协议的表现

    网络协议初识

    协议分层

    • 网络本质是一个层状结构
    • 网咯协议栈(网络):由应用层(用户层)、传输层(内核层)、网络层(内核层)、数据链路层(驱动层)构成——网络和系统是密切相关的
    • 现有OS,后有网络:
      1. 现有计算机
      1. 多台计算机之间能够数据交互

    注意:
    分层最大的好处在于 “封装” ,面向对象例子
    在层状结构的软件体系下,很方便的可以随时更换任何一层协议(各个层之间低耦合(解耦)),提高了程序的可维护性。

    OSI七层模型

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

    在这里插入图片描述

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

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

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

    在这里插入图片描述
    物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.

    一般而言

    • 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
    • 对于一台路由器, 它实现了从网络层到物理层;
    • 对于一台交换机, 它实现了从数据链路层到物理层;
    • 对于集线器, 它只实现了物理层;

    但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发)

    注意:数据链路层负责局域网通信,交换机是局域网设备

    总结:

    • 物理层、数据链路层:站在2进制角度,通过光电信号的方式,把数据信号发送给对方
    • 网络层:如何找到目标主机的问题
    • 传输层:如果在路上数据丢失,需要保证可靠性,重传
    • 应用层:对传输过来的数据,按照之前的约定(应用层协议),来完成某种”计算“的需求

    注意:多台计算机进行数据交互时,由于距离较长,容易数据丢失并且需要找到对方等问题,因此多台计算机进行数据交互时不像单台计算机中的内存和硬盘进行数据交换来的方便

    网络传输基本流程

    网络传输流程图

    同一个网段内的两台主机进行文件传输.

    在这里插入图片描述

    跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.

    总结:

    • 一般通信的时候,都是由应用层发起数据通信的
    • 每层协议,都必须解决两个问题:
      1. 能够将自己的报头和有效载荷进行分离
      1. 每次协议的报头中一定包含了一个字段:标识要将自己的有效载荷交付给上层的哪一个协议(这个行为叫分用)
    • 计算机通信时分为三步:封装、解包、分用
    • 报头和有效载荷都是数据
    • 封装的本质是把报文拷到缓冲区中,每一层都有自己的报头(数据),数据(报文和报头)在字节上的拼接,字节在OS内部不断进行拷贝的过程(添加报头的过程)

    在这里插入图片描述

    注意:

    • 局域网中两台主机能够直接通信
    • 局域网中,每一台主机有自己的身份标识(MAC地址:网卡的一个SN,全球唯一,6字节的标识符)
    • 局域网中可以有一个或多个碰撞域(交换机划分碰撞域)
    • 局域网中,数据如果被多台主机同时发出,容易发生数据碰撞
    • 任何一个时刻,局域网中,只允许一台机器再向网络发送数据
    • 每台主机都有识别碰撞的能力
    • 每台主机都要执行碰撞避免算法
    • 在OS看来局域网的本质是一份临界资源
    • 以太网、令牌环网都是局域网的一种

    在这里插入图片描述

    • 路由器是跨网络传输,要求路由器至少有两个网络接口

    • 路由器是工作在网络层的设备,但不仅仅是工作在网络

    • IP地址分为源IP(从哪里来)、目的IP(到那里去)——是进行路径选择的核心依据

    • mac地址分为源mac地址(上一站从哪里来)、目的mac地址(下一站去哪里)(只考虑在局域网中使用)——是一直在变化的

    • 路由器:都是每个网络拓扑中的一台机器

    因为最底层(链路层和物理层)是不一样的,我们的网络又是如何做到在IP(包括IP之上)可以没有任何差异呢?
    因为有路由器的存在,可以做到不断的根据不同的局域网制式,进行解包和封包的过程,做到站在IP往上看,全网的网络是没有任何差别的。完成了一种网络虚拟化的技术,IP网络。

    数据包封装和分用

    • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
    • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
    • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
    • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理

    下图为数据封装的过程

    在这里插入图片描述

    下图为数据分用的过程

    在这里插入图片描述

    网络中的地址管理

    认识IP地址

    IP协议有两个版本, IPv4和IPv6. (以后 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4)

    • IP地址是在IP协议中, 用来标识网络中不同主机的地址;
    • 对于IPv4来说, IP地址是一个4字节, 32位的整数;
    • 通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

    认识MAC地址

    • MAC地址用来识别数据链路层中相连的节点;
    • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
    • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
  • 相关阅读:
    axios 实现请求重试
    【图形学】18 光照模型(三、镜面反射的Shader实现)
    python爬虫-某政府网站加速乐(简单版)实例小记
    网安之python基础学习作业(1)
    优先级队列的使用及模拟实现
    这3款音频文件转文字工具,操作真的很简单
    Java学习笔记3.10.2 异常处理 - 异常捕获
    【开源】JAVA+Vue.js实现大学计算机课程管理平台
    ChatGPT在工业领域的研究与应用探索-数据与工况认知
    调用华为API实现身份证识别
  • 原文地址:https://blog.csdn.net/AI_ELF/article/details/126676435