TCP/IP原理详细解析

ops/2025/3/17 10:39:03/

前言

TCP/IP是一种面向连接,可靠的传输,传输数据大小无限制的。通常情况下,系统与系统之间的http连接需要三次握手和四次挥手,这个执行过程会产生等待时间。这方面在日常开发时需要注意一下。

TCP/IP 是互联网的核心协议族,定义了数据如何在网络中进行传输、路由和接收。其设计遵循分层模型(四层或五层),各层独立工作,通过协议协同实现端到端通信。以下章节是其核心原理的逐层解析。


一、TCP/IP 分层模型

分层核心功能典型协议
应用层提供用户接口和应用程序服务HTTP、FTP、DNS、SMTP、MQTT
传输层提供端到端的数据传输控制TCP(可靠)、UDP(不可靠)
网络负责数据包的路由和寻址IP、ICMP、ARP、OSPF、BGP
链路层管理物理介质上的数据帧传输Ethernet、Wi-Fi(802.11)、PPP

二、网络层(IP 协议)

1. IP 协议的核心功能
  • 寻址:通过 IP 地址(IPv4 32位,IPv6 128位)唯一标识网络中的设备。
  • 路由:根据路由表选择最佳路径,将数据包从源主机传递到目标主机。
  • 分片与重组:根据 MTU(最大传输单元) 拆分大数据包,接收端重组。
2. IP 数据包格式

总体上可分为控制信息,与数据体,控制信息包括原地址、目的地址。 首部校验和是对数据进行校验,以保证数据的可靠性。

| 版本 (4) | 首部长度 (4) | 服务类型 (8) | 总长度 (16)       |
| 标识 (16)        | 标志 (3) | 片偏移 (13)    |
| 生存时间 TTL (8) | 协议 (8) | 首部校验和 (16) |
| 源 IP 地址 (32)                                   |
| 目标 IP 地址 (32)                                  |
| 选项(可选)                                       |
| 数据(Payload)                                    |
  • 关键字段
    • TTL(Time To Live):每经过一个路由器减1,防止数据包无限循环。
    • 协议字段:标识上层协议(如 TCP=6,UDP=17)。
3. 路由机制
  • 静态路由:手动配置路由表。
  • 动态路由协议
    • 内部网关协议(IGP):如 OSPF(基于链路状态)、RIP(基于距离向量)。
    • 外部网关协议(EGP):如 BGP(用于跨自治系统路由)。

三、传输层(TCP/UDP)

1. TCP(传输控制协议)
  • 核心特性
    • 面向连接:通过三次握手建立连接,四次挥手释放连接。
    • 可靠传输:通过序列号、确认应答、超时重传保证数据完整。
    • 流量控制:通过滑动窗口机制动态调整发送速率。
    • 拥塞控制:通过慢启动、拥塞避免、快重传、快恢复算法避免网络过载。
TCP 三次握手(建立连接)
1. Client → Server:SYN=1, Seq=x
2. Server → Client:SYN=1, ACK=1, Seq=y, Ack=x+1
3. Client → Server:ACK=1, Seq=x+1, Ack=y+1
  • 目的:协商初始序列号,确认双方收发能力。
TCP 四次挥手(释放连接)
1. Client → Server:FIN=1, Seq=u
2. Server → Client:ACK=1, Ack=u+1
3. Server → Client:FIN=1, Seq=v, Ack=u+1
4. Client → Server:ACK=1, Seq=u+1, Ack=v+1
  • 目的:确保双方数据均传输完毕,安全关闭连接。
TCP 滑动窗口
  • 原理:接收方通过窗口大小告知发送方可接收的数据量,实现动态流量控制。
拥塞控制算法
  • 慢启动:初始窗口指数增长,直到阈值或出现丢包。
  • 拥塞避免:窗口线性增长,谨慎探测带宽上限。
  • 快重传:收到3个重复ACK时立即重传丢失报文。
  • 快恢复:丢包后窗口降为阈值,而非重置为1。
2. UDP(用户数据报协议)
  • 核心特性
    • 无连接:无需建立连接,直接发送数据。
    • 不可靠:不保证数据到达顺序或是否丢失。
    • 低开销:首部仅8字节(TCP首部20字节+选项)。
  • 适用场景:实时音视频、DNS查询、物联网传感器数据。

四、应用层协议

1. HTTP(超文本传输协议)
  • 无状态协议:每次请求独立,依赖 Cookie/Session 维持状态。
  • 方法:GET、POST、PUT、DELETE 等。
  • 版本演进
    • HTTP/1.1:持久连接、管道化。
    • HTTP/2:多路复用、头部压缩。
    • HTTP/3:基于 QUIC(UDP),解决队头阻塞。
2. DNS(域名解析协议)
  • 功能:将域名(如 www.example.com)解析为 IP 地址。
  • 查询过程:递归查询(客户端→本地DNS→根DNS→权威DNS)。
3. MQTT(物联网消息协议)
  • 特点:轻量级、发布-订阅模式,适合低带宽、高延迟环境。

五、关键辅助协议

1. ARP(地址解析协议)
  • 功能:通过 IP 地址查询 MAC 地址。
  • 过程:广播 ARP 请求,目标主机单播回复。
2. ICMP(互联网控制消息协议)
  • 功能:传递网络错误信息(如 ping 基于 ICMP Echo Request/Reply)。
  • 典型应用:Traceroute 诊断网络路径。

六、数据封装与分用

1. 数据封装流程(发送端)
应用层数据 → 添加TCP/UDP首部 → 添加IP首部 → 添加帧头帧尾 → 物理比特流
2. 数据分用流程(接收端)
物理比特流 → 解析帧头 → 解析IP首部 → 解析TCP/UDP首部 → 交付应用层

七、TCP/IP 的典型问题与优化

1. 粘包与拆包
  • 原因:TCP 是字节流协议,无消息边界。
  • 解决方案
    • 定长消息。
    • 分隔符(如 \n)。
    • 消息头声明长度(如 HTTP 的 Content-Length)。
2. NAT(网络地址转换)
  • 功能:将私有 IP 映射为公网 IP,解决 IPv4 地址不足。
  • 类型:静态 NAT、动态 NAT、PAT(端口复用)。
3. 性能优化
  • TCP 优化:调整窗口大小、启用快速打开(TFO)。
  • HTTP 优化:启用持久连接、压缩、缓存。

总结:TCP/IP 的设计哲学

  • 分层解耦:各层独立演进,互不影响(如 HTTP/3 替换 TCP 为 QUIC)。
  • 端到端原则:复杂逻辑尽量放在终端,保持网络核心简单高效。
  • 鲁棒性:通过冗余(如多路径路由)、容错(如重传)保障可靠性。

理解 TCP/IP 协议原理,是掌握网络编程、运维和架构设计的基础。


http://www.ppmy.cn/ops/166468.html

相关文章

R语言零基础系列教程-03-RStudio界面介绍与关键设置

代码、讲义、软件回复【R语言03】获取。 设置位置: 菜单栏 - Tools - Blobal Options 设置 通用设置 设置面板左侧General选项 版本选择: 一般只用一个版本即可 默认工作目录设置: 你希望RStudio打开时是基于哪个目录进行工作可以不设置, 因为脚本一般都是放置在特定项目路…

蓝桥杯刷题——第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

一、0握手问题 - 蓝桥云课 算法代码&#xff1a; #include <iostream> using namespace std; int main() {int sum0;for(int i49;i>7;i--)sumi;cout<<sum<<endl;return 0; } 直接暴力&#xff0c;题意很清晰&#xff0c;累加即可。 二、0小球反弹 - 蓝…

深圳南柯电子|净水器EMC测试整改:水质安全与电磁兼容性的双赢

在当今注重健康生活的时代&#xff0c;净水器作为家庭用水安全的第一道防线&#xff0c;其性能与安全性备受关注。其中&#xff0c;电磁兼容性&#xff08;EMC&#xff09;测试是净水器产品上市前不可或缺的一环&#xff0c;它直接关系到产品在复杂电磁环境中的稳定运行及不对其…

【备考记录】流水线吞吐率

定义 流水线吞吐率是指单位时间内流水线所完成的指令数量&#xff0c;是衡量流水线性能的重要指标之一。 基本计算公式 吞吐率&#xff08;Throughput&#xff09;&#xff1a; 吞吐率 指令条数 流水线执行时间 吞吐率 \frac{指令条数}{流水线执行时间} 吞吐率流水线执行…

11 Collection集合、Map集合:分类、功能、遍历、底层原理,Stream流:获取、中间方法、终结方法 (黑马Java视频笔记)

文章目录 集合1. 认识集合2. Collection单列集合特点3. Collection单列集合的常用功能4. Collection的遍历方式1&#xff09;迭代器遍历 Iterator2&#xff09;增强for循环&#xff08;for...each遍历&#xff09;3&#xff09;Lambda表达式&#xff1a;forEach&#xff08;&am…

历年云南大学计算机复试上机真题

历年云南大学计算机复试机试真题 在线评测&#xff1a;传送门&#xff1a;pgcode.cn 喝饮料 题目描述 商店里有 n 中饮料&#xff0c;第 i 种饮料有 mi 毫升&#xff0c;价格为 wi。 小明现在手里有 x 元&#xff0c;他想吃尽量多的饮料&#xff0c;于是向你寻求帮助&#x…

全栈网络安全|渗透测试-1

网站四大件 系统 系统是指服务器上运行的操作系统&#xff0c;它是承载网站运行的基础。常见的操作系统包括Linux&#xff08;如Ubuntu、CentOS&#xff09;、Windows Server等。操作系统负责管理硬件资源&#xff0c;并为运行在其上的软件提供一个稳定的环境。中间件 中间件是…

MapReduce处理数据流程

&#xff08;一&#xff09;Shuffle MapReduce中的Shuffle过程指的是在Map方法执行后、Reduce方法执行前对数据进行分区排序的阶段 &#xff08;二&#xff09;处理流程 1. 首先MapReduce会将处理的数据集划分成多个split&#xff0c;split划分是逻辑上进行划分&#xff0c;…