网络基础知识

目录

1.前置基础知识

1.1局域网和广域网

1.2.主机、路由器、转换机

1.3.IP地址

1.4.端口号

2.协议

2.1.协议的定义

2.2.协议分层

2.3.协议分层的好处

2.4.网络结构

2.5.TCP/IP五层协议

2.6.协议的封装和分用


1.前置基础知识

1.1局域网和广域网

**(1)局域网:**这是一个相对的概念。比如一间教室可以认为是一个局域网、一栋教学楼、一个学校、一个城市等等。在一个局域网内,连接到局域网上,可以互相通信

**(2)广域网:**这是全球最大的广域网,称为:The Internet,万维网。

1.2.主机、路由器、转换机

**(1)主机:**一个设备称为主机。例如:一个手机、平板、电脑都可以称为一个主机。

路由器和交换机,都是用来组建网络的重要设备。

(2)路由器

路由器,有一个WAN口和多个Lan口,其中Lan口负责连接主机,而WAN口负责连接更大的主机。

(3)交换机

交换机,可以认为是路由器的进一步拓展。目的:路由器上面的lan口太少,而交换机则对其进行了拓展,也就是有更多的lan口。

1.3.IP地址

(1)标识一个网络设备,通过这个地址,就可以找到这个设备,进而进行通信

(2)IP地址,有四个字节的数字组成,也就是32位。

(3)表示方法:使用点分十进制的形式。使用三个.号将ip地址分成四个部分,每个部分的数据为一个字节,范围为:0-255(IPv4)

(4)例如:192.168.100.176

1.4.端口号

端口号,是用来标识应用程序的。不同主机的端口号可以一样,端口号的范围就是一个主机内

2.协议

2.1.协议的定义

**(1)协议,**其实就是一种约定,一种规则。通信双方,对于通信规则的约定,一定是通信双方都可以得到认可的。

(2)例子

A和B约定某一天网恋见面,因为没有真实见过面,所以他们就会事先约定好一种规则。比如A穿一条白色连衣裙,B穿着西装。两个人之间,也是可以称为一种协议的。

(3)为什么通信需要协议

一般通信都是指不同主机之间发生的,但是两个主机往往都不一样(设备、操作系统、硬件),所以需要约定协议。

2.2.协议分层

(1)背景

在网络通信中,这是一个非常庞大的结构。如果只有一个协议,很不好管理所有的内容,也会造成协议非常的庞大,所以就需要拆分。不同的部分,采取不同的协议。这也称为拆分。

(2)例子1

例如,我们在写代码的时候,如果一个方法里面要实现的功能非常多,就需要将每个功能拆分成若干个方法,进行封装。一个复杂的类同理,最好是只表示一方面,比如,人的性格作为一个单独类,一个人是怎么跑步的,又作为一个新的类。

(3)例子2

在一个大厂的,人是非常多的,各种关系,等级也是非常的复杂。如果一个普通员工需要汇报工作,是向谁汇报呢?这是非常的乱的,所以,就需要拆去分层管理。

大概下面这样的分层结构。

这就是一种分层结构,下层的人需要向上一层的人汇报工作,上一层的人管理下一层的人。

协议分层,自然也是类似的效果。很多协议,就会按照功能的不同,分层不同的层级,每个层级都有对应的主线任务(目标/要解决的问题),上层协议会调用下层协议的功能,下层协议会给上层协议提高服务。

2.3.协议分层的好处

(1)有封装的效果

在封装之后,某一层协议不需要其他层协议的细节,降低了学习使用的成本。

比如:我们在写代码的时候,属于某一层协议,当去调用一些系统api的时候,就是去调用其他层的协议,我们不需要知道他是怎么使用这个功能的,只需要会使用即可。

(2)能做到解耦合

实现分层之后,任意层的协议,都是可以灵活调换的。

就比如:当系统api里面的实现改变之后,那也是那一层干的事情,跟我去调用没有任何关系。

因为分层很好用,所以现在的网络结构也是采取分层的结构。

2.4.网络结构

一般有两种分层结构:OSI七层模型(理论模型,只存在于书上)和TCP/IP五层或四层模型(大多数网络的结构)

(1)OSI的七层结构分别是什么?

物理层、数据链路层、网络层、传输层、应用层、表示层、会话层

(2)TCP/IP五层协议

物理层、数据链路层、网络层、传输层、应用层。

我们一般就学习五层模型

2.5.TCP/IP五层协议

(1)物理层

物理层,规定了硬件层面的。比如网线、网卡。他们的形状大概是什么样子?内部是怎么包装的等等。

(2)数据链路层

关注的是,两个相邻节点之间的通信

(3)网络层

关注的是对于通信路径的规划。也就是设置一条路线,就决定了路径上会经过哪些节点。"点到点的传输"

(4)传输层

关注的是通信双方的"起点"和"终点",也就是端到端的传输。

(5)应用层

应用层,是拿到了数据,然后要将数据拿来干什么,如何使用

网购举例:

A:我下单了一件商品,并且写上了自己的快递信息(姓名+电话+收货地址等);商家收到订单之后,也会在快递包装上面标注自己的快递信息。对于我和商家来说,就相当于是传输层,只需要关心起点和终点。(我下单之后,只需要填好信息,最后快递就肯定会到达我指定的地点处,至于是怎么到的,我不需要关心)

B:当商家将快递给快递小哥,并且拿到了快递驿站。此时,驿站需要根据我填写的地址信息,进行快递运输路线的规划。(比如:快递在北京,我在桂林。路径大概就是北京--河北--湖北--湖南--桂林),这就是网络层需要完成的任务。至于怎么根据路径到达的,我不关心

C:当路径确定后,对于两个相邻地点之间该怎么运输。比如,使用飞机运算、三轮车运输、货车运算、火车运算等等,这是快递员的选择,也就是数据链路层需要完成的事情。当快递到达之后,用户如何使用,就跟我没有关系了

D:当快递到了之后,我就拿到了快递。至于我如何使用该商品,吃了也好用也罢,是我说了算,这就是应用层需要完成的事情了。

我们需要掌握的:

我们使用最多的就是应用层,但是应用层需要和传输层接触,所以需要重点认识传输层。

对于其他层,我们不需要关心他是如何实现的,但是传输层,要去关注,特别是传输层给应用层提供的api,因为我们需要去调用该api,用来实现一些功能。

2.6.协议的封装和分用

这里要认识的就是每层协议之间,是如何配合工作的。上层协议可以调用下层协议,下层协议需要给上层协议提供服务。

A通过qq向B发送一条消息,消息内容是:love。底层是如何将消息传递给B的呢?

封装:

(1)应用层

在聊天窗口将"love"的消息发送出去后,在qq应用程序的应用中,就有一个特定的协议(具体什么协议,我们不清楚,也不需要关心),规定发送的信息的格式,要包含的东西。下面我们假设是这样规定的:

单单发送一条消息,需要包含这些信息:A的qq号、B的qq号、发送时间、消息正文;并且按照这样的格式和顺序组织起来,组成一整个字符串。

当应用层将数据打包成:应用层数据包后,应用层就会调用传输层提供的api,进行将数据包发送给传输层。

(2)传输层

传输层拿到的是"应用层数据包"

在传输层中,也有它自己的协议;传输层有两个重点协议:TCP和UDP协议,我们现在使用UDP协议进行举例。

传输层做的事情:传输层会根据UDP协议,就会给应用层数据包的包头加上一个UDP报头,组成UDP数据包

UDP报头中包含的信息:

UDP报头的一些属性,如:发送人的端口号、收件人的端口号等,就是传输层干的事情

接下来,传输层也会调用网络层的api,将UDP数据包发送给网络层.

(3)网络层

网络层这里拿到的是UDP数据包

在网络层中,也有它自己的协议,典型的协议就是:IP协议

网络层会根据IP协议,继续对UDP数据包进行进一步的封装,这里是在UDP数据包的头部加上:IP报头,称为:IP数据包

IP报头包含的信息:发件人的IP地址和收件人的IP地址。现在才知道要发送给的主机是谁

接下来,网络层会将打包好的IP数据包通过数据链路层提供的api,发送给下一层。

(4)数据链路层

这一层,拿到的就是IP数据包

数据链路层,典型的协议就是:以太网

就和根据协议,和这一层的数据格式,继续对数据进行封装和打包。

数据链路层,就会在IP数据包的两头加上帧,其中头部加上的是帧头,尾部加上的是帧尾。

此时,数据才进入网卡驱动中,还是以二进制的形式存在,但是信息还未发送出去,接下来就是要发送数据了。

接下来,数据链路层就会将以太网数据帧发送到物理层

(5)物理层

物理层要做的事情,就是将上面的二进制数据,转成 光信号/电信号/电磁波,才能进行后续的发射。

上述对数据进行层层包装的过程,就称为"封装"。

但是,数据并不是直接从A的物理层到达B的物理层,而是先从A的物理层到达交换机/路由器,经过一系列的转发之后,才能到达B

分用:

当数据到达B这把之后,就会发生下面一系列的步骤

(1)物理层

B的物理层接收到 交换机/路由器 转发过来的光信号,就会将其转化成二进制数据,然后将其交给数据链路层。

(2)数据链路层

在数据链路层这里,拿到的数据是物理层转发过来的,大概是下面这样子。

而这边的数据链路层,不再是加上帧头和帧尾,而是解封装;也就是会根据以太网协议,将帧头和帧尾去掉,变成下面的载荷数据,从而交给网络层。

(3)网络层

网络层也就是拿到上面的数据

接下来,网络层也会根据IP协议,对载荷数据进一步解封,也就是会将IP报头去掉,取出真正的载荷,从而交给传输层。

(4)传输层

传输层拿到的就是网络层传送过来的数据

传输层就会根据UDP协议,进一步解析数据(关键的端口号),并将UDP报头去掉,进而交给应用层。

(5)应用层

最后,qq应用程序就拿到了下面的数据包。

将其进一步解析,拿到结构化的数据,并进行反序列化,拿到最终的数据。

相关推荐
勤奋的凯尔森同学3 小时前
webmin配置终端显示样式,模仿UbuntuDesktop终端
linux·运维·服务器·ubuntu·webmin
丁卯4043 小时前
Go语言中使用viper绑定结构体和yaml文件信息时,标签的使用
服务器·后端·golang
chengooooooo3 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
人间打气筒(Ada)5 小时前
MySQL主从架构
服务器·数据库·mysql
落笔画忧愁e6 小时前
FastGPT快速将消息发送至飞书
服务器·数据库·飞书
小冷爱学习!6 小时前
华为动态路由-OSPF-完全末梢区域
服务器·网络·华为
技术小齐7 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
ITPUB-微风7 小时前
Service Mesh在爱奇艺的落地实践:架构、运维与扩展
运维·架构·service_mesh
落幕7 小时前
C语言-进程
linux·运维·服务器
逸狼7 小时前
【JavaEE进阶】Spring MVC(3)
spring·java-ee·mvc