欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 【Net】TCP/IP 协议

【Net】TCP/IP 协议

2025/6/14 12:43:53 来源:https://blog.csdn.net/YZJincsdn/article/details/148619992  浏览:    关键词:【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、文件传输、数据库实时游戏、直播、传感器广播
是否顺序✅ 保证顺序❌ 不保证

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词