Linux网络基础

一,初识网络发展

在计算机发展之初,各个实验室,科学家等在使用计算机做学术研究的时候,都少不了电脑与电脑之间的数据交互,那么可以使用线来把各台电脑互相连接起来共享数据,这也就是内网--**局域网,局域网在现在最有代表的就是以太网,**当然实验室和实验室之间也要进行协作开发,所以实验室与实验室之间的数据交互也非常重要,至此科学家们发明了交换机和路由器,实现了两局域网的通信,他就是广域网(可以理解为大点的局域网)

人与人之间是互相协作的,也就会要求计算机之间也要互相协作,所以网络的出现的必然的。

二,初识协议

协议在计算机中算是一种标准或者约定,我们来举个好理解的例子,以前一个座机打电话是特别贵的,小明要去上学,在上学之前和他爸做一个约定:电话费太贵了,当我打电话来的时候你不要随便接,电话响一声代表着没事给家里报个平安,电话响两声代表我没生活费了,电话响三声,就要接,可能学校要求开家长会什么的。。。。

在现在两台不同的设备中,os,存储方式,大端小端等各不相同,那么他们能够互相通信的原因就是他们共同遵守一个约定----网络协议,可以在不同的计算机中不同数据变为相同

当然,协议除了在网络中会出现,在硬件中也无处不在,各个硬件之间也有自己的协议,来达到各个不同硬件之间可以互相协作

三,协议分层

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

拿打电话不不同视角举例子:

1,小白:直接通信

2,工程师:同层协议:没有直接通信,而是各自使用下层协议的解构完成的通信

在这个例子中, 我们的"协议"只有两层:语言层、通信设备层

分层就是解耦合的有效方式,提高可维护性

四,OSI 七层模型

•1,OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;

2, 把网络从逻辑上分为了 7 层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;

3, OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

4,它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯; •

5,但是, 它既复杂又不实用; 所以我们按照 TCP/IP 四层模型来讲解

七层模型分别是:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

其实在网络角度,OSI 定的协议 7 层模型其实非常完善,但是在实际操作的过程中,会话层、表示层是不可能接入到操作系统中的,所以在工程实践中,最终落地的是 5 层协议。

但是要理解上面的话,需要我们学习完网络才可以理解,这里就知道就可以。

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

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

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

•1,物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi 无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.

2,数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线 LAN 等标准. 交换机(Switch)工作在数据链路层.

3, 网络层: 负责地址管理和路由选择. 例如在 IP 协议中, 通过IP 地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

4, 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机. •

5,应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.

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

六,再识协议

上面的内容,我们只是懂了一些基本概念,还是达不到我们的目标,下面我们在此重新理解协议和协议分层。

为什么要有 TCP/IP 协议?

首先,即便是单机,你的计算机内部,其实都是存在协议的,比如:其他设备和内存通信,会有内存协议。其他设备和磁盘通信,会有磁盘相关的协议,比如:SATA,IDE,SCSI 等。只不过我们感知不到罢了。而且这些协议都在本地主机各自的硬件中,通信的成本、问题比较少。

其次,网络通信最大的特点就是主机之间变远了。任何通信特征的变化,一定会带来新的问题,有问题就得解决问题,所以需要新的协议咯。

所以我们可以说冯诺依曼机本事就是网络结构,假设线路无限延长,把计算机各个设备分开分的远远的,也可以运行。

通讯距离太远会导致很多问题,我要发数据 给主机c,得线发到路由器,可是网上这么多主机,我怎么定位并找到主机c?如果我的数据发出去,丢失了怎么办?主机c怎么知道我发出去的数据该怎么处理被是使用?

我们可以通过协议来解决问题,不同的问题用不同的协议--协议分层,TCP/IP是解决上面一系列问题的解决方案。

七,重谈协议

网络和OS的关系

网络协议栈在每个系统每层都是一样的,Linux与windows有相同的协议栈可直接通讯:

在其中具有核心地位的是传输层和网络层,所以以TCP/IP命名,所以可以说TCP/IP是OS的一部分。

所以什么叫协议

协议也是用c写的,协议本质也是一个结构体,win和linux网络代码一定是一样的,OS同层之间互相认识自己的结构体:

我们拿快递单举例子,我们下去拿快递的时候不是直接拿一个商品而是拿到一个盒子和对应的单子,我们需要核对单子看看东西是不是我想要的,如果是就可以对盒子进行拆封,从而获得在网上购买的商品,协议间也是一样,在网络传输过程总会多一点东西,对应拆快递盒就是对网络传输内容进行解包,单子对应结构体也就是协议。

八,网络传输基本流程

首先回答,两台主机在同一个局域网,是否能够直接通信?是的

原理类似上课

每台主机在局域网上,要有唯一的标识来保证主机的唯一性:mac 地址

认识MAC地址

MAC 地址用来识别数据链路层中相连的节点;

长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)

在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的mac 地址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置mac 地址).

我们拿在教室点名的例子,教室里老师叫一位同学站起来,会喊:小明,站起来回答一个问题,这时翠花听见了,其他同学也都听见了,但是只有小明站起来,这就是主机A在网络通信时向局域网发送,这时在局域网内所有电脑都接收到信息,然后核对是不是发给我的,如果是就接收不是就丢弃,每台机器都有对应的名字就是MAC地址

在Linux下可以使用指令:ifconfig 查看etho中ethr就是MAC地址

win可以使用ipconfig /all来查看

由上面知识我们知道,收到消息一定是硬件先收到消息,网卡就不断的收数据判断是不是自己的数据,如果不是就丢了,用户本身感受不到硬件收到数据,

以太网中,任何时刻,只允许一台机器向网络中发送数据

如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞

所有发送数据的主机要进行碰撞检测和碰撞避免

没有交换机的情况下,一个以太网就是一个碰撞域

局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标mac 地址判定

这里可以试着从系统角度来理解局域网通信原理

在网络人多的时候,碰撞也会变多,每次碰撞会让主机进入短暂休眠,这样网络效率就会变慢。

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

图中可以看到,用户A发送一个消息(有效载荷)到应用层,应用层会给其封装一个应用层报头,往下也一样直到网卡部分,网卡根据MAC找到对应主机给到主机网卡,网卡再给数据链路层解包,往上递减之后给用户B收到,

我们为什么要对用户发送到消息封装?

因为OS是图层结构,从软件到硬件,OS必须走解封流程。

那么网卡怎么直到来数据了?:中断!!收到消息执行中断向量表方法

相关推荐
dustcell.5 分钟前
Cisco Packer Tracer 综合实验
网络
这儿有一堆花29 分钟前
安全访问家中 Linux 服务器的远程方案 —— 专为单用户场景设计
linux·服务器·安全
RussellFans1 小时前
Linux 文本三剑客(grep, awk, sed)
linux·运维·服务器
猴哥聊项目管理1 小时前
什么是DevOps智能平台的核心功能?
运维·项目管理·制造·devops·软件·项目管理软件·软件分享
Chuncheng's blog1 小时前
CentOS 7如何编译安装升级gcc至7.5版本?
linux·运维·c++·centos
听风吹等浪起1 小时前
CentOS在vmware局域网内搭建DHCP服务器【踩坑记录】
linux·服务器·centos
aitav02 小时前
⚡️ Linux Docker 基本命令参数详解
linux·运维·docker
量子-Alex2 小时前
【反无人机检测】C2FDrone:基于视觉Transformer网络的无人机间由粗到细检测
网络·transformer·无人机
Nazi62 小时前
docker数据管理
运维·docker·容器
静水楼台x2 小时前
nginx日志的一点理解
运维·nginx