标签:协议 IP 模型 网络协议 传输 分层 传输层 应用层 设备
文章目录
嵌入式设备接入互联网的需求越来越大,要想深层次的理解和应用好网络传输,就不得不挖一下计算机网络模型的老底,从系统角度,对网络应用进行分析,做到心中有数
本文参考《【野火】LwIP应用开发实战指南——基于野火STM32全系列开发板》 和小林的「图解网络 3.0 」 两本书籍,对计算机网络协议和分层模型进行了非常浅显的总结,希望能抛砖引玉,如有纰漏,欢迎指出交流!
网络协议与分层模型
概述
对于同⼀台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信
互联网通信的本质是数字通信,任何数字通信都离不开通信协议的制定,
通信设备只有按照约定的、统一的方式去封装和解析信息,才能实现通信。
互联网通信所要遵守的众多协议, 被统称为 TCP/IP
TCP/IP 是一个协议族,包含众多的协议:
ARP、 IP、 ICMP、UDP、 TCP、 DNS、 DHCP、 HTTP、 FTP、 MQTT 等等
但对于网络应用开发人员,可能听到更多的是其中的应用层协议,比如 HTTP、 FTP、 MQTT 等
这些协议,按照功能可以划分为几个不同的层次
▶️ 为什么要分层?分层的依据是什么?
个人理解,分层在于解耦,不让一个协议过于庞大,简化网络设计的复杂性;通信协议采用分层的结构,各层协议之间既相互独立又相互高效的协调工作。
对于复杂的通信协议,其结构应该是采用层次的。分层的协议可以带来很多便利:
- 灵活性好,当一层发生变化时,只要层间接口不变,则其上下层不受影响;此外,对某一层的服务,还可进行修改,如不同的应用层
- 独立性强,各层只需实现相对独立的功能,更简单、便于实现
▶️ 分层的依据是什么?
- TCP/IP 协议栈中不同协议所完成的功能是不一样的, 某些协议的实现要依赖于其它协议,依据这种依赖关系,可以将协议栈分层
在图1-1中,底层协议为相邻的上层协议提供服务,是上层协议得以实现的基础。
网络分层模型
应用层
网络分层模型的最上层,就是我们能直接接触到的应用层(Application Layer)
电脑、手机使用的应用软件都是在应用层实现的,
当两个不同设备上的应用需要网络通信时,应用就把应用数据传输给下一层——传输层
- 应用层只需要专注于为用户提供应用功能,不用去关心数据是如何传输的
- 应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态
▶️ 应用层主要作用:
应用层决定了你如何应用和处理网络数据,常见的应用层协议有:
DNS、HTTP、 FTP、 MQTT、COAP等
传输层
应用层的数据包会传给传输层, 传输层(Transport Layer)是为应用层提供网络支持的。
▶️ 传输层主要作用:
-
传输层实现了数据包在两个设备应用之间,端到端的传递(应用间数据传输的媒介,帮助实现应用到应用的通信)
但是传输层并不负责将数据从一个设备传到另一个设备,那是网络层的任务
-
传输层解决 网络层中数据包在传输过程中可能会出现的丢包、乱序和重复等问题
在传输层会有两个传输协议, TCP 和 UDP
▶️ TCP协议
TCP 的全称叫传输层控制协议(Transmission Control Protocol)
大部分应用使用的正是 TCP 传输层协议,比如 HTTP 应用层协议
TCP 相比 UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方
▶️ UDP协议
UDP 就相对很简单,简单到只负责发送数据包,不保证数据包是否能抵达对方,但它实时性相对更好,传输效率
也高。
当然, UDP 也可以实现可靠传输,把 TCP 的特性在应用层上实现就可以,不过要实现⼀个商用的可靠 UDP传输协议,也不是⼀件简单的事情。
标签:协议,IP,模型,网络协议,传输,分层,传输层,应用层,设备 来源: https://blog.csdn.net/weixin_43482048/article/details/118859505
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。