当前位置: 首页 > news >正文

【Net】TCP/IP 协议

TCP/IP 协议

TCP/IP 协议 知识点主要包括:分层结构、核心协议、工作机制、应用示例(含 C/C++ 编程)、常见问题排查等,适用于嵌入式、上位机、网络编程学习或系统开发。


一、什么是 TCP/IP?

TCP/IP 是互联网通信协议族(协议栈)的总称,并非单一协议,而是一组网络协议的统称。它是现代网络通信(如网页、FTP、邮件、IoT、嵌入式上位机通信等)的基础。


二、TCP/IP 协议栈分层结构

TCP/IP 模型通常分为 4 层(对应 OSI 7 层的压缩版):

TCP/IP 层功能常见协议
应用层 (Application)提供具体应用服务HTTP, FTP, SSH, DNS, MQTT
传输层 (Transport)端到端可靠/不可靠数据传输TCP(可靠), UDP(不可靠)
网络层 (Internet)负责寻址与路由IP, ICMP, ARP
链路层 (Link)负责硬件传输(如以太网帧)Ethernet, PPP, Wi-Fi

三、核心协议详解

IP 协议(Internet Protocol)

  • 作用:提供主机之间的寻址与数据转发
  • 特点:不可靠、无连接
  • 数据包结构包括:源 IP、目的 IP、TTL、标识、分片等

TCP 协议(Transmission Control Protocol)

  • 作用:提供可靠、面向连接的端到端传输

  • 特点:

    • 三次握手建立连接
    • 四次挥手断开连接
    • 流量控制、拥塞控制、超时重传
  • 应用场景:Web 服务、文件传输、远程登录

UDP 协议(User Datagram Protocol)

  • 作用:提供无连接、不可靠但轻量的数据传输
  • 特点:无握手、发送即忘、延迟低
  • 应用场景:实时音视频、游戏、广播、嵌入式下位机通信

四、TCP 三次握手 / 四次挥手

三次握手(建立连接):

  1. Client → Server:发送 SYN(同步)
  2. Server → Client:SYN + ACK(确认)
  3. Client → Server:ACK

四次挥手(关闭连接):

  1. Client → Server:FIN
  2. Server → Client:ACK
  3. Server → Client:FIN
  4. Client → Server:ACK

握手建立连接可靠性,挥手确保数据传输完整关闭。


五、C/C++ Socket 编程(基于 TCP/IP)

TCP 服务器(C)

int server_fd = socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in addr = {};
addr.sin_family = AF_INET;
addr.sin_port = htons(12345);
addr.sin_addr.s_addr = INADDR_ANY;bind(server_fd, (struct sockaddr*)&addr, sizeof(addr));
listen(server_fd, 5);int client_fd = accept(server_fd, NULL, NULL);char buffer[1024];
read(client_fd, buffer, sizeof(buffer));
write(client_fd, "Hello Client", 12);

TCP 客户端(C)

int sock = socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in server = {};
server.sin_family = AF_INET;
server.sin_port = htons(12345);
inet_pton(AF_INET, "127.0.0.1", &server.sin_addr);connect(sock, (struct sockaddr*)&server, sizeof(server));send(sock, "Hello Server", 12, 0);
recv(sock, buffer, sizeof(buffer), 0);

六、TCP/IP 与嵌入式上位机通信

场景上位机下位机通信方式
STM32 ↔ PCQt/Console程序STM32 LwIP + TCP ServerTCP
ESP32 ↔ 上位机Python/C++ESP32 Arduino TCP ServerTCP
网关 ↔ 云端平台REST/gRPC/MQTT网关 Linux/C 编写 TCP 客户端TCP 或 TLS

七、TCP/IP 数据封包结构简图

以太网帧└─IP 数据包└─TCP 段└─应用数据(如 HTTP/自定义协议)

每一层加一层包头,层层封装,形成所谓“协议栈”。


八、TCP 常见问题 & 调试工具

常见问题

  • 连接不上 → 防火墙或监听地址不对
  • 接收阻塞 → 对方未发送数据或没 flush
  • 粘包/拆包 → 使用 length-prefix 协议或自定义帧尾

常用调试工具

工具功能
netstat查看端口占用
tcpdump抓包分析 TCP/IP 层数据
Wireshark图形化协议分析利器
nc / ncat快速测试 TCP 连接

九、TCP/IP 与 RPC 结合

TCP 是实现 RPC 框架的主力协议之一。

例如:

  • gRPC → 基于 HTTP/2 + Protobuf + TCP
  • Thrift → TCP + 二进制协议
  • 自定义 RPC → TCP + 自定义帧格式 + 方法映射

十、总结

维度TCPUDP
是否可靠✅ 是(有重传)❌ 否(丢包不管)
是否连接✅ 是(握手)❌ 否(无连接)
适合应用HTTP、文件传输、数据库实时游戏、直播、传感器广播
是否顺序✅ 保证顺序❌ 不保证

相关文章:

  • 《性能之巅》第十章 网络
  • 机器学习与深度学习20-数学优化
  • 如何彻底解决缓存击穿、缓存穿透、缓存雪崩
  • @Validation 的使用 Spring
  • LeetCode--29.两数相除
  • 【慧游鲁博】【13】后端 · 文物图片识别功能完善 · 个性化文物介绍
  • 火线、零线、地线 基础知识
  • Actix-web 中的权限中间件实现
  • 智慧养老与数字健康:科技赋能老年生活,构建全方位养老体系
  • 高防IP是怎么防御的?高防IP的防御步骤又有哪些?
  • 发布5大AI课程体系,传智教育破局AI开发人才荒
  • GitHub 趋势日报 (2025年06月11日)
  • 在MATLAB命令行执行ros2node 和 ros2subscriber后,执行ros2 topic list,MATLAB卡死
  • preload、preconnect、prefetch 的作用
  • 【Java多线程从青铜到王者】阻塞队列(十)
  • bash挖矿木马事件全景复盘与企业级防御实战20250612
  • MySQL中InnoDB存储引擎底层原理与MySQL日志机制深入解析
  • HTTP 网络协议演进过程
  • centos clamav 扫描及告警配置
  • OpenCV——图像基本操作(三)
  • 怎么做网站链接的快捷方式/南宁seo外包服务商
  • 河北seo网站优化价格/关键词查询的五种常用工具
  • 杭州做网站多少钱/百度收录查询代码
  • 做网站需要用到的语言/域名注册官网免费
  • 做时时彩开奖网站犯法吗/第三方营销策划公司有哪些
  • 如何做网站访问日志/企业网站管理系统