【网络编程】网络基础知识总结

一、局域网与广域网

广域网(WAN),就是我们通常所说的Internet,它是一个遍及全世界的网络。

局域网(LAN),相对于广域网(WAN)而言,主要是指在小范围内的计算机互联网络。这个“小范围”可以是一个家庭,一所学校,一家公司,或者是一个政府部门。

文献常常提到的公网、外网,即广域网(WAN)
文献中常常提到私网、内网,即局域网(LAN)

那么怎么区分它们呢?

其实局域网和广域网的概念很模糊,它们是相对的概念。如果硬要区分的话可以看路由器,如果没有路由器就是局域网,需要路由器横跨就是广域网。

二、协议

2.1 协议的概念

首先要知道协议就是一种约定

在谈协议之前我们先来看一个场景:

我们知道计算机内部有很多组件,例如CPU、显卡、网卡……而它们在计算机内部是用线连接起来的。所以一台计算机内部本质上也是小型网络结构,在一台计算机内部设备和设备之间也存在协议,比方说驱动程序访问硬件就要通过协议。
而我们假设这些线足够长,把硬盘放到几百公里外,那么现在我们存储数据就由写入本地变成通过网络写入远端了,再把CPU等等都放到远处,相当于我们把一台计算机的各个功能用多台计算机构建起来,通过网络连接起来。由此得出结论:
计算机中 体系结构中有网络,网络中有体系结构。

我们要思考一个问题,我们学习系统的时候从来没有谈论过协议这个问题,那么为什么现在要讨论呢,因为多台主机距离较远,为了减少通信成本,所以需要协议。
所有的网络问题都是因为传输距离变长了。

举个例子理解一下什么是协议:

两个老太太用座机联系早上一起去种菜,而用座机接电话会花钱,她们就想了一个办法,响铃一声就挂了就表示该出发去种菜了。而如果真的有事的话就响三声,这样就减少了成本
所以这里响几声代表了不同的含义,而这个含义不用解释,双方已经达成了共识,这就叫做约定,而用计算机语言来说就叫做协议
举个例子在计算机中,一台主机想让另一台主机干一件事,可以先约定好只发送一个字节,不同的比特位代表要做什么事情,这样就减小了成本。

现在虽然有了协议,但是也有很多的计算机生产厂商、也有不同的操作系统……它们可能各自有各自的协议,所以这个时候就需要约定一个共同的标准,让大家都遵守,这就是网络协议(TCP/IP)

2.2 协议分层

什么是分层?
举个例子:

两个人用电话来联系,站在人的角度,是人和人之间在沟通,站在电话的角度,是电话与电话之间在沟通。这就叫做分层

分层有什么好处?

我们把软件进行模块化分,可以很好的进行解耦。而解耦了以后我们把通信设备进行更换,比如说用QQ电话进行沟通,上层不用改变;同样的上层语言改变,底层不用变。所以我们对任何一层进行修改并不会影响到其他层。

封层的依据是什么呢?

我们把功能比较集中、耦合度较高的的模块放在一层,也就是高内聚
而每一层都是要解决特定的问题。

2.3 数据传输的条件

1️⃣ 当两太很远的主机之间要传递数据,首先要先有传递一台主机数据的能力(数据包交付能力),然后一台一台的“蹦”到目标主机。
2️⃣ 要有路径选择的能力。有成千上万个主机,如果不知道给哪一台也不行。
3️⃣ 要有纠错的能力。如果出错了就要重新传递一份。
4️⃣ 要有数据解析能力。数据传递过去主机要识别这是什么,然后才能使用这个数据。

而这里的每一层都有自己的协议,每一层协议都解决当前层的问题。

三、OSI七层模型

OSI把网络从逻辑上分为了七层,每一层都有相关的物理设备。

分层名称 功能 每层功能概述
应用层 针对特性应用的协议 针对每个应用的协议
表示层 设备固有数据格式和网络标准数据格式的转换 接收不同表现形式的文件,如文字流、图像、声音等
会话层 通信管理。负责建立和断开通信连接。管理传输层以下的分层 何时建立连接,合适断开连接以及保持多久的连接
传输层 管理两个节点之间的数据传输。负责可靠传输(确保数据被可靠的传送到目标地址) 是否有数据丢失
网络层 地址管理与路由选择 经过哪个路由传递到目标地址
数据链路层 互联设备之间传送和识别数据帧 数据帧与比特流之间的转换
物理层 用‘0’和‘1’表示高低电压 比特流与电子信号的转换、连接器与网线的规格

在这里插入图片描述
但是, 它既复杂又不实用; 所以我们按照TCP/IP四层(除开物理层)模型来讲解。
在工程实践中把应用层表示层和会话层压缩成一层。

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

分层序号 分层名称 功能 例子
5 应用层 负责程序之间的沟通。 简单的电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
4 传输层 负责两台主机之间的数据传输,能够确保数据能够可靠的从源主机发送到目标主机。 传输控制协议(TCP),能够确保数据能够可靠的从源主机发送到目标主机。
3 网络层 负责地址管理和路由选择。 IP协议中,通过ip地址来标识一台主机,并通过路由表的方式规划处两台主机之间的数据传输的线路。
2 数据链路层 负责设备之间的数据帧的传送和识别。 网卡设备的驱动、数据差错效验等工作。
1 物理层 负责光 / 电信号的传递方式。物理层的能力决定了最大传输效率,传输距离,抗干扰性等。 以太网通用的网线(双绞线),早期以太网使用的是同轴电缆。

上面我们说过数据传输的条件

数据链路层解决的是能够传递的问题,网络层解决的是选择路径的问题,传输层解决的是纠错的问题,而应用层就是解决数据解析的问题。

这里注意数据链路层中的网卡层是驱动程序的一部分。
网络层和传输层是操作系统内部自己实现的。所有的操作系统都一样,所以全球的主机都能互联。

这是一张OS层次图
在这里插入图片描述
可以看到跟上面讲的没什么区别。

在应用层传输层时间会有系统调用接口,主要是文件类的系统调用接口。

细节:
这里注意TCP和IP各自是传输层和网络层最具代表性的两个协议,这个协议栈命名为TCP/IP模型,足以看出这两个协议的重要性,它们的重要性是操作系统赋予的。

五、网络传输

5.1 预备知识——报头

上面我们讲的层状结构,每一层都会有协议,而每一个协议的最终表现就是报头
举个例子:

我们网购的时候,商家要把物品送到我们手上,但不是他们亲自送,而是交给快递公司,这就体现了分层的思想:
在这里插入图片描述
我们收件的时候不会单单只收到物品,还有快递盒和快递单。这个多出来的快递单就叫做报头

同样的,现在我们要发数据,发送的数据可能比我们想要的多一点,这多出来的一部分就是报头

再来想一想,那个快递单号是给谁看的呢?
答案是给快递员看的,这个快递单就是快递公司自己定的协议,这个快递单子在它们的物流体系中都能够被识别。

由此得出第二个结论:
协议通常是通过协议报头来表达的。每一份数据在每一层都要有自己的报头。

5.2 局域网通信原理

两台局域网的主机是能够直接通信的。

在讲原理之前先引入一个概念:

每一台主机都有自己的网卡,每一张网卡都有自己的地址,叫做MAC地址。就像我们的身份证一样,标识网卡的唯一性。
而MAC地址虽然全球唯一,但是不应用于全球,只是在局域网中标识自己的唯一。

指令:ifconfig
查看云服务器中的网络细节。
在这里插入图片描述
这里的MAC地址是个虚拟地址。

在局域网中有很多主机:
在这里插入图片描述
现在MAC1想要跟MAC7发送消息时,其他所有主机都能收到,但是其他主机在做协议判断发现并不是发给自己的,会自动丢弃。

5.3 以太网和令牌环网

以太网:
以太网就是一种具体的局域网。
以太网的通信方式就是上面局域网这种通信的方式:就是发出的消息所有人都能收到。
但是当MAC1想把消息发给MAC7,MAC3想把消息发给MAC5,但是它们不能同时发消息(数据覆盖)。
所以以太网发送消息的原则是只允许一个主机在任何一个时刻在局域网中发消息。否则就会发生碰撞,如果发生了碰撞就把消息作废然后重发。

所以我们站在系统的角度看待网络资源就是临界资源。

令牌环网:
而令牌环网的解决方式就是谁持有令牌环谁发送数据。没有令牌的主机就不能发送消息。就类似于系统中的锁

5.3 网络传输流程图

5.3.1 同一网段的两台计算机的通讯过程

接下来来看两台主机之间的数据传输:
在这里插入图片描述

5.3.2 不同网段的两台计算机通讯过程

在这里插入图片描述
一个设备至少要横跨两个网络,才能实现数据包跨网络转发,所以路由器必须要横跨两个网络,所以必须有两张网卡。

5.4 数据包的封装和分用

比方现在两个人用QQ在进行聊天,他们会认为他们是在用户层直接进行聊天,而事实上是数据向下交付(封装)在向上解包(分用)才实现的聊天。

数据包封装:
在向下交付的时候每一层都会添加自己的报头,报文=报头+有效载荷,再把报文向下交付。

数据包分用:
在向上解包的时候,因为同一层有相同的协议,所以能识别报头,它会解开报头,把有效载荷在向上解包。这样就形成了对称的结构

在这里插入图片描述

可以看到同层报头和有效载荷完全一样,左边怎么发的右边就是怎么收到的,所以可以认为在同层协议中直接通信;也可以理解为向下交付。

而对于不同网段的两台计算机通讯过程略有不同,不同的地方就在路由器部分:
在这里插入图片描述
它的流程图是这样,它在路由器部分传递给令牌环驱动程序的时候,加上的报头就是令牌环协议(重新封装),这样就跟左边不一样了,但是不影响上面的对称性。

简单理解一下路由器部分传输数据:就像我们脱了外套换了新的外套,但人没有变。

由此可得出IP层的作用就是屏蔽底层网络的差异。

一些概念:
不同的协议层对数据包有不同的称谓,在传输层叫做数据段,在网络层叫做数据报,在链路层叫做数据帧
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(报头),称为封装。

六、IP地址与MAC地址

在这里插入图片描述
IP协议有两个版本, IPv4和IPv6
上面的用4个节表示形式称为IPv4。
而IPv6就是用16个字节表示。

MAC地址通常在局域网使用,IP地址通常在广域网使用。

IP地址

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

MAC地址

1️⃣ MAC地址用来识别数据链路层中相连的节点,也叫物理地址
2️⃣ 长度为48位(6)个字节,一般用16进制数字加上冒号形式来表示(如: 08:00:27:03:fb:19)
3️⃣ 在网卡出厂时就确定了,不能修改。mac地址通常是唯一的

既然这两个都能表示地址,那么为什么要搞两个地址呢?
举个例子:

在西游记中,我们经常听到一句话,唐僧进过一个国家的时候,会跟首领说:贫僧从东土大唐而来,去往西天拜佛取经。而首领就会问他从哪里来的,再告诉他接下来该去哪:比方说:上一站是宝象国,下一站该去乌鸡国。

这里的东土大唐和西天就是IP地址,从始至终不会发生变化。
而宝象国和乌鸡国就是MAC地址,一直在变化。

IP地址提供的是方向
MAC地址提供的是可行路径

注意这里的MAC两个地址一定是挨着的,所以是同一个局域网。



猜你喜欢

转载自blog.csdn.net/qq_66314292/article/details/130435506