新闻详情

新闻详情

首页 / 资讯中心 / 详情

【linux应用软件编程】进程间的通信方式3【网络抓包工具TCP】

发布时间:2026/9/3 6:20:01来源:尧图网络
【linux应用软件编程】进程间的通信方式3【网络抓包工具TCP】
文章目录一、网络抓包工具wireshark二、TCP协议2.1 TCP的三次握手和四次挥手机制2.1.1 三次握手2.1.2 数据收发2.1.3 四次挥手2.2 TCP报文头部数据位2.3 TCP编程2.4 相关函数接口connectlistenacceptrecv2.5 TCP机制2.6 TCP的粘包问题一、网络抓包工具wiresharkwireshark网络抓包工具可以抓取经过网卡的网络数据从而分析网络问题。Linux下安装wiresharksudo apt-get install wireshark抓包流程:1.启动wireshark :sudo wireshark2.选择抓取的网卡:any3.选择抓取数据包的过滤条件并触发:udp.port500004.进行网络通信二、TCP协议传输层TCP传输控制协议流式套接字TCP特点有连接面向字节流安全可靠的传输协议三次握手、四次挥手、应答机制、超时重传机制机制复杂实时性和效率没有UDP高HTTP、MQTT、FTP2.1 TCP的三次握手和四次挥手机制2.1.1 三次握手三次握手:TCP建立连接时通过三次握手来确保通信双方都已经准备就绪。SYN:请求建立连接标志位ACK:效应报文标志位2.1.2 数据收发PSH:携带数据的报文标志位ACK:效应报文标志位三次握手由客户端发起。2.1.3 四次挥手四次挥手TCP断开连接时通过四次挥手确保通信双方数据都已经收发结束。2.2 TCP报文头部数据位SYN:请求建立连接标志位ACK:效应报文标志位PSH:携带数据的报文标志位FIN:请求断开连接标志位URG:紧急数据标志位RST:重置标志位2.3 TCP编程TCP客户端创建套接字socket();客户端请求建立连接connect();发送数据send();接受数据recv();关闭套接字close();TCP服务端创建套接字监听套接字socket();绑定服务端的IP和端口号bind();监听要和自己握手的客户端listen();接受完成三次握手的客户端产生一个通信套接字connfdaccept();接受数据recv();发送数据send();关闭套接字close();2.4 相关函数接口connect函数原型intconnect(intsockfd,conststructsockaddr*addr,socklen_taddrlen);功能请求建立连接参数sockfd套接字addr 服务端的地址addrlen地址长度返回值成功0失败-1listen函数原型intlisten(intsockfd,intbacklog);功能监听客户端的三次握手参数sockfd: 监听套接字backlog: 最多允许监听的客户端的个数返回值成功0失败-1accept函数原型intaccept(intsockfd,structsockaddr*addr,socklen_t*addrlen);功能接收完成三次握手的客户端并返回一个通讯套接字参数sockfd: 监听套接字addr: 保存接入的客户端的地址信息的指针addrlen: 地址信息长度的指针返回值成功通讯套接字失败-1recv函数原型ssize_trecv(intsockfd,void*buf,size_tlen,intflags);功能接收网络数据参数sockfd: 通讯套接字buf: 存放接收到的数据的空间首地址len: 期待接收到的字节数flags: 0 默认方式返回值成功返回实际收到的字节数失败-10发送断开连接2.5 TCP机制三次握手机制四次挥手机制应答机制TCP为发送的数据进行编号发送数据时报文头部的序列号是这包数据的第一个数据的编号将来接收方需要给这包数据发送ACKACK报文中确认号是收到的最后一个字节编号1。超时重传机制TCP每发送一包数据 后都要等待应答如果超时时间之内未收到应答则重新发送这包数据。滑动窗口机制缓冲区保存已发送并收到应答的数据、已发送未收到应答的数据未发送但在对方处理范围内的数据。延迟应答机制TCP可以发送多组数据发送的同时等待应答。流量控制机制TCP会根据发送端的数据处理和接受能力调整自己的发送速率根据ACK中窗口值的大小进行动态调整流量。捎带应答机制ACK可以和应用层发送的数据一起发出表示对上包数据的响应。2.6 TCP的粘包问题粘包发送端发送速度太快接受端处理速度比较慢导致数据在缓冲区缓存应用层读出数据时多包数据产生了粘连。解决粘包的方法收发指定大小数据收发结构体structdata{XXXlongnum;}send(sockfd,data,sizeof(structdata),0);recv(sockfd,data,sizeof(structdata),0);注意跨平台发送时平台的位数。给发送的数据明显的分隔符应用层根据分隔符解析hello\n world\n hello\nworld\n以自定义方式定义发送的数据帧格式接受方严格按照协议方式解析帧头 数据长度 地址 校验 帧尾5A 0101 1010A57EE7EB90消息类型 区分数据包的数据类型校验8位和校验16位和校验CRC校验地址区分数据包的数据类型。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

ZooKeeper 选举算法详解:Paxos 与 ZAB 协议 2026/9/3 7:11:08

ZooKeeper 选举算法详解:Paxos 与 ZAB 协议

ZooKeeper 选举算法详解:Paxos 与 ZAB 协议⚠️ 先纠正一个常见误区:ZooKeeper 实际使用的不是 Paxos,而是 ZAB 协议(ZooKeeper Atomic Broadcast,原子广播)。Paxos 是分布式共识算法的理论基石&#xff0c…

阅读更多 →
YOLO打电话检测数据集:VOC格式转换与工业落地实战 2026/9/3 7:11:08

YOLO打电话检测数据集:VOC格式转换与工业落地实战

简介:本资源是专为计算机视觉目标检测任务设计的高质量VOC格式打电话行为检测数据集,面向YOLO系列模型训练需求,适用于智能监控、行为识别等实际场景中的算法工程师与深度学习初学者。数据集共5364张JPG图像及对应XML标注文件(含1…

阅读更多 →
Python人脸识别考勤系统实战:从Demo到生产落地 2026/9/3 7:11:08

Python人脸识别考勤系统实战:从Demo到生产落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
LOONA机器狗实测:AI陪伴教育机器人如何从语音启蒙到编程进阶 2026/9/3 7:11:08

LOONA机器狗实测:AI陪伴教育机器人如何从语音启蒙到编程进阶

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
基于LangGraph的多智能体系统构建:医疗与法律领域的RAG实战 2026/9/3 7:11:08

基于LangGraph的多智能体系统构建:医疗与法律领域的RAG实战

在医疗行业和刑法领域应用 AI 大模型,最大的挑战不是模型本身的能力,而是如何让模型理解专业术语、遵循行业规范、并在复杂决策中保持可解释性。单纯调用一个通用大模型接口,往往无法满足专业场景对准确性、安全性和合规性的要求。多智能体架…

阅读更多 →
ktransformers框架:LLM高效推理与微调实战指南 2026/9/3 7:08:08

ktransformers框架:LLM高效推理与微调实战指南

1. ktransformers 框架概述与核心价值 在大型语言模型(LLM)快速发展的今天,推理性能和微调效率成为开发者面临的关键挑战。ktransformers 作为 kvcache-ai 团队推出的开源框架,专门针对 LLM 的高效推理和微调场景进行了深度优化。…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞