网络通信基础概念介绍
局域网LAN
局域网,即 Local Area Network,简称LAN。
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。
局域网是指在一个相对较小的范围内,例如家庭、办公室、学校等地方内部建立的计算机网络。
广域网WAN
广域网则是指覆盖范围更广的计算机网络,通常是跨越城市、国家或者甚至是全球的。
IP地址
通过 IP 地址,来描述网络上的一个设备所在的位置。
端口号
区分一个主机上的不同应用程序。
一个网络程序,在启动的时候,都需要绑定一个或者多个端口号,后续的通信过程都需要依赖端口来进行展开的。mysql 默认绑定的端口3306
认识协议
协议就只是表示—种约定。这样的约定可以是任意的。网络通信协议,虽然更复杂,但都是人为约定出来的协议。
网络协议是网络通信经过的所有网络设备都必须共同遵从的一组约定。只有遵守这个约定,计算机之间才能相互通信交流。
协议分层
<1> 分层的作用
网络通信,是一个比较复杂的工作。会涉及到一系列非常繁琐,非常细节的工作…靠一个协议解决所有问题,导致这个协议非常复杂,非常庞大。
因此就需要对协议进行拆分,这么一拆分,拆分出来的协议就有点太多了。
于是就对这些协议进行 分类 - 分层。
分层:
上层协议调用下层,下层协议给上层协议提供服务。从而避免跨层级调用引起的混乱。
给这些协议搞了明确的层级关系,避免跨层之间的交互。降低耦合,提高整个系统的可读性。
<2> 两种主要方式
-
OSI 七层网络模型(只存在于教科书中)
-
TCP / IP五层网络模型(实际环境中)
物理层:描述的网络通信中的一些基础设施需要遵守的规范.
数据联络层:相邻节点之间,数据如何传输.
网络层:路径规划.
传输层:只关注起点和终点,不关注中间过程。(数据从哪里出发,要到哪里去)
应用层:拿这个数据具体要用来做什么
封装和分用
封装和分用都是网络数据传输的基本流程。
主机A,从上到下,依次添加报头的过程 (发送的过程),称为封装。主机B,从下到上,依次解析报头的过程 (接收到过程),称为分用。
以 QQ 发送消息为例,介绍网络传输数据的基本流程。 整个流程可以想象成快递员发快递的过程。
例:主机 A 把消息通过QQ 发给主机 B.
发送方的情况(主机A)
1.应用层
QQ应用程序,从输入框中获取到你要输入的消息。构造成应用层数据报 (根据应用层协议)
注:所谓的"构造应用层数据报"过程,就是按照一定的格式进行字符串拼接。
因为很多应用程序里会自定义应用层协议,所以 qq 用的什么协议咱也不知道。只能假设:发送人QQ号,接收人QQ,时间,消息内容。
应用程序,就会调用传输层提供的接口,把上述数据交给传输层进行处理~~
2.传输层
传输层协议有很多,其中最主要的是 TCP 和 UDP 此处假设使用 UDP.
上面把数据从应用层传到了传输层,交给了UDP。于是 UDP 协议就要按照自己的协议格式,生成一个 UDP 数据报~~
此时,传输层会把构造好的 udp 数据报,进一步的交给网络层。
3.网络层
网络层最主要的协议,是IP协议。
IP 协议也会根据自己的格式,来构造出IP数据报。
接下来,还需要继续把数据传输给数据链路层。
4.数据联络层
以太网,又会针对IP数据报,进行进一步的封装。再添加上数据头和数据尾。
上述这样的数据,还需要进一步交给物理层~~
5.物理层
硬件设备(网卡)
上述数据本质上都是二进制的数据(一组0101构成的)
硬件设备就需要对上述数据进行转换了,转换成 —— 光信号/电信号/电磁波
接收方的情况(主机B)
-
物理层:把收到的 光信号/电信号/电磁波 进行解调,得到一串 0101 二进制数据序列。
解调后得到以太网数据帧,这个数据就要被交给上一层:数据联络层。
-
数据联络层:以太网协议就会针对这个数据进行解析,此时把载荷部分取出来,交给上一层(IP协议)
-
网络层:IP协议针对这个数据进行解析。去掉 IP 报头,取出载荷,进一步的交给传输层。
-
传输层:根据 ip 报头中的字段,就知道当前这个载荷是一个UDP数据报,交给UDP处理。UDP也是要针对数据报进行解析,去掉报头,取出载荷,进一步的交给应用程序。
-
应用层:UDP报头中,有一个字段,目的端口。根据目的端口找到关联的应用程序,就交给这个程序即可。qq 程序收到这个数据了,就会按照qq的应用层协议,进行解析。
每次网络数据的传输都要经历上述过程,主机 A 和主机 B 之间互通消息,会经过很多个交换机或者路由器。
消息转发到某个设备,每个设备处理流程都是和上面的封装分用是一样的。
交换机:分用到数据链路层即可
交换机解析出以太网数据帧,进一步的获取帧头中的“mac 地址”,根据 mac 地址查询交换机内部的转发表,确定接下来数据从哪个网口发出去。在发送之前又会重新把以太网数据帧分装好。
路由器:则是分用到网络层
解析出 IP 数据报,获取到 IP 报头,根据 IP 报头中的目的 IP 进一步规划接下来要走的路线。接下来又会把这个数据重新封装,进行转发。