网络原理
IP地址
标识网络一台设备所在的位置如:127.0.0.1,这是本机设备的ip地址
端口号
一台主机可能有多个程序在使用网络,此时我们就需要端口号区分这些程序收发的信息
协议
用于通信双方发送接收数据格式的约定,是网络通讯的关键,就如同我们的语言一般,都说普通话,能让对方听得懂,亦或者外国说的英语,这就相当两套通信协议
五元组
在进行网络通信的时候会涉及到五个关键的信息,我们称之为五元组
分别是源IP、源端口、目的IP、目的端口、协议类型
协议分层
网络通信非常复杂,如果我们一次性实现通信中全部方面,那么这个协议会显得复杂臃肿,因此我们可以将其拆分成小的协议,每个协议负责单一功能。
但拆分过后的协议过多,我们又要将其归类,于是出现了协议归类分层。
定义:相邻的两层协议之间可以相互交互,上层协议可以调动下层协议,下层协议可以给上层协议提供服务,不能跨层运行。
协议分层有以下特性:
封装:上层协议不需要了解下层协议的细节
解耦合:分层之后,替换掉其中的某一层对整个协议的影响不会产生过大的影响
OSI七层网络模型
OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。实际上经过了简化后,也叫做TCP/IP五层(四层)协议模型。
1:物理层:规定了网络通信中一些硬件设施的使用要求。
2:数据链路层:用于邻的两个设备之间的通信请求,通过网线链接路由器/交换机。
3:网络层:关注两个设备之间的通信,选择中间经过的路由器/交换机(只考虑中间过程)。
4:传输层:关注于两个设变之间的通信,但只看起点和终点(不考虑过程)。
5:应用层:对应于设备拿到了信息后的使用。
主机
工作范围主要 从物理层->应用层,满足应用程序的网络通信需求。
路由器
工作范围主要 从物理层->到网络层,组件局域网,进行网络数据包的收发。
交换机
工作范围主要 从物理层->数据连接层,提供硬件支持。
网络通讯基本流程
封装
1:应用程序获取用户的输入,构建一个应用层的数据包。
这个应用层的数据包会遵守应用层协议,这个应用层协议往往是程序员自己定义的
2:应用程序调用传输层提供的接口(API)把数据包传输给传输层,拿到数据后,构建出一个传输层数据包。
在传输层上,协传输层议有两:TCP和UDP
TCP数据包=TCP报头(header)+TCP载荷(payload)
3:传输层构建好数据包后,调用网络层的api,把数据包交给网络层,在网络层中处理。
网络层协议主要是IP协议,IP协议会对上述的数据包进行进一步加工,拼上IP报头:
IP数据包= IP报头+IP载荷(包含了整个传输层的数据包)
4:IP协议继续调用数据连路层的api,把ip数据包交给数据连路层,在数据连路层,以太网协议会继续在网络层的数据包上加工。
以太网数据包 = 以太网报头+荷载(包含整个上述数据包)+以太网报尾
5:以太网继续将数据包交给硬件设备网卡,网卡把上述二进制数据最终以光/电/电磁波信号传播出去。
将其展现出来应该是:
以太网的报头+IP报头+TCP报头+应用层的数据包+以太网的报尾
以上就是封装的过程。相同的,接受过程则是反着来的你想过程。叫做分用
分用
1:数据达到接收方发网卡,网卡把光电消信号还原成二进制,再把二进制数据上交给上层数据链接层。(物理层的信号数据和数据链路层是之间关联)
2:数据链路层会按照以太网协议将收集到的数据进行解析,把其中以太网的报头和报尾取出,再往上传递给网络层。在以太网中帧头中,有专门的属性,告诉网络层使用哪个协议。
IP报头+TCP报头+应用层的数据包
3:网络层拿到后按照IP协议的格式解析,再将载荷传交给传输层:
TCP报头+应用层的数据包
同样,在IP报头中也有专门的属性,告诉传输层使用哪个协议。
4:传输层拿到数据后,按照TCP协议解析,取出载荷(应用层数据包)交给应用层。
应用层的数据包
在传输层会通过目的端口号告知数据传给哪个应用程序。
5:应用层将数据包传递给对应的软件解析数据包,得到传输过来的信息。
交换机与路由器
交换机在封装和分用中只需要用到数据链路层。
主机的数据传输给交换机,交换机会通过物理层和数据链路层逐步解析,重新构建一个以太网数据帧,发送到下一个设备的数据链路层。
路由器收到主机发送的数据时,会通过物理层、数据链路层、网络层解析,重新生成一个网络数据包,构造出以太网数据帧,进行二进制转换转发出去。