TCP/IP的五层模型
关于TCP/IP的五层模型(3.2)
这里有关于这个的几个相关网站:
详解TCP/IP网络模型_tcpip模型_·码上修·的博客-CSDN博客
计算机网络【1、基础篇 】-【TCP/IP 网络模型】_画出tcp/ip网络模型_六月的六的博客-CSDN博客
但是这里也会做相关总结。
TCP/IP网络协议模型(五层)的体系结构参考图如下:
1、第一层——物理层
当数据准备要从设备发送到网络时,需要把数据包转换成电信号,让其可以在物理介质中传输,这一层就是 物理层(Physical Layer) ,它主要是为数据链路层提供二进制传输的服务。
2、第二层——数据链路层
一旦数据需要跨网络进行传输,就需要知道数据中所携带的物理地址是属于哪个设备的。于是网络协议模型中需要有一个 专门的层 来标识各种网络中的设备,让数据可以在一个链路中传输。这一层就是 数据链路层(Data Link Layer),它主要为网络层提供链路级别传输的服务。
注: 这里用到的物理地址,原来叫作 链路层地址 ,但是因为第二层主要解决媒体接入控制的问题,所以数据中所携带的物理地址也常被称为MAC(Media Access Control) 地址,于是第二层有时候也会被称为MAC层。
TIPS: 在第二层中有个协议叫
ARP协议
,这个协议可以解决 通过某一设备ip请求该设备mac地址 的问题。因为每一台设备的 网卡 中都会有一个MAC地址,而交换机(二层设备) 可以通过携带下一个目的地的 IP地址,并借由 ARP 协议 对ip所对应目的地(设备)进行ARP请求,通过该设备的ARP应答得到该目的地所对应的 MAC地址,从而使交换机知道这个IP地址属于哪个设备。当然交换机是可以将MAC地址进行记录,以尽量减少计算的过程的,而交换机学习记录后所得出的的结果,我们称为转发表。当然,每个机器的 IP 地址会变,所在的端口也会变,所以转发表是有一定的时间限制的,超过某个时间就会过期。
3、第三层——网络层
数据传输时,寻址的功能由网络层(Internet Layer) 执行。 网络层负责将数据从一个设备传输到另一个设备。网络层也被称为IP层。因为网络层最常使用的协议,就是 IP协议(Internet Protocol)。IP协议会将传输层所得到的报文作为数据部分,再加上IP报文头组成IP报文,如果 IP报文 大小超过一个MTU(Maximum Transmission Unit,也就是最大传输单元,在以太网中,最大传输单元一般为1500字节) 就会再次进行分片。得到一个即将发送到网络的IP报文。
当一个数据包从源设备发出以访问一个IP地址的时候,源设备会先判断此IP跟数据包是不是在同一个网段里面:
如果是同一个网段,源设备会直接将源地址和目标地址放入 IP 头中,然后通过 ARP 协议获得 MAC 地址,之后将源 MAC 和目标 MAC 一并放入 数据帧 的 MAC 头中进行转发。
如果不是同一网段,源设备会将数据包发往默认网关 Gateway。其中 Gateway 的IP地址与源 IP 地址必然是一个网段的,而这里的网关通常是 路由器(三级设备)。与交换机相同的,路由器中也拥有路由表。这表示路由器可以根据数据包里面的目标IP,在路由表中找到这个数据包下一步传输所要跳入的路由IP,然后将这个数据包导航到这个路由IP中。换句话说,当数据包达到一个网络节点时,这个网络节点会通过算法决定这个数据包下一步走哪条路径。其中网络节点可以是网关,路由器,交换机等设备。而当数据包走到最后一跳的时候,目标设备的路由器发现数据包里的目标IP就是自己这个网段的,便会执行上一点所说的操作,通过ARP协议获取目标IP的MAC地址,修改消息包里的目标MAC地址后发过去。之后最终目标设备就能收到这个数据包了。
上文所说过程,一般就被称为:三层转发
。
所以:IP 协议的寻址作用就是告诉我们去往下一个目的地该朝哪一个方向走,路由则是根据【下一个目的地】选择路由器。寻址更像是在导航,路由更像是在操作方向盘。
4、第四层——传输层
作为第四层,传输层(Transport Layer) 为应用层提供网络支持,它主要负责向两个主机中进程之间的通信提供服务。在传输层中有两个传输协议,分别是 TCP 和 UDP。关于TCP以及UDP的安全性等相关说明,具体可参考详解TCP/UDP网络协议_·码上修·的博客-CSDN博客,这里不做太多说明。
TCP 的全称叫做传输层控制协议(Transmission Control Protocol), 是一种面向连接的、可靠的、基于字节流的传输层通信协议。
UDP 的全称叫做用户数据报协议(User Datagram Protocol) , 是一个无连接的传输层协议、提供面向事务的简单不可靠的信息传送服务[1]。
5、第五层——应用层
我们能直接接触到的应用软件等,就处于应用层(Application Layer),换句话说,我们在电脑和手机中所使用的应用软件都是基于应用层上所实现的。那么当两个不同的设备的应用需要通信的时候,应用就会将数据传输给第四层,也就是传输层。所以应用层只会关注为用户所提供的应用功能,而不会去关心数据是如何传输的。不过为了协助进行数据传输,应用层提供了很多传输协议,比如HTTP、HTTPS、DNS、FTP等。
关于HTTP,可以参考详解HTTP协议_·码上修·的博客-CSDN博客。其他不做赘述。