您现在的位置是:首页 > 编程 > 

初识Linux · 网络基础

2025-07-28 09:16:40
初识Linux · 网络基础 前言:本文作为Linux网络学习的第一篇文章,相对来说概念还是偏多的,甚至于概念让人觉得晦涩,这是非常正常的,那么进入网络部分之前,我们不妨思考一下,为什么会有网络?对于一个业务来说,交互数据的时候,要求的是“快准狠”,那么如果一个人在地球北端,一个人在地球南端,数据传输可想而知有多慢,即便是拿马车来说,时间也是消耗不起的,因为时效性问题。此时网络诞生了,作为数据的传

初识Linux · 网络基础

前言:

本文作为Linux网络学习的第一篇文章,相对来说概念还是偏多的,甚至于概念让人觉得晦涩,这是非常正常的,那么进入网络部分之前,我们不妨思考一下,为什么会有网络?

对于一个业务来说,交互数据的时候,要求的是“快准狠”,那么如果一个人在地球北端,一个人在地球南端,数据传输可想而知有多慢,即便是拿马车来说,时间也是消耗不起的,因为时效性问题。

此时网络诞生了,作为数据的传输工具,借助的载体是计算机,虽然计算机最开始是用来计算的,但是随着是时代的发展,不同的计算机开始了通信,使用的是网络,多台计算机使用网络进行数据共享,那么它们通过什么进行数据共享呢?

我们就可以引出我们今天的主题了,协议!


初识协议

介绍这个名词之前呢,我们不妨用生活经验来看一下什么是协议,当你和别人达成了某种协议,代表你们之间达成了某种约定。

所以协议是一种约定

但是两台计算机的协议如果达成了,是否就可以真正的开始通信了呢?

并不是,如果计算机A约定好了01表示频率,计算机B约定好了01表示强弱,虽然达成了某种协议,但是协议不互通,就有点类似于语言不通,所以协议只是一个大类。

在计算机中,我们是否思考过为什么我们能从内存中读取数据呢?为什么我们能从网络里面读取数据呢?为什么不同的计算机能传输数据呢?

这实际上就是因为不同的硬件有自己的协议,比如传输,存在TCP协议,UDP协议,内存有自己的协议。

从上面我们得出来的结论是协议很多,那么有制定协议的组织,以下是文心一言生成的制定协议的部分组织:

  1. 国际互联网工程任务组(IETF)
    • 成立于1985年底,是全球互联网最具权威的技术标准化组织。
    • 主要任务是负责互联网相关技术规范的研发和制定,当前绝大多数国际互联网技术标准出自IETF。
    • 提出了许多协议,并以RFC(Request For Comments,请求评议)文档的形式发布。
  2. 国际电信联盟(ITU)
    • 是联合国的一个专门机构,也是联合国机构中历史最长的一个国际组织。
    • ITU-T部门负责电信标准,包括网络协议和基础设施。
    • 制定了如H.261、H.26等视频编码标准。
  3. 国际标准化组织(ISO)
    • 是最大的非政府性标准化专门机构。
    • 在计算机网络领域有深刻影响,开发了著名的OSI(Open Systems Interconnection,开放系统互连)模型。
    • 与IEC(国际电工委员会)下的MPEG(Motion Picture Expert Group,运动图像专家组)制定了MPEG-1、MPEG-2等标准。
  4. 电气和电子工程师协会(IEEE)
    • 是世界上最大的专业技术团体,由计算机和工程学专业人士组成。
    • 有一个专门负责制定标准的下属机构。
    • 在通信领域中制定了著名的802标准,如局域网(LA)和无线局域网(WLA)标准。
  5. 互联网协会(ISOC)
    • 是一个非营利组织,致力于确保互联网的开放、全球性和可扩展性。
    • 资助了IETF和RFC编辑小组。

可是我们需要有一个认识就是:

制定协议的人不等于编写协议的人

对于协议来说,协议本质是一个软件,并且具有分层的特性,说到分层,大家已经不陌生了,我们最开始大多时候是将所有的代码放在了main函数里面,可是有了函数的概念之后,我们开始编写函数,开始对我们写的文件进行分层。

所以,协议也是同理,虽然我们现在对协议没有一个具象的概念,但是对于分层我们的体会还是比较大的,分层的好处具体是体现在哪里呢?

对于这个例子来说,我们通信协议分为了两层,一层是语言层面,一层是物理设备上面,虽然我们可能是人为的认为我们通信是直接通信的,但是实际上我们有了语言层面的协议之外,还需要借助物理设备。

如果说,我们会多种语言,在某种场合之下英语被禁止了,我们只能说中文,或者说某种场合下电话机被禁止了,我们只能使用无线电设备,不管是什么情况,因为协议是分层了的,所以设备层对于语言层面没有影响,语言层面对于设备层面没有影响,这就代表了,如果某方面出了问题,我们不必担心它带来的连锁反应,我们只需要关心某一层就行了。

所以这是协议带来的直观好处:解耦合

实际上的网络通信协议不止2层。

OSI(Open system Interconnection开放系统互连)七层模型成为开放式系统互联参考模型。这个模型将网络从逻辑上分为了7层,每一层都有相关的功能或者对应的物理设备。这七个层次从上到下依次为:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层

但是因为它分的实在是太细了,在实际编写协议的时候较为复杂加之不太实用,我们更多的将TCP/IP协议四层模型作为讲解。

对于TCP/IP协议本质上有五层,其中是将OSI中的应用层 表示层 会话层合并为了一层,统称为应用层

所以TCP/IP协议一共有五层,分为是应用层,传输层,网络层,数据链路层,物理层。

可是明明前文我们才说了四层模型作为参考,为什么这里是五层呢?因为物理层实在是过于偏硬件了,所以我们对于物理层讨论的不是那么多。

总的来说,我们介绍的四层分为是应用层,传输层,网络层,数据链路层

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

再识协议

好了,现在我们知道了协议具有分层的特点,带来的好处是解耦合,加之OSI模型太过复杂,所以拿TCP/IP四层模型作为基础,四层分别是数据链路层,网络层,传输层,应用层。

这是初识协议的一个摘要。

那么,我们现在重点来谈谈TCP/IP协议。

我们为什么要有TCP/IP协议呢?在初识协议部分我们谈论到了对于计算机内部而言也是存在许多协议的,但是拿通信来讲的话,世界的通信不可能只有一个计算机吧?多台计算机进行通信的同时,硬件层面是肉眼可见的变远了很多很多。

所以我们需要一种约定用来解决这种情况。TCP/IP出现的本质原因就是因为物理设置距离的变远了。

而物理设备变远了引发的问题主要是数据传输的问题,其中数据传输引发了多个子问题,比如数据丢失,数据乱序等情况,不同的情况我们都需要不同的解决方案,所以实际上TCP/IP协议是一组协议,是协议族,不同的协议用来解决不同的问题。

可是,究竟什么是协议呢?

提及一个问题,对于不同的操作系统,比如Windows和Linux操作系统,可以互相通信呢?

答案是肯定的,因为如果Linux和Windows系统不能通信的话,你的电脑和手机是不能通过局域网发消息的,那么它们为什么可是通信呢?

虽然协议是一个大类,由不同的厂商编写,有不同的标准,但是在OS层面的协议一定是要相同的,传输层和网络层都是位于OS里面,其中涉及的协议是TCP/IP协议,如果该协议依赖于某种特定的网络,那么不同的OS直接是不可以通信的,所以,TCP/IP协议为了不同OS通信,编写出来看起来几乎是一样的。

假设存在一个结构体叫做test,里面有三个变量,分别是a b c,通过传输层传输信息的时候,主机A通过网络将new出来的结构体直接发送给B,B能直接拿到吗?

不少人可能会想,它凭什么拿得到,数据丢包,数据乱序,数据中断等问题,我们这里不考虑这么多,就这么说吧,这两个OS都有一个结构体叫做test,那么B为什么拿不到?存在两个中国人,A说你好,B拥有同样的语言系统,所以B能直接获取到A的信息。

那么,这不就是一种协议吗?

对于协议我们现在可以有一个朴素的理解:协议就是通信双方都认识的数据类型。

现在我们引入一个场景,快递单子大家应该都认识吧?

其中快递单子 + 货物 = 协议报头 + 有效载荷

以上是对于协议的初步认识。

局域网

小时候我们玩我的世界,都知道有一种联机方式是局域网连接,可是为什么处于相同的局域网就能连接呢?

我们直接说结论:局域网能直接通信是因为能到对应的主机,能到对应的主机是因为每台主机都有一个MAC地址。我们也能在自己的机器上查看MAC地址,但是如果是虚拟机可能会虚构地址,云服务器不会:输入命令ifconfig:

其中MAC地址的组成是长度为48位,及6个字节.一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:0:fb:19)

其中我们拿以太网举例,A主机向B主机发送消息的话,就需要data消息,B主机的mac地址,自己的地址发送到以太网中,其他主机通过以太网读取到收货地址不是自己的,就会选择忽略。

而在以太网中传输信息的时候有以下注意的几个点:

以太网中,任何时刻,只允许一台机器向网络中发送数据 如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞 所有发送数据的主机要进行碰撞检测和碰撞避免 没有交换机的情况下,一个以太网就是一个碰撞域

局域网分类:

  • 以太网:只允许一个主机在任何一个时刻在局域网中发送消息,否则发生碰撞 如何看待局域网中的网络资源?站在系统角度:共享资源、临界资源
  • 令牌环网:谁有令牌谁就能发消息,没有就不能发送
  • 无线LA:以太网的变种

从应用层一直封装到数据链路层,层层封装,通过以太网,再从数据链路层层层解包的上层。

这就是发送消息的过程。

从以上我们得出来网络协议的共性为:

1. 报头和有效载荷分离的问题->解包 2. 除了应用层,都必须解决一个问题,自己的有效载荷应该交给上层协议 -- 分用

以上是在局域网中发送消息的情况,可是跨网络才是常有的事儿:

跨网络传输

当一台路由器,接收到了不同的IP地址,也就可以让两个不同的主机进行通信,其中,IP地址我们需要简单了解:

• IP地址是在IP协议中,用来标识网络中不同主机的地址;

• 对于IPv4来说,IP地址是一个4字节,2位的整数;

• 我们通常也使用"点分十进制"的字符串表示IP地址,例如192.168.0.1;用点 分割的每一个数字表示一个字节,范围是0-255;

而IP地址分为了IPv4和IPv6,我们后面谈论的基本上都是IPv4。

我们也可以在终端查看我们的IP地址,ipconfig即可:

通过路由器访问的时候,仍然需要两次封装,两次解包。分别在进路由器和出路由器的时候。

• IP地址在整个路由过程中,一直不变

• Mac地址一直在变

• 目的IP是一种长远目标,Mac是下一阶段目标,目的IP是路径选择的重要依 据,mac地址是局域网转发的重要依据

以上是网络基础的一个了解,如有介绍错误,请指正!


感谢阅读!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-12-20,如有侵权请联系 cloudcommunity@tencent 删除数据网络协议linux基础

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1240192.html

相关标签:无
上传时间: 2025-07-26 23:58:16
留言与评论(共有 14 条评论)
本站网友 无奈的爱
17分钟前 发表
Mac是下一阶段目标
本站网友 怎么减大腿
26分钟前 发表
OSI(Open system Interconnection开放系统互连)七层模型成为开放式系统互联参考模型
本站网友 孕妇晚餐
2分钟前 发表
交互数据的时候
本站网友 孕囊掉下来的图片
20分钟前 发表
如有介绍错误
本站网友 广西经贸技术学院
9分钟前 发表
会发生数据干扰
本站网友 西子论坛
21分钟前 发表
其他主机通过以太网读取到收货地址不是自己的
本站网友 4466kk
6分钟前 发表
并以RFC(Request For Comments
本站网友 儿童减肥食谱
25分钟前 发表
目的IP是路径选择的重要依 据
本站网友 小产权房怎么贷款
24分钟前 发表
假设存在一个结构体叫做test
本站网友 金湖房屋出租
5分钟前 发表
比如Windows和Linux操作系统
本站网友 野生动物保护
12分钟前 发表
我们称之为数据碰撞 所有发送数据的主机要进行碰撞检测和碰撞避免 没有交换机的情况下
本站网友 红圈会
19分钟前 发表
可是我们需要有一个认识就是:制定协议的人不等于编写协议的人对于协议来说
本站网友 反骨仔
26分钟前 发表
是协议族