【网络】网络分层架构

【网络】网络分层架构

本文介绍了网络分层架构的原因和各层职责

TCP/IP模型是实际应用中广泛使用的网络分层架构,它将网络通信分为四个层次:

  • 网络接口层:对应于OSI模型的物理层和数据链路层,负责将数据帧从一个网络节点传输到另一个网络节点。
  • 网络层:与OSI模型的网络层功能相同,负责在不同网络之间进行路由选择和数据包转发。
  • 传输层:与OSI模型的传输层功能相同,提供端到端的可靠数据传输服务。
  • 应用层:对应于OSI模型的会话层、表示层和应用层,为用户提供各种网络应用服务。

网络分层架构的优点包括:

  • 模块化设计:每个层次都有明确的功能和接口,便于设计、实现和维护。
  • 独立性:各层次可以独立发展和更新,互不影响。
  • 易于理解:分层架构使得网络通信的过程更加清晰和易于理解。
  • 灵活性:可以根据需要在不同层次上添加或修改功能。

通过这种分层架构,网络通信变得更加有序和高效,不同层次的技术可以协同工作,为用户提供可靠的网络服务。

网络分层架构

为什么要分层?

从客户端到服务器的各节点

tcpip_layer

网络不稳定,所以需要分层。

比如客户端往服务端发起请求的过程中,中间某个节点如果损坏,客户端需要知道信息没发过去,再次发起重传。 但是如果很大的数据,就会传很多次,原本50ms的时间,可能需要传2s才能完成。解决:把这个大的数据切成5块,这5块分别来传,先把能传成功的全部发过去,如果检索到某一块没有收到,再把对应的块给传过去,就只需要多发20%,效率比较高。

http

分层:有分块传输所以需要分层。上层通信协议众多,http, ftp, mqtt等都有这种分块的需求。所以把包的分发这个工作专门抽出来一层。上层不管传输了,他们只需要把所有要传的数据准备好,再丢给下层TCP去处理。

那么有TCP了,为什么还要往下拉一层?

TCP叫传输层,用来传东西,其注重数据完整性。

tcp

但是并不是所有数据我们都需要重传,比如CS枪战游戏数据,如果网络卡顿了,这个数据不能再重传了,只需要不断将最新的数据传输过去就行了。这种需求所产生的协议叫UDP,强调传输性能而不是传输的完整性。

这两种协议又都有网络的需求,都需要从一个主机找到另一个主机。

TCP现在也不去传了,只是将数据分块,并全部按顺序的传输,并检测。UDP也一样,只管分块,不用管传输完整性与顺序。

ip

而下一层的IP只管闷头传,负责寻址,找路由,上层有什么东西丢下来就直接传过去。

阶段小结:这三层都是共同的目的,将数据从一个地方传到另一个地方。 分层原因都是网络不稳定 ,如果网络稳定,所有东西都可以一次性到达,那就不需要这么麻烦了。

数据链路层:这层就是实际的网络,以太网,比如网线,WIFI。其为网络提供显示的实质的支持。

link

另外还有七层网络模型,它把数据链路层分开了,数据链路层和物理层。物理层为网线,交换器。

具体的分层:

  • Application Layer 应⽤层:HTTP、FTP、DNS
  • Transport Layer 传输层:TCP、UDP
  • Internet Layer ⽹络层:IP
  • Link Layer 数据链路层:以太⽹、Wi-Fi

对于应用层工程师来说,可以只关心这四层模型。

TCP连接

什么叫连接?

TCP是有状态的,他有很多小包需要发送。先建立起第一步通信,来共同确认数据传输包该怎么拼。

连接建立:

tcp_connection

连接的关闭:

blogs_tcp_disconnect.png

长连接

为什么需要长连接?

首先了解内网,一个网关,其内部有很多的主机,某个主机需要和外部的主机通信,网关会先开一个端口,走这个端口和外界主机通信。内网的主机所占用的端口实际是网关的端口。例如,我们的手机网络都是运行在运营商的内网里面的。 长连接:网关给内部主机开端口通信,需要耗费资源的。当内部主机一段时间里没有进行数据通信,网关会把这个端口给关闭掉。那么过一会,当外部主机再走这个端口想要通信时,就连不上了,网路就断了。为了突破这个限制,让网关不去主动关掉这个端口,就需要定时地通信一次,这就是心跳,实现长连接的方式。网关发现这个端口一直在用,就不会将这个端口给关掉了。 长连接很复杂,需要了解的东西相当多,实现很难。