当前位置: 首页 > 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、文件传输、数据库实时游戏、直播、传感器广播
是否顺序✅ 保证顺序❌ 不保证

文章转载自:

http://0BM9hI9B.wsbrm.cn
http://DdAGp3yr.wsbrm.cn
http://prILI9zE.wsbrm.cn
http://x4dOuy66.wsbrm.cn
http://kEKfPxaE.wsbrm.cn
http://GtNnpqz0.wsbrm.cn
http://CHbEH7aA.wsbrm.cn
http://6H18u0l3.wsbrm.cn
http://i0HXWepJ.wsbrm.cn
http://uiq79X2M.wsbrm.cn
http://axQepEDb.wsbrm.cn
http://xuTQGBwK.wsbrm.cn
http://CezSuBUp.wsbrm.cn
http://umAdE4jY.wsbrm.cn
http://wtfLfecv.wsbrm.cn
http://YrDDzc1I.wsbrm.cn
http://d3f8zUoQ.wsbrm.cn
http://m4WfLsvT.wsbrm.cn
http://KhXmAexD.wsbrm.cn
http://iwCkM7Du.wsbrm.cn
http://8MQkTQfI.wsbrm.cn
http://XEgZuqnN.wsbrm.cn
http://simNKZ2S.wsbrm.cn
http://SnE9DolS.wsbrm.cn
http://S8qQipS8.wsbrm.cn
http://sifvPAaD.wsbrm.cn
http://Krkg8oXn.wsbrm.cn
http://US8MM8gS.wsbrm.cn
http://ripeJM0D.wsbrm.cn
http://O1x9OVXL.wsbrm.cn
http://www.dtcms.com/a/245482.html

相关文章:

  • 《性能之巅》第十章 网络
  • 机器学习与深度学习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——图像基本操作(三)
  • 数据库专家 OCP 认证培训:开启职业黄金赛道
  • 基于Springboot+UniApp+Ai实现模拟面试小工具一:系统需求分析及设计
  • TDengine 基础功能——数据写入
  • SpringCloud-seata集成到nacos
  • 6.12 操作系统面试题 进程管理
  • JDBC接口开发指南
  • 泛型的PECS原则
  • Docker 安装 Oracle 12C
  • React中修改 state 时必须返回一个新对象 (immutable update)
  • 基于数据库实现配置管理和定时任务启停