Linux_网络基础

发布于:2025-09-04 ⋅ 阅读:(22) ⋅ 点赞:(0)

18fde01fee5e4278981004762ce48cc4.png

✨✨ 欢迎大家来到小伞的大讲堂✨✨

🎈🎈养成好习惯,先赞后看哦~🎈🎈

所属专栏:LInux_st
小伞的主页:xiaosan_blog

制作不易!点个赞吧!!谢谢喵!!

1. 计算机网络背景

1.1 网络发展

独立模式:计算机相互独立

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

局域网 LAN: 计算机数量更多了, 通过交换机和路由器连接在一起;

广域网 WAN: 将远隔千里的计算机都连在一起;

  • 计算机是人的工具, 人要协同工作, 注定了网络的产生是必然的
     

1.2 初识协议

  • "协议" 是一种约定.
  • 打电话约定电话铃响的次数的约定
     

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

思考: 只要通信的两台主机, 约定好协议就可以了么?

  • 定好协议, 但是你用频率表示 01, 我用强弱表示 01, 就好比我用中国话, 你用葡萄牙语一样, 虽然大家可能遵守的一套通信规则, 但是语言不同, 即是订好了基本的协议, 也是无法正常通信的

所以, 完善的协议, 需要更多更细致的规定, 并让参与的人都要遵守。

  • 计算机生产厂商有很多;
  • 计算机操作系统, 也有很多;
  • 计算机网络硬件设备, 还是有很多;
  • 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准, 大家都来遵守, 这就是 网络协议;

1.2.1 定制协议标准的组织或公司主要有以下几类:

1. 国际标准化组织:

  • IEEE(电气和电子工程师协会):这是一个由计算机和工程领域专家组成的庞大技术组织,在通信协议领域贡献突出。IEEE制定了全世界电子、电气和计算机科学领域30%左右的标准,包括IEEE802系列标准,这些标准涵盖了从局域网(LAN)到广域网(WAN)等多种网络技术。
  • ISO(国际标准化组织):ISO是由多个国家的标准化团体组成的国际组织,它在开放系统互连(OSI)模型方面的工作尤为著名。OSI模型定义了网络通信的七层协议结构,尽管在实际应用中,TCP/IP协议族更为普遍,但OSI模型仍然在学术和理论研究中占有重要地位。
  • ITU(国际电信联盟):ITU是联合国下属的专门机构,负责制定电信领域的国际标准。ITU-T制定的标准涵盖了电话和网络通信,与ISO合作确保了通信技术的全球兼容性和互操作性。

2. 区域标准化组织:

  • ETSI(欧洲电信标准学会):由欧洲共同体各国政府资助,是一个由电信行业的厂商与研究机构参加并从事研究开发到标准制定的组织。
  • ASTAP(亚洲与泛太平洋电信标准化协会):1998年由日本与韩国发起成立的标准化组织,旨在加强亚洲与太平洋地区各国信息通信基础设施及其相互连接的标准化工作的协作。

3. 公司:

  • 某些公司,如泰凌微,也自研各种标准的软件协议栈,包括低功耗蓝牙、zigbee、thread及Matter等,并可进行定制化改动,这是其核心竞争力之一。泰凌微还计划重点发展智能电子价签、智能遥控、智能家居等市场。

4. 民间国际团体:

  • IETF(互联网工程师任务组):这是一个负责开发和推广互联网协议(特别是构成TCP/IP协议族的协议)的志愿组织,通过RFC发布新的或者取代老的协议标准。

5. 官方机构:

  • FCC(联邦通信委员会):美国对通信技术的管理的官方机构,主要职责是通过对无线电、电视和有线通信的管理来保护公众利益。也对包括标准化在内的通信产品技术特性进行审查和监督。

1.3 协议分层

  • 协议本质也是软件, 在设计上为了更好的进行模块化, 解耦合, 也是被设计成为层状结构的

软件分层的好处

  • 在这个例子中, 我们的"协议"只有两层:语言层、 通信设备层。
  • 但是实际的网络通信协议, 设计的会更加复杂, 需要分更多的层
  • 但是通过上面的简单例子, 我们是能理解, 分层可以实现解耦合, 让软件维护的成本更低

2. OSi七层协议

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

  • 其实在网络角度, OSI 定的协议 7 层模型其实非常完善, 但是在实际操作的过程中, 会话层、 表示层是不可能接入到操作系统中的, 所以在工程实践中, 最终落地的是 5 层协议。
  • 但是要理解上面的话, 需要我们学习完网络才可以理解, 这里就知道就可以。
     

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

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完
成自己的需求.

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

物理层我们考虑的比较少, 我们只考虑软件相关的内容. 因此很多时候我们直接称为TCP/IP 四层模型.

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

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

3. 再识协议

3.1 为什么要有TCP/IP 协议?

  • 首先, 即便是单机, 你的计算机内部, 其实都是存在协议的, 比如: 其他设备和内存通信, 会有内存协议。 其他设备和磁盘通信, 会有磁盘相关的协议, 比如: SATA, IDE, SCSI 等。 只不过我们感知不到罢了。 而且这些协议都在本地主机各自的硬件中, 通信的成本、 问题比较少。
  • 其次, 网络通信最大的特点就是主机之间变远了。 任何通信特征的变化, 一定会带来新的问题, 有问题就得解决问题, 所以需要新的协议咯。

3.2 TCP/IP 协议与操作系统的关系(宏观上, 怎么实现的)

所以究竟什么是协议?

OS 源代码一般都是用 C/C++语言写的。

问题: 主机 B 能识别 data, 并且准确提取 a=10, b=20, c=30 吗?

回答: 答案是肯定的! 因为双方都有同样的结构体类型 struct protocol。 也就是说,用同样的代码实现协议, 用同样的自定义数据类型, 天然就具有”共识“, 能够识别对方发来的数据, 这不就是约定吗?

关于协议的朴素理解: 所谓协议, 就是通信双方都认识的结构化的数据类型

因为协议栈是分层的, 所以, 每层都有双方都有协议, 同层之间, 互相可以认识对方的协议。

4.网络传输基本流程

4.1 局域网网络传输流程图

4.1.1 局域网(以太网为例)通信原理
  • 两台主机在同一个局域网, 是否能够直接通信? 是的
  • 每台主机在局域网上, 要有唯一的标识来保证主机的唯一性: mac 地址
     

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

  • 以太网中,任何时刻,只允许一台机器向网络中发送数据
  • 如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞
  • 所有发送数据的主机要进行碰撞检测和碰撞避免
  • 没有交换机的情况下,一个以太网就是一个碰撞域
  • 局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标mac 地址判定
  • 这里可以试着从系统角度来理解局域网通信原理

初步明白了局域网通信原理,再来看同一个网段内的两台主机进行发送消息的过程

而其中每层都有协议, 所以当我进行进行上述传输流程的时候, 要进行封装和解包

下面我们明确一下概念

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

然后, 我们在明确一下不同层的完整报文的叫法

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

在网络传输的过程中, 数据不是直接发送给对方主机的, 而是先要自定向下将数据交付给下层协议, 最后由底层发送, 然后由对方主机的底层来进行接受, 在自底向上进行向上交付, 下面是一张示意图

4.1.3.数据包封装和分用

下图为数据封装的过程

下图为数据分用的过程

4.2 跨网络传输流程图

4.2.1 网络中的地址管理-认识IP地址

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

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

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

下面是一张示意图

在同一局域网中,IP地址前部分相同,当我们发现不同时,会先走路由器,在通过路由器前往目标主机

然后结合封装与解包, 体现路由器解包和重新封装的特点

对比IP地址和Mac地址的区别

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

例如:唐僧取经:

东土大唐->西天     ip地址指向,是长远目标的

其中路过女儿国,则东土大唐要经过女儿国,然后Mac地址就从女儿国到西天,这是短期目标,会发生变化的

提炼IP网络的意义和网络通信的宏观流程

  • IP 网络层存在的意义:提供网络虚拟层,让世界的所有网络都是IP网络,屏蔽最底层网络的差异

网站公告

今日签到

点亮在社区的每一天
去签到