目录
一、网络初识
- 网络发展背景:单机阶段 -> 局域网阶段 -> 广域网阶段 -> 移动互联网阶段
- 局域网:把一些设备通过交换机或者是路由器连接起来
- 广域网:把多个局域网相互连接起来
- IP地址:描述一个主机在互联网上的具体位置
- 端口号:区分一个主机上的应用程序
二、协议
1、什么是协议
白话来说:协议,就是 "约定" ,发送方约定他发送数据是啥样的格式,接收方也得理解这个格式,两边对上号才能够进行正确的通信
2、协议的特性
协议之间是分层关系的,约定了层级与层级之间的调用关系。要求上层协议调用下层协议,下层协议给上层协议提供支持,不能跨层调用(方便管理)
3、协议分层的好处
1、分层之后就可以做到,层次之间,耦合程度比较低,上层协议不必了解下层协议的细节,下层也不必了解上层的细节
2、方便对某一层协议进行替换
三、TCP / IP五层网络模型
- 应用层:关注传来的数据要干啥用
- 传输层:不考虑中间路径,只关注起点和终点
- 网络层:负责两个遥远节点之间的路径规划
- 数据链路层:关注两个相邻节点之间的传输
- 物理层:网络通信的基础设施,网线,光纤,网络接口(网络上的高速公路)
在协议分层的背景下,如何通过网络传输
封装 & 分用
发送方发送数据,要把数据从上到下,依次交给对应的层次协议,进行封装
接收方收到数据,要把数据从下到上,依次交给对应的层次协议,进行解析
以QQ发送消息为例简单说明
发送方:妈妈,生日快乐!
1、应用层(QQ应用程序)拿到上述用户数据,进行封装,封装成应用层数据包【本质上就是字符串的拼接】
2、传输层拿到上述数据,应用层要调用传输层提供的API来处理这个数据,最典型的协议就是TCP和UDP(以UDP为例)
3、传输层到网络层,此时UDP数据包已经有了,接下来就是要把这个数据包交给网络层协议,最常见的就是IP协议
4、网络层交给数据链路层,最典型的协议是以太网(数据链路+物理层)
mac地址,也叫做物理地址,也是描述一个主机在网络上的位置
IP用来进行网络层的路径规划,mac用来进行描述数据链路层,两个即将进行传输的相邻节点
5、数据链路层要把上述以太网数据帧交给物理层,物理层要把上述0101的二进制数据,转换成光信号/电信号/电磁波信号,进行传输了
上述介绍的是数据的封装,接下来介绍数据的分用
接受的过程和上述过程刚好相反
发送,从上到下,依次封装,新增报头
接收,从下到上,依次分用,去掉报头
1、物理层,网卡,收到高低电平二进制数据,就会对这里的信号进行解析,还原成0101这样的二进制数据
2、从物理层交给数据链路层,此时就把上述0101这系列数据当作一个以太网数据帧(此处是从以太网线,收到的数据,就是要交给以太网协议来处理)
把帧头去掉,帧尾去掉,去除中间的载荷,再往上交给网络层,以太网数据帧帧头中有一个消息类型,根据整个类型就可以知道是网络层的IP协议
3、网络层
此时就由我网络层的IP协议进行解析数据报,也是去掉IP报头,最重要的就是取出载荷,交给更上层的传输层协议,IP数据报,报头中也有一个字段,标识当前传输层用的是哪个协议
4、传输层
此处是由UDP来解析处理的,还是去掉报头,取出载荷,把数据交给应用层
借助端口号来区分具体的应用程序,每个要接收网络数据的程序都需要关联一个端口号
5、应用层
由QQ这个程序,进行解析应用层数据包,取出数据字段,放到程序的界面中
真实的网络环境中,数据的传输中间可能要经历很多节点进行转发