1.基本概念
网络通信就是发送数据、接收数据、处理数据的过程,发送数据时要读数据进行处理(封装),接收数据时也要对数据进行处理(分用),
1)封装
对数据进行加工处理,如添加报头或报尾;
2)分用
对封装后的数据进行处理,提取出源数据,即封装的逆向过程。
3)结构化数据
类似于C语言的结构体;
4)序列化、反序列化
序列化:发送数据时,将结构化数据转化为字符串/二进制bit流;
反序列化:接收数据时,将字符串/二进制bit流转化为结构体数据;
2.封装的基本流程
封装发生在发送数据时,现有一段数据,要从一台设备发送到另一台设备,数据如下:
1)应用程序获取到这个原始数据后,就会将其转化为应用层数据包(结构化数据),并且这个数据包要遵守应用层协议;
2)应用程序调用传输层接口,将数据包交给传输层,传输层有两个主要的协议:TCP(重点)和UDP,下面以TCP协议展开讲解;
传输层在应用层数据包的前面加上TCP报头,那么原来的应用层数据包就变为TCP载荷,TCP报头和TCP载荷就构成了TCP数据段;
在TCP报头中,包含了源端口和目的端口;
3)传输层封装完成之后,调用网络层接口,将数据段发送给网络层;
网络层的核心协议是IP协议;
网络层在TCP数据段之前加上IP报头,剩下的TCP数据段就成为IP载荷,IP报头与IP载荷共同构成了IP包;
在IP报头中,包含了源IP和目的IP,
4) 网络层调用数据链路层接口,将IP数据包发送给数据链路层;
数据链路层的主要协议为以太网协议;
数据链路层在IP数据包前面加上以太网报头,在IP数据包后面加上以太网报尾,原来的IP数据包就成为以太网载荷,以太网报头、以太网载荷、以太网报尾构成了以太网数据帧;
5) 以太网将以太网数据帧交给硬件设备(网卡),将上述的二进制数据通过光信号、电信号、电磁波信号的方式发送出去。
3.分用的基本流程
根据基本概念中可以知道,分用就是封装的逆过程,当主机接收到数据后,对数据进行逐层解析。
1)主机获取到信号后,先将光信号/电信号转化为二进制数据,再将二进制数据发送给数据链路层;
2)数据链路层按照以太网报头中的协议对数据进行解析,将以太网报头、报尾取出来,将剩下的载荷发送给网络层;
注意:以太网的报头中也专门的属性,描述了网络层使用那个协议。
3)网络层接收到数据后,按照IP报头中的协议对数据进行解析,再将IP载荷发送给传输层;
注意:IP报头中也有专门的属性,描述了传输层使用那个协议。
4)传输层接收到数据后,按照TCP/UDP协议对数据进行解析,再将TCP/UDP载荷发送给应用层;
注意:TCP报头中含有目的端口号,告知数据将交给哪个应用程序。
5)对应的应用程序拿到数据后进行解析,获取关键数据,展示到界面上,给出提示。
注意:不同的应用程序使用不同的协议对数据进行解析。
4.数据的传输过程
数据在传输的过程中,也会涉及到封装分用。
交换机只需要封装分用到数据链路层即可,路由器只需封装分用到网络即可,防火墙/网关封装分用到传输层(很少用到)
1)主机的数据->交换机
交换机获取到数据后,先进行物理层解析,再进行数据链路层解析,构造出新的以太网数据帧,发送到下一个设备;
2)主机的数据->路由器
路由器收到数据后,物理层解析、数据链路层解析、网络层解析,再构造出新的网络数据报、以太网数据帧、二进制数据,再进行转发。