目录
三、如果我的文章能帮助到你,请点个赞鼓励一下吧ヽ(✿゚▽゚)ノ
前言:
TCP/IP协议是网络通信的基础,在如今这个万物互联的时代,不管是裸机、还是搭载实时操作系统嵌入式设备,亦或是部署操作系统的手机电脑,绝大部分都需要进行网络通信,可以说,网络编程已经成为工程师的必修课,而实现网络通信的方式也五花八门,外挂模块、lwIP、WIFI、Socket、4G/5G等等,这些东西一度让长颈鹿感到眼花缭乱,无从下手。于是长颈鹿花时间理清了他们的关系,如果你也感到困惑,那就跟随长颈鹿的步伐,一起来对齐颗粒度。
首先需要明确一点,不管是什么方法,要实现互联网网络通信,都绕不开一个基本盘------TCP/IP协议,这是实现网络通信的基础,包括我们所熟知的WIIF、5G、以太网等等,都只是基于TCP/IP协议实现网络连接的不同体现方式,属于TCP/IP架构的某一个层次,接下来,长颈鹿就简单介绍一下TCP/IP的四层架构划分和对应的功能。
一、TCP/IP协议的四层架构
|-------|-----------------------------------------------|-------------------------------------------|
| 层次 | 核心任务与协议 | 功能比喻 |
| 应用层 | 面向具体任务,定义数据格式和交互逻辑; HTTP、DNS、SMTP、MQTT。 | 写信的内容和格式 (例如,用中文写一封信,还是用JSON格式请求一个天气数据) |
| 传输层 | 提供端到端的通信校准控制,区分同一主机上的不同应用; TCP(一对一)、UDP(一对多)。 | 邮递服务与包装方式 (TCP如挂号信,保证送到;UDP如平信,只管寄出) |
| 网络层 | 负责逻辑寻址和跨网络的路由,将数据包从源主机传输到目标主机; IP。 | 规划送信路径 (根据收件人地址,决定这封信要经过哪些城市和邮局中转) |
| 网络接口层 | 负责在同一物理网络内的设备间进行帧的传输和介质访问控制; WIFI、以太网、4G/5G等 | 本地送货与交通规则 (把信装入本地邮局的信封,并规定用汽车还是飞机送到下一个邮局) |
二、架构分层功能介绍
1、应用层:
这是架构的最顶层,负责处理特定的应用程序数据细节。
在这一层,会按照特定协议对数据进行封装(发送)或解析(接收),常见的应用层协议包括:HTTP(用于网页显示)、FTP(用于大文件传输)、SMTP(简单邮件传输协议,用于电子邮件发送)和DNS(Domain Name System,域名IP地址转换)等
应用层关注于用户在互联网上做什么事,例如用户在浏览网页,那此时的应用层协议就包括DNS(域名解析服务)+HTTP(网页显示服务),如果用户在发送邮件,那么此时应用层的协议就是DNS+SMTP(邮件传输协议),如果用户在打游戏,那么此时的应用层可能会使用自定义协议,例如英雄联盟和原神,都是采用自定义应用层通信协议+基础协议的方式来进行数据快速传输。
2、传输层:
传输层主要负责端到端的通信,提供进程间的数据传输服务。主要功能包括:
-
端口寻址(通过端口号标识应用程序)
-
数据分段/重组(TCP:分段;UDP:数据报)
-
连接管理(TCP的三次握手、四次挥手)
-
可靠性保证(TCP的确认、重传、排序、流量控制、拥塞控制)
该层由TCP和UDP协议组成,TCP协议是一对一通信协议,确保数据能够准确可靠的传输到目的地,像是快递服务,需要签收确认(ACK),保证顺序到达(序列号),可以追踪包裹状态,适合重要文件传输。
UDP支持多种通信模式,单播(一对一)、广播(一对所有)、多播/组播(一对多),像是明信片投递,投递后不确认是否收到,可能丢失或乱序,快速但是廉价,适合实时性要求高的场合。
3、网络层:
网络层主要负责数据在互联网的传输路径选择,确定唯一源地址和唯一目的地址。该层主要功能如下:
1、逻辑寻址(为每台主机分配IP地址(IPv4/IPv6),屏蔽物理网络差异)
2、路由选择与转发(基于路由表(静态配置/动态协议如OSPF/RIP/BGP)计算最优路径,UDP支持单播、广播、组播三种传送模式)
3、数据分片与重组(当IP包超过路径中最小MTU时,路由器分片;目的主机重组)
4、网络互联(连接异构网络(以太网、ATM等),实现"网络的网络")
5、拥塞控制与流量管理(通过流量整形、路径优化避免网络过载)
6、差错辅助机制(依赖ICMP报告传输异常(如目标不可达),但不提供端到端可靠性(可靠性由传输层TCP保障))
4、网络接口层:
网络接口层位于最底层,功能上整合了OSI模型的数据链路层和物理层,依赖软件(驱动、固件、协议栈等)和硬件(网卡、基带模块等)协同实现,包括WIFI、4G、以太网等不同网络通信形式,将各种信号(无线电、光信号等)转换成可被设备识别的电信号。核心功能如下所示:
- 首先是帧封装/解析(将IP数据报封装为帧(添加目的/源MAC、类型字段、FCS校验码),接收端解封装后上传IP层。)
- 物理寻址(使用48位MAC地址标识局域网设备;例外:4G链路层使用PPP协议,无MAC地址概念)
- 介质访问控制(以太网:CSMA/CD;Wi-Fi:CSMA/CA;避免共享介质冲突)
- 错误检测(通过FCS/CRC校验帧完整性,错误帧直接丢弃(重传由上层处理))
- 协议适配与统一接口(为IP层屏蔽底层差异:以太网(IEEE 802.3)、Wi-Fi(802.11ac)、PPP(4G/拨号)、SLIP等)
数据在网络中的发送和接收都需要不断地"封包"、"拆包",在不同的功能架构层对用户数据做不同的处理,这一切都是为了保障数据能够安全、稳定的到达目的地,每一次都使用下一层的协议来完成自己的需求。以Linux操作系统为例,内核中已经完成实现了TCP/IP协议栈,开发者大部分时间都在应用层工作,调用封装好的Socket套接字就能够实现网络通信,下层的具体协议实现细节往往不需要操心。