为了使全球范围内不同的计算机厂家能够相互之间能够比较协调的进行通信,这个时候就有必要建立一种全球范围内的通用协议,以规范各个厂家之间的通信接口,这就是网络七层模型的由来 。本文首先会对网络七层模型的功能进行介绍,然后会讲解传输层的两个重要协议:TCP和UDP协议,并且会着重讲解TCP协议中的三次握手和四次挥手的过程 。
1. 网络七层模型
关于网络七层模型,我们首先以一个图例来展示其功能:
文章插图
- 应用层:主要指的是应用程序部分,比如我们的JAVA程序,应用层所产生的数据成为应用层数据,典型的应用层协议,比如有HTTP协议,dubbo的rpc协议,这些都是由我们的应用层程序自己定义的;
- 表示层:这一层主要是对应用层的数据进行一些格式转换,加解密或者进行压缩和解压缩的功能;
- 会话层:会话层的主要作用是负责进程与进程之间会话的建立、管理以及终止的服务;
- 传输层:传输层提供了两台机器之间端口到端口的一个数据传输服务,因为应用层、表示层和会话层所针对的都是某个应用进程,而进程是和端口绑定的,但是同一台服务器上是可以有多个进程的,因而传输层提供的就是这种不同的端口到端口的访问,以实现区分不同进程之间的通信服务 。在传输层最典型的协议有TCP和UDP协议,TCP提供的是面向连接的、可靠的数据传输服务,而UDP则是无连接的、不可靠的数据传输服务 。在上面的图中我们也可以看出,经过传输层之后,数据会被加上TCP或者UDP头部,用以实现不同传输层协议的功能;
- 网络层:传输层提供的是同一台主机上的端口到端口的传输服务,而网络层则提供的是不同主机之间的连接服务,最典型的网络层协议就是IP协议,网络层会将当前的数据包加上一个IP头部,从而实现目标机器的寻址;
- 数据链路层:这一层是承接软件和硬件的一层,由于其会将当前的数据报发送到不稳定的物理层硬件上进行传输,因而为了保障数据的完整性和可靠性,数据链路层就提供了校验、确认和反馈等机制,用以提供可靠的数据报传输服务;
- 物理层:物理层的主要作用就是将0101这种二进制的比特流数据转换为光信号,用以在物理介质上进行传输 。
另外,网络七层模型是一种比较理想化的模型,现在应用比较广泛的是网络五层模型,五层模型与七层模型的主要区别在于将应用层、表示层和会话层统一划分到应用层中了,由应用程序实现其相关的功能 。
2. TCP与UDP
在我们的应用开发过程中,我们其实不需要太过于关注底层相关的功能,这些只需要相关的服务提供商提供相应的功能即可 。不过在传输层之中,我们需要特别关注一下现在广泛使用的两个协议:TCP和UDP协议 。这两个协议之间的主要区别如下:
TCPUDP面向连接无连接提供数据可靠保证不提供数据可靠性保证速度相对较慢速度较快占用资源较多占用资源较少
关于TCP和UDP,可以看到,这两个协议各自分别有非常鲜明的特点:TCP虽然占用资源较多,速度相对较慢,但是提供了可靠的数据传输服务,这在大多数的互联网业务中是非常必要的;而UDP虽然不提供可靠性的数据保证,但是其速度非常快,而且占用资源较小,这在一些对数据可靠性较低的场景中是非常有用的,比如音视频服务,物联网数据上报服务等等,这些情况下,数据丢失一两帧都是可以接受的 。
TCP和UDP在资源占用上的区别,不仅体现在数据传输方式上,还体现在了数据的传输格式上 。对于数据传输方式,TCP每次发送数据的方式都是按照时间窗口的方式一个数据报一个数据报的发送,并且需要等待每个数据报都给数据发送方响应ACK,这个时候才会发送下一个数据窗口的数据,如果当前窗口内有任意一个数据报没有发送成功,那么整个窗口内的数据都会重新发送;而UDP则没有窗口的概念和对应的ACK机制,其获取到每一个数据报之后,都只是简单的为其封装UDP协议头,然后将其发送出去,其不会管这个数据是否发送成功,因而UDP传输比TCP是要快很多的 。对于数据传输格式,这里我们以TCP和UDP的数据报的格式进行讲解,如下是TCP的数据报格式:
推荐阅读
- Android网络编程-TCP/IP协议
- 网络密钥交换与公钥分发的方法
- 一文了解网络交换机的6种命令配置模式
- 你的网络信息是怎么泄露的?这四个陷阱了解下
- 公司网络慢如何解决,怎样诊断网络卡的原因
- 怎么设置共享网络打印机 网络打印机怎么设置
- 5G网络和4G网络流量消耗一样吗?不知道的看这里
- 当手机无法连接到移动网络 , 这几种“方法”值得一试
- 电脑网络维护维修基础知识,及常见故障的解决思路
- 一篇比较完整的网络问题解决方案