【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校验地址区分数据包的数据类型。

相关新闻

最新新闻

收藏!AI大模型应用开发入门指南:小白也能掌握的技能路径

收藏!AI大模型应用开发入门指南:小白也能掌握的技能路径

本文详细介绍了AI大模型应用开发所需技能,主要面向市场主流的「LLM应用工程师/大模型落地工程师」岗位。文章将技能体系分为入门基础、核心专业、工程落地、软能力四层,并按优先级逐一阐述。核心技能包括编程工程基础、机器学习深度学习、大模型生态调用…

2026/9/3 7:05:02
手把手教你学 Simulink——基于准 PR(比例谐振)控制的并网逆变器电流跟踪仿真(包含完整交付件)

手把手教你学 Simulink——基于准 PR(比例谐振)控制的并网逆变器电流跟踪仿真(包含完整交付件)

目录 手把手教你学 Simulink ——基于准 PR(比例谐振)控制的并网逆变器电流跟踪仿真 一、总体系统框图 二、准 PR 控制原理 2.1 传递函数 2.2 谐波补偿(多 PR 并联) 2.3 参数设计简易法 三、关键整体参数 四、Simulink 建模 Step-by-Step Step ① —— 功率电路 …

2026/9/3 7:05:02
手把手教你学Simulink--基于SPWM调制的单相双向DCAC逆变器仿真

手把手教你学Simulink--基于SPWM调制的单相双向DCAC逆变器仿真

### 手把手教你学Simulink--基于SPWM调制的单相双向DCAC逆变器仿真 #### 摘要 本研究旨在通过对基于SPWM调制的单相双向DCAC逆变器进行Simulink仿真,验证电路设计的可行性并深入分析系统性能。在仿真过程中,利用Simulink强大的功能模块,搭建了包括直流电源、单相双向DCAC逆…

2026/9/3 7:05:02
2026最新网络安全零基础入门:7天掌握渗透测试与实战技能

2026最新网络安全零基础入门:7天掌握渗透测试与实战技能

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

2026/9/3 7:05:02
技术人如何应对产业波动:从芯片供应链到技术选型的抗风险策略

技术人如何应对产业波动:从芯片供应链到技术选型的抗风险策略

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

2026/9/3 7:05:02
被领导骂“除了做题啥也不会”,我用Python自动化报表让他当众给我道歉

被领导骂“除了做题啥也不会”,我用Python自动化报表让他当众给我道歉

上线满级游戏 上线满级游戏开服表 上线送VIP送首冲>>那天下午, 在会议室里, 王总监把一沓报表猛地摔在我桌上, 致使 A4 纸散落得到处都是, 他一边指着我熬夜做出的销售分析表, 一边大声质问“小李, 你这做的什么东西? ”, 唾沫星子溅到了我刚打印的封面上, 还说道“除了…

2026/9/3 7:00:01