一文读懂TCP/IP网络分层模型

网络模型有国际标准化组织定义的OSI七层网络模型和实际使用的TCP/IP五层网络模型。本文从应用开发的角度介绍TCP/IP网络模型,帮助大家更好的理解。

  • 一、为什么要分层?

下图是一个简化版的典型的网络模型图。客户端发送的数据可以有很多条路径到达服务器。并且数据传输中经历的节点、路径是完全无法控制的。

如果某个节点损毁,客户端需要被及时通知到,并进行重传。而在现实网络中,传输失败是一定存在的。一个包含很大数据量的消息,重传的开销会很大,并且传输失败的概率也会更高,因此需要将数据进行分块传输。

因为需要重传、需要分块,因此需要分层来处理这些事务。因此网络体系分层的本质原因,就是网络的不稳定

  • 二、具体分层

TCP/IP从上到下分为应用层、传输层、网络层和数据链路层。

应用层协议有HTTP、DNS、FTP、SMTP等。它们就是和应用打交道。所接触的数据都是完整的。

这些应用层协议需要发送数据都有一个共同的需求:数据分块。因此我们将这个功能的功能提取出来,形成传输层。

传输层主要将应用层丢过来的数据进行分块传输。并在接收数据时,将这些分块的数据拼装成完整的包,提交给上层协议。

这一层主要有TCP和UDP两种协议。

TCP是面向连接的协议,它通过建立连接、重传机制、数据排序、流量控制等特性保证数据稳定的传输。

UDP是无连接的协议,比如直播、打游戏,在网络环境不好时,丢掉几帧数据,是可以接受的。它只要负责将数据分块发出去即可。

传输层根据实际业务的不同而分出这两种策略。但是这两种策略也有共同的功能----传输数据。将这个功能提取出来,形成网络层。

网络层的功能,只负责数据的收发。上层有数据下来就发,收到数据就交给上层。数据编号、拆分、组装一概不管。它所要做的就是路由、寻址的事情。

我们知道现实世界的网络是由不同的硬件设备:网线、路由器、终端等等组成的实体网络。数据链路层,主要处理这些实体设备的通讯协议。

经过上面的分析,理想网络下只需要应用层和数据链路层就可以完成网络通讯。正是因为网络是不稳定的,而引入了传输层和网络层。让我们的数据能够在不稳定的网络环境中,进行稳定的传输。

三、TCP 长连接

长连接就是长时间保持连接。我们可能暂时没有数据要发送,未来某一时刻要发送数据,避免重复建立连接产生开销,而保持TCP连接先不释放。

但是,运营商在发现TCP连接长时间没有发送数据时,会主动帮我们断掉,以释放资源。要保持长连接就定期发送一小段无意义的数据,让运营商认为数据传递还在发生。这种方式就叫“心跳”。这就是我们保持长连接的技术。

关于“心跳”发送频率的设定是一个非常复杂的问题。因为发送的太频繁会产生额外开销,而发送频率不够又会被运营商切断连接。这需要我们对运行商和网络架构都非常熟悉,让连接存活性和网络功耗达到平衡。

### 全面深入理解 TCP/IP 协议 #### 一、TCP/IP 协议概述 TCP/IP 是一种用于实现计算机之间通信的协议集,支持不同类型的网络设备之间的互连互通。该协议最初由美国国防部高级研究计划局 (ARPA) 开发,旨在创建一个可靠的分布式网络系统[^3]。 #### 二、TCP/IP 四层模型详解 TCP/IP 模型分为四个层次:应用层、传输层、网际层以及链路层。每一层都有特定的能和服务: - **应用层**:负责处理应用程序间的交互逻辑,常见的有 HTTP, FTP 和 SMTP 等协议; - **传输层**:提供端到端的数据传送服务,主要包含两个子协议——面向连接的 TCP 及无连接的 UDP; - **网际层**:也称为 IP 层,负责路由选择和包转发能,确保数据能够跨越多个网络到达目标地址; - **链路层**:管理物理介质上的帧交换过程,涉及 MAC 地址寻址机制等[^2]。 #### 三、TCP 首部结构分析 TCP 报头包含了源端口、目的端口号、序列号等多个字段来保证可靠性的特性。具体来说, | 字段名称 | 含义 | |--------------|------------------------------------------------------------| | Source Port | 发送方使用的端口号 | | Destination Port | 接收方监听的服务端口号 | | Sequence Number | 当前字节流中的第一个字节编号 | | Acknowledgment Number | 下一个期望收到的数据位置 | | Data Offset | 表示头部长度 | | Reserved | 保留位 | | Flags | 控制标志(URG/ACK/PUSH/RST/SYN/FIN),用于指示特殊操作 | | Window | 告知对方窗口大小 | | Checksum | 对整个报文进行校验 | | Urgent Pointer | 如果设置了 URG,则此指针指向紧急数据的第一个字节 | 这些信息共同作用于建立稳定高效的会话连接并保障数据完整传递给上层应用[^1]。 #### 四、三次握手与四次挥手流程说明 为了建立起一条完整的双向通讯路径,在客户端发起请求之前需要经历所谓的 "三次握手" 过程;而在结束对话时则需执行 “四次挥手”。以下是具体的步骤描述: ##### 三次握手 1. 客户端向服务器发送带有 SYN 标志置为 1 的初始同步消息,并随机生成 ISN 序列号 X。 2. 服务器接收到后回复 ACK=Y+1 并附带自己的 ISN Y 给客户端确认已接收。 3. 最终客户再次回应 ACK=X+1 来完成整个初始化阶段。 ##### 四次挥手 当任意一方想要终止当前链接关系时, 1. 主动关闭方向发出 FIN 请求表示不再发送更多数据。 2. 被动关闭方返回 ACK 承认断开指令已被接受。 3. 若被动侧也有未完成的任务,则可继续发送剩余部分直至全部完成后同样提出FIN申请。 4. 主动关闭者最后给予肯定答复即完成了整个拆除动作。 以上就是关于TCP/IP协议较为详细的介绍
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值