Bootstrap

网络初始(网络通信基础及网络数据传输基本流程)


前言


一、网络初始

网络互连:将多台计算机连接在一起,完成数据共享。
局域网LAN,广域网WAN
局域网和广域网并没有一个明确的界限,
当局域网中,设备数量非常多,局域网空间跨度特别大,就可以称为广域网了。

交换机和路由器

搭建网络的时候,需要用到交换机和路由器
路由器上,有lan 口, wan口。
虽然路由器只有4个lan口,1个wan口。
实际上组建的局域网,可以有更多的设备,就可以用到交换机,
交换机的口不分lan和wan的.所有的口都是等价的,可以有多个口。

在这里插入图片描述
路由器和交换机如何把网络互连:

在这里插入图片描述
一个复杂的网络组件大概如下:
在这里插入图片描述

二、网络通信基础

认识一些网络中的基础概念

1.IP地址

使用ip地址,来描述网络上的一个设备所在的位置。

2.端口号

端口号区分一个主机上不同的应用程序。
一个网络程序,在启动的时候,都需要绑定一个或者多个端口号,后续的通信过程都需要依赖端口来进行展开的。(mysql默认绑定的端口3306)

3.认识协议(学习网络的核心内容)

描述了网络通信传输的数据的含义.
协议就只是表示一种约定.这样的约定可以是任意的。

但网络发展这么多年了,很多细节,都已经有大佬,规定出现成的协议了。咱们做的主要就是学习大佬们已经约定好的协议是啥。

为啥要约定好这么一份统一的协议??
在这里插入图片描述

协议分层

1.网络通信,是一个比较复杂的工作。
会涉及到一系列非常繁琐,非常细节的工作。
靠一个协议解决所有问题,导致这个协议非常复杂,非常庞大。

2.于是就对这些协议进行分类,分层。避免跨层级调用引起的混乱。
注意:上层协议,调用下层协议。下层协议,给上层提供服务支持
也就属于是给这些协议搞了明确的层级关系,避免跨层之间的交互.降低耦合,提高整个系统的可读性。
优点:1)上层不需要了解下层的细节。(封装)
2)灵活的调整/替换某层的协议.

3.协议分层,有两种主要的方式.
OSI七层网络模型(只是在教科书中)
TCP/IP五层网络模型(真实世界的情况)

五层模型(后面网络原理详解)

1.物理层:描述的网络通信中的一些基础设施需要遵守的规范.
(会约定,网线是啥样子,网口是啥样子的)
2.数据链路层:相邻节点之间,数据如何传输.
3.网络层:路径规划
4.传输层:―只关注起点和终点,不关注中间过程。(数据从哪里出发,要到哪里去)(重点)
5.应用层:拿到这个数据具体要用来干啥.(重点)

TCP/IP五层(或四层)模型
算上物理层,就是五层.不算物理层,就是四层.
物理层是偏硬件的,和软件关系不大.

在这里插入图片描述
驱动程序,是硬件厂商提供的~~驱动程序会和系统内核进行适配.进一步的系统就可以通过驱动来操作硬件了.

二、网络数据传输的基本流程

封装和分用.
以QQ发送消息为例,介绍网络数据传输的基本流程
A把消息通过QQ发给主机B

主机A,从上到下,依次添加报头的过程,称为封装.
(封装就是在打包快递)
主机 B,从下到上,依次解析报头的过程,称为分用.
(分用就是在拆快递)

发送方的情况(主机A)

1.应用层

QQ应用程序,从输入框中获取到你要输入的消息.构造成应用层数据报.(根据应用层协议)。
很多应用程序里会自定义应用层协议。
(QQ使用啥应用层协议??咱们也不知道,得是开发qq的程序猿才知道)
在这里插入图片描述
应用程序,就会调用传输层提供的接口,把上述数据交给传输层进行处理

⒉传输层

传输层协议有很多,其中最主要的是TCP和UDP。
此处假设使用UDP:
上面把数据从应用层传到了传输层,交给了UDP.于是UDP协议就要按照自己的协议格式,生成一个UDP 数据报。
在这里插入图片描述
此时,传输层会把构造好的udp数据报,进一步的交给网络层.

3.网络层

网络层最主要的协议,是IP协议。
IP协议也会根据自己的格式,来构造出IP数据报:
在这里插入图片描述
接下来,还需要继续把数据传输给数据链路层。

4.数据链路层

以太网(平时上网需要插一个网线)
以太网,又会针对IP数据报,进行进一步的封装.再添加上数据头和数据尾在这里插入图片描述
上述这样的数据,还需要进一步交给物理层

5.物理层

硬件设备(网卡)(略)
在这里插入图片描述
到这里,主机A完成了发送过程~~

接收方的情况(主机B)

1.物理层(硬件设备,网卡)

物理层(硬件设备,网卡),收到光信号/电信号/电磁波
需要把收到的信号进行解调,得到了一串0101二进制数据序列
也就是以太网数据帧
在这里插入图片描述
这个数据就要被交给上一层,数据链路层

2.数据链路层

数据链路层的以太网协议,就会针对这个数据进行解析
在这里插入图片描述
此时在把载荷部分取出来,交给上层(IР协议)

3.网络层

IP协议针对这个数据报进行解析.去掉IP报头,取出载荷,进一步的交给传输层
在这里插入图片描述

4.传输层

根据ip报头中的字段,就知道当前这个载荷是一个UDP数据报,交给UDP处理
UDP也是要针对数据报进行解析,去掉报头,取出载荷,进一步的交给应用程序.
在这里插入图片描述

5.应用层

UDP报头中,有一个字段,目的端口.根据目的端口找到关联的应用程序,就交给这个程序即可
qq程序收到这个数据了.就会按照qq的应用层协议,进行解析
在这里插入图片描述

经典(教材中的)的交换机路由器的封装和分用

消息转发到某个设备,每个设备处理流程都是和上面的封装分用是一样的:
经典(教材中的)的交换机路由器的封装和分用:

在这里插入图片描述



总结

;