Linux网络基础

协议的认识

你和父母双方之间做的约定,就是协议

假设现在你要去上大学了,但是没有手机,而且家里也只有一个座机,为了节省电话费,你在走之前和父母做了个约定:

当家里的座机响一声,说明你很好,不用它们担心。
当家里的座机响两声,说明你没钱了,需要服务给你通过信用社或者邮寄打钱。
当家里的座机响三声,说明你有其他事情,需要你父母接起电话来和你交流。

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

比如收到1表示对方开始发送数据,这一位之后的内容就是对方要发送的数据。
再收到0表示对方介绍发送数据,这一位之后的内容并不是对方要方式的数据,可以舍弃掉。
在计算机之间也是一样,协议就是一种约定,双方之间无需解释就懂的约定。

只要通信的两台计算机之间约定好协议就可以进行通信了吗?

再比如,两台计算机之间约定好了,收到”天王盖地虎“,就回复”宝塔镇河妖“,但是,一台计算机的用户是个外国人,它给你发了”The king of heaven and the tiger of earth(天王盖地虎)“,此时他并没有违背协议,只是用的语言不一样,但是还是根据协议来的。

那么你收到这句话后,该按照他遵守协议回复”宝塔镇河妖“呢还是不搭理他呢?

除此之外,计算机的生产厂商也有很多,计算机的操作系统也有很多,计算机的网络硬件设备也有很多,计算机的之间通过网络进行通信,虽然都按照一定的协议进行,但是表现方式确有可能不同,此时就会导致混乱,所以就很有必要规定必须使用中文,或者必须使用英文。

在网络通信中,有人就站出来约定了一个共同的标准——网络协议。所有进行网络通信的计算机之间必须按照这个网络协议来进行。

这里仅是理解网络协议是什么,具体的协议内容在之后会详细讲解。


协议的作用

在这里插入图片描述
如上图所示,如果通信双方距离比较近,仅有10m,那么通信双方的障碍就比较小,通信的内容也不容易出错,就好比两个人面对面聊天,说的话可以很清楚的传递给对方。

而在网络中,通信双方的距离会很远,就会引入很多障碍,也就是通信问题,比如信号在传输过程中受到的各种干扰,导致信号丢失一部分,或者多了一些干扰信号。

所有网络问题的本质:传输距离变长了!

在这里插入图片描述

就好比两个人之间相隔一千米,如上图所示,说的话就很难让对方听清楚,就算是喊的声音非常大,也会由于声波的衰减以及各种空气的阻力,导致很难直接交流。

而此时通信双方通过协议来通信就可以很大程度上客服远距离传输带来的问题,可以很大程度上减少通信成本。
对于上面打电话的例子,电话铃声响不同的声数代表不同的意义,响一声和两声的时候都不用接通电话,还省了电话费!!!
在计算机的网络通信中,协议同样可以降低通信成本。
协议的定制就是为了降低通信成本。


协议的分层的理解

在这里插入图片描述
如上图所示,两个人在通过座机打电话,通话的流程,双方建立联系后:

A对着电话说话,电话将A的信息采集到。
再将采集到的信息传给C的电话。
C的电话再将从A的电话传过来的信息放给C听。
对于打电话的A和C来说,他们认为自己是直接和对方通话的,而对于两台电话机来说,它们认为是它两之间互相传递信息的。

这样一来,就将整个通话的过程分为了两层:

语言层,A和C。 通信设备层,A的电话机和C的电话机。
这两层的每一层都有各自的协议,对于语言层,通话双方是汉语协议,两人使用汉语来交流,可以互相明白对方的意思。

对于通信设备层,双方是电话机协议,两台电话机通过接收约定好的信号来做出不同的反应。

如上图右边箭头指向的内容,现在两个打电话的人变成了两个说英语的人,两人之间同样可以进行通话,仅是语言层的协议从汉语变成了英语,通信设备成不需要改变。

再如上图左边箭头指向的内容,不再使用电话机通话,而是使用手机来通话,此时仅是通信设备成的协议变成了无线电协议,语言层不需要改变,仍然使用汉语协议。

当两层中的某一层发生改变时,并不影响另一层。
这个例子中,协议只分两层(语言层和通信设备层),在实际的网络通信中,分的层数更多,情况也更复杂。

对分层的理解:

  1. 在软件设计方面的优势:低耦合,某一层发生变化并不影响其他层。
  2. 分层的依据:功能比较集中,耦合度比较高的模块就可以分为一层——高内聚。
  3. 每一层都要解决特定的问题。

在网络通信中,通信双方要解决的问题有什么呢?

  1. 如何把数据交付给和自己直接相连的下一台主机。
  2. 要有路径选择的能力,因为网络通信过程中存在很多节点。 容错纠错的能力,当通信信息发送错误时,能够处理。
  3. 当信息递达以后,具体的应用问题。

OSI七层模型

在这里插入图片描述在1977年国际标准化组织提出了OSI七层网络模型,为什么要进行分层呢?因为在网络数据传输的过程中,需要面临很多方面的问题,比如物理层,驱动层,软件层,用户层等等都有各自需要解决的网络传输问题,而分层其实就是进行解耦,每一层都是功能比较集中,高内聚的模块,用于处理该层面临的网络传输问题,层与层之间是低耦合的。
并且每一层都有自己匹配的协议,每一层协议都用于处理当前层的传输问题。
虽然是七层模型,但实际使用时,将上三层压为一层,统称为应用层,所以我们平常所说的都是TCP/IP四层或五层模型,物理层我们不考虑。


TCP/IP四层模型

我们先通过一个生活例子来预热理解一下TCP/IP四层模型,比如你现在要从北京去云南骑自行车旅游,你首先面临的问题不是怎么去云南,而是应该怎么去云南,第一站要到哪里,第二站要到哪里,最后再到达云南,所以第一个面临的问题就是自己如何到达下一站,比如要先骑到河南。那么第二个问题就是怎么到河南,是往北走呢?还是往南走呢?所以我们要有路径选择的能力。而有没有可能骑车的方向出错了呢?当然是有的,所以也要有容错和纠错的能力,最终到达云南之后,我们要开始玩,其实对应计算机就是处理数据。这就是生活例子中的四层模型,他们对应的分别是数据链路层:把数据交付给和自己相连的下一台主机。网络层:通过路由表的方式规划出两台主机之间数据传输的路由(线路)。传输层:负责两台主机之间的数据传输是可靠的,例如传输控制协议TCP,也就是提供容错纠错的能力。应用层:负责应用程序app之间的沟通,网络编程主要就是针对应用层,应用层和传输层之间有操作系统提供的系统调用接口。
TCP和IP是传输层和网络层协议的大哥,所以我们的模型叫做TCP/IP四层模型,网络层和传输层是操作系统内部实现的,所以我们写的代码要想访问下层则必须调用应用层和传输层之间的system call。
在这里插入图片描述


网络通信的原理

1. 协议报头

假设在网上买了一个水杯,这个水杯并不是商家直接给到买家手里的,它需要经历以下几个步骤:

商家将它打包好,交给快递公司。
快递公司贴上快递单,然后发在买家地址附近的快递点。
快递点通知买家,买家去快递点拿。
买家拿到水杯的时候,它不仅仅只有一个水杯,还会多出来一些东西,比如包装盒,已经上面贴着的快递单。

多出来的快递单就相当于协议报头。
快递单上写着买家的地址,姓名,联系电话等信息,快递站根据这些信息就可以将水杯送到买家手里。

快递单上的信息对于快递站来说就是一种协议,这是快递公司指定的协议,快递点只需要按照协议上的信息联系买家就行。

网络通信中,协议每一层都有,而每一个协议的最终表现就是协议要有协议报头。 协议通常是通过协议报头来表达的。
每一份数据在被发送或者处于不同的协议层中,都要有自己的报头。

2. 局域网

局域网中的两台计算机之间可以直接通信,不需要通过路由器
在这里插入图片描述

上图局域网中存在两台计算机进行网络通信,使用的是TCP/IP模型。

报文 = 报头 + 有效载荷,在不同的层,有效载荷和报头都是不同的。

在这里插入图片描述
在这里插入图片描述
接收的过程中,每一层中的协议和发送方每一层的协议是相同的,从用户B的物理层接收到报文到用户收到“你好”的过程叫做解包分用。

解包:将对应层中报文的协议报头去掉。

分用:将解包后的有效载荷交给上一层对应的协议,因为每一层中存在不只一个协议。
在局域网通信的过程中,封装是上层传送给下层,解包分用是下层传送给上层,但是对于每一层而言,可以看作是层与层之间的直接通信,因为它们的协议都是一样的。

衡量一个协议是否可用,就看他能不能解决两个问题:

如何判断哪里是报头,哪里是有效载荷?
如何判断自己的有效载荷要交给上一层的哪一个协议?

数据处于不同的层,它的名称也不一样:

所在层 数据名称
传输层 数据报
网络层 数据段
数据链路层 数据帧

3.跨网络

跨网络通信也就是“广域网”,需要通过一个或者多个路由器来实现

在这里插入图片描述
如上图所示是两台处于不同局域网中的计算机进行网络通信,这里不再考虑物理层。

用户A发送你好,用户B接收你好:
对“你好”进行封装,直到以太网的链路层。
以太网的链路层将报文进行解包,去掉以太网协议的报头,将剩余下的有效载荷交给路由器。
路由器再将报文封装,加上令牌环网协议的报头,再将报文交给令牌环网的链路层。
链路层进行解包和分用,最终将“你好”交给用户B。
可以看到,在路由器中实现了一次重新封装,将以太网的报文进行解包分用,将有效载荷交给路由器,路由器封装成令牌环网的报文。

可以认为路由器中有两张网卡,也就是两个网络接口。
以太网的网卡接收来自以太网解包分用后的有效载荷,令牌环网的网卡将报文封装加上令牌环网的报头,并交给链路层。
报文在路由器中的身份是数据报,也就是没有链路层的报头。

路由器的作用之一就是屏蔽底层网络的差异。
在跨网络通信中,同一层协议可以认为是在直接通信,虽然实际上是有封装和解包分用的过程,但是由于同一层的协议相同,所以就可以认为是在直接通信。

路由器同时处于两个局域网中。


网络中的地址

认识MAC地址

局域网中的每一台计算机都有自己的名字。
局域网中计算机的名字可以理解为,每台计算机都有一个网卡,而每张网卡都有一个独一无二的序列号,表面自己在局域网中的唯一性,这个序列号就被叫做MAC地址。

使用ifconfig指令就可以看到当前机器的MAC地址,ether表示以太,在它后面的由冒号隔开的6个16进制数就是MAC地址。

MAC地址用来识别数据链路层中相连的节点。
长度为48位, 及6个字节, 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改,mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突,也有些网卡支持用户配置mac地址)。
全球范围内计算机的MAC地址都是独一无二的,但是它仅用在局域网中。
一台计算机在寻找与它直接相连的另一计算机时,靠的就是MAC地址。

认识IP地址

在整个广域网中,每一台计算机也有自己的名字。
广域网中有非常多的路由器,基站,仅靠MAC地址是无法路由的,所以每台计算机都有一个IP地址来标识它的唯一性,这个IP地址就是计算机在广域中的名字。

使用ifconfig指令就可以看到当前机器的MAC地址,inet后面的由冒号隔开的几个16进制数就是IP地址。

  • IP地址是在IP协议中, 用来标识网络中不同主机的地址。
  • 对于IPv4来说, IP地址是一个4字节, 32位的整数。
  • 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ,用点分割的每一个数字表示一个字节, 范围是 0 - 255。
  • IP协议有两个版本, IPv4和IPv6,后面凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4。

相关推荐

  1. Linux-网络基础

    2024-03-25 18:36:07       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 18:36:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 18:36:07       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 18:36:07       82 阅读
  4. Python语言-面向对象

    2024-03-25 18:36:07       91 阅读

热门阅读

  1. Linux常用命令

    2024-03-25 18:36:07       45 阅读
  2. MySQL知识总结

    2024-03-25 18:36:07       37 阅读
  3. 《大厂面试模拟(免费) - C++工程方向》

    2024-03-25 18:36:07       36 阅读
  4. C++ IDisposable 接口抽象类实现

    2024-03-25 18:36:07       44 阅读
  5. 计算机网络参考模型(OSI和TCP/IP 网络模型)

    2024-03-25 18:36:07       38 阅读
  6. 什么是原型链

    2024-03-25 18:36:07       41 阅读
  7. AD实用设置教程

    2024-03-25 18:36:07       39 阅读
  8. C语言 指针综合应用 ( 高阶应用 )

    2024-03-25 18:36:07       41 阅读
  9. Redis面试题

    2024-03-25 18:36:07       40 阅读
  10. ABAP 编程中 JASON 字符中 % 百分号如何处理?

    2024-03-25 18:36:07       41 阅读
  11. C语言字符串和字符数组有什么区别?

    2024-03-25 18:36:07       36 阅读
  12. 卡尔曼滤波

    2024-03-25 18:36:07       38 阅读
  13. TG油封的优点与作用?

    2024-03-25 18:36:07       39 阅读
  14. DolphinDB 常见数据库错误代码大全

    2024-03-25 18:36:07       45 阅读