Linux——netstat

2023-11-17

netstat是一个功能很强大的网络信息统计工具。它可以打印本地网卡接口上的全部连接、路由表信息、网卡接口信息等。我们主要利用的是上述功能中的第一个,即显示TCP连接及其状态信息。毕竟,要获得路由表信息和网卡接口信息,我们可以使用输出内容更丰富的route和ifconfig命令。

netstat命令常用的选项如下:
在这里插入图片描述

为了深入学习这一命令,也为了演示上一节存在的粘包问题,我们继续使用之前的代码:服务器循环接收数据,客户端循环发送数据:
在这里插入图片描述
在这里插入图片描述

我们将服务器端的代码修改为,一次只接收一个字符的数据:

    while(1)  // 循环接收不同客户端的链接    
    {        
    	int len = sizeof(saddr);
    	int c = accept(sockfd,(syruct sockaddr*)&caddr,&len);
            
    	if(c == -1)        
    	{            
    		printf("Get one client link fail\n");        
    		continue;
	    }
	     
        while(1) //循环和一个客户端通讯        
        {            
        	char buff[128] = {0};  
        	///         
        	int n = recv(c, buff, 1, 0); 
        	///
        	if(n <= 0)            
        	{                
        		printf("client will unlink\n");                	
        		break;            
        	}
        	
            printf("buff = :%s\n", buff);            
            send(c, "OK", 2, 0);        //也可以用write
        }

在这里插入图片描述
因此,我们可以理解为:服务器端的代码,每收一次数据就给客户端发哦送一个ok,但是为什么我们只收到了一个ok呢,不是应该收到6个ok吗?

这时候,我们通过这个命令netstat查看
在这里插入图片描述

其中,Recv-Q是接收缓冲区,Send-Q是发送缓冲区, Local是本地IP和端口,Foregn是对方的IP和端口
我们刚才说:服务器应该给客户端回复6个ok,我们看到图中cli的接收缓冲区,有10字节,就是剩下的5个ok。
如果我们现在再给服务器发送数据,就会把此时缓冲区的5个ok读出来
在这里插入图片描述
然后a和\n到达服务器后,服务器发送2个ok,这2个ok在客户端的接收缓冲区中。

请添加图片描述

这就是粘包问题,对方send好几次,客户端一次性读到。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux——netstat 的相关文章

  • _dl_runtime_resolve -- 共享对象何时加载到内存中?

    我们有一个对性能要求很高的消息处理系统 最近我们注意到第一条消息比后续消息花费的时间要长很多倍 当它通过我们的系统时 会发生大量转换和消息增强 其中大部分是通过外部库完成的 我刚刚描述了这个问题 使用 callgrind 将仅一条消息的 运
  • 如何在 Linux 中显示进程状态(阻塞、非阻塞)

    有没有办法查询 Linux 进程表中进程的状态 以便能够演示执行查询时进程是正在运行还是被阻止 我的目标是从进程或程序的 外部 执行此操作 因为我希望从操作系统进程的角度来理解这一点 但欢迎任何想法 这是Python代码阻塞的过程 impo
  • C/C++ with GCC:静态地将资源文件添加到可执行文件/库

    有人知道如何使用 GCC 将任何资源文件静态编译为可执行文件或共享库文件吗 例如 我想添加永远不会改变的图像文件 如果它们改变了 我无论如何都必须替换该文件 并且不希望它们位于文件系统中 如果这是可能的 我认为这是因为 Visual C f
  • 检查 Linux 中给定进程的打开 FD 限制

    我最近有一个 Linux 进程 泄露 了文件描述符 它打开了文件描述符 但没有正确关闭其中一些文件描述符 如果我对此进行监控 我就可以提前得知该过程已达到其极限 有没有一种很好的 Bash 或 Python 方法来检查 Ubuntu Lin
  • 无法使用 tar -cvpzf 解压完整目录

    把我的头敲在这上面 I used tar cvpzf file tar gz压缩一个完整的目录 我将文件移动到另一台服务器 并尝试解压缩复制存档的目录 无法使其发挥作用 bash 3 2 tar xvpzf news tar gz tar
  • 警告构建使用导出符号的内核模块

    我有两个内核模块 例如 modA 和 modB modA 导出一个符号EXPORT SYMBOL symA modB 使用它 我有标题modA h对于modA extern void symA int param and in modB c
  • 如何更改Linux服务器中的MySQL表名不区分大小写?

    我正在开发一个旧网站 该网站曾经托管在 Apple 服务器上 当它迁移到新的 Linux 服务器时 它停止工作 我很确定这是因为 php 脚本中使用的所有 MySQL 查询对于表名都有不同的大小写组合 我不知道为什么原始开发人员在创建表名或
  • 使用 xargs 时如何获取退出代码(并行)

    我制作了一个用于启动并行 rsync 进程的脚本 bin bash LIST 1 DEST DIR 2 RSYNC OPTS 3 echo rsyncing From SRC DIR To DEST DIR RSYNC OPTS RSYNC
  • 在Linux中执行jar文件[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我创建了一个可执行的 Java jar 文件 也就是说 我将 java 程序正确打包到 jar 文件中 包括 META INF MANIFEST 文件
  • 如何搭建qtwayland?

    我花了一整天的时间尝试使用QtWayland Compositor 1 0在 Qt 创建者中 我已经遵循了从那里开始的所有步骤https wiki qt io QtWayland https wiki qt io QtWayland但我收到
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一
  • 如何从 swagger 文档生成静态 html 文件?

    我创建了一个 Swagger 文档yaml文件位于 api swagger swagger yaml 现在我想分享一个静态 HTML 文档及其定义 但它已在招摇项目 https github com swagger api swagger
  • 第一次如何配置postgresql?

    我刚刚安装了 postgresql 并在安装过程中指定了密码 x 当我尝试做的时候createdb并指定我收到消息的任何密码 createdb 无法连接到数据库 postgres 致命 用户密码身份验证失败 同样适用于createuser
  • 在 Windows 下使用 linux 实用程序的最佳方法是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Linux 实用程序 如 sed awk 和其他 shell 脚本功能 非常棒 但当我在 Windows 上进行开发并且无法使用其中任何一
  • 如何告诉 CMake 将构建文件放在哪里?

    我想告诉 CMake 将文件和文件夹输出到不同的文件夹而不是当前文件夹 我在下面讨论的是 CMake 生成的文件 文件 CMakeCache txt 目录 CMakeFiles 文件 生成文件 目录 bin 文件 cmake install
  • 如何在 Linux 中制作一个将文件转换为大写的 x86 汇编程序?

    我找到了一个名为 ProgrammingGroundUp 1 0 booksize pdf 的 pdf 文件 其中一个项目是制作一个汇编程序 该程序接收文件并将其转换为大写 section data CONSTANTS system cal
  • 在 Bash 中使用“$RANDOM”生成随机字符串

    我正在尝试使用 Bash 变量 RANDOM创建一个由包含整数和字母数字的变量中的 8 个字符组成的随机字符串 例如 var abcd1234ABCD 我怎样才能做到这一点 使用参数扩展 chars 是可能的字符数 是模运算符 chars
  • 主动\被动模式下 FTP 服务器的适当 iptables 规则

    我在 CentOS6 上安装了 ProFTPD 服务器 如果我使 ftp 本地主机 我可以正确连接 但如果我从外部尝试 我会收到消息 没有到主机的路由 但有一条到主机的路由 因为我是通过 SSH 连接的 我尝试添加以下 iptable 规则
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • 未找到 DEADLINE 调度策略

    我想在 C 中实现 DEADLINE 调度策略 我知道该功能已实现Linux 3 14 10我正在使用 Ubuntu 14 04Linux 3 17 0 031700 lowlatency 201410060605 SMP PREEMPT这

随机推荐

  • React从入门到精通二

    React从入门到精通之购物车案例 1 购物车需求说明 使用到的data list 2 项目code 1 购物车需求说明 list data展示到列表中 每个item的通过 按钮来控制购买的数据量 删除按钮可以删除当前的item Total
  • Request+超详细代码+视图分析(获取值)

    Request 1 request对象和response对象的原理 1 request和response对象是由服务器创建的 我们来使用它们 2 request对象是来获取请求消息 response对象是来设置响应消息 2 request对
  • constrain用法_constrain是什么意思_constrain的用法

    constrain的音标 英 k n stre n 美 k n stre n constrain的用法 v 强迫 强制 迫使 限制 限定 约束 第三人称单数 constrains 现在分词 constraining 过去式 constrai
  • Numpy学习笔记

    基于Wes McKinney的Python for Data Analysis第四章NumPy Basics Arrays and Vectorized Computation整理代码得来 最近在自学Python 感觉还是要敲一下的 又懒得
  • ChatGPT的评估指标有哪些?微调与上下文学习是否存在相似性?

    NLP 分很多的任务 不同的任务有不同的指标来度量模型质量 比如AUC Precision Recall是分类模型的度量指标 ChatGPT可以看作一个生成式语言模型 简单说就是给它输入一段文字 它会输出另一段文字 当然输出和输入之间是有关
  • 关于ArithmeticException 异常捕获(double类型的数据除于0为什么是无穷大?)

    关于ArithmeticException 异常捕获 double类型的数据除于0为什么是无穷大 在做实验编写应用程序 从命令行中输入表示两个小数的参数的字符串 求它们的商 要求程序捕获NumberFormatException异常和Ari
  • 测试用例管理工具SynapseRT(jira插件)的具体使用(一)

    话说我们测试团队使用Zephyr进行测试用例管理一段时间后 得到大家的认可 反馈还不错 但我还是觉得它功能太单一 缺点较多 例如提供信息较少 无法记录和跟踪需求 管理人员无法直观了解测试进度等等 为了解决这些问题 我找到了SnapseRT插
  • 基于DVWA的文件上传漏洞测试

    目录 DVWA Low Medium DVWA Low DVWA Security的 low 级别可以直接上传 一句话 木马 1 1 编写测试木马 1 2 没有后缀过滤直接上传 1 3回显上传路径 直接访问即可 http localhost
  • 算法 - 快速排序(C#)

    csharp view plain copy print
  • 分治法 ( Divide And Conquer ) 详解

    文章目录 引言 分治法的范式 递归式 求解递归式的三种方法 代入法 递归树法 主方法 引言 在这篇 blog 中 我首先会介绍一下分治法的范式 接着给出它的递归式通式 最后我会介绍三种方法 代入法 递归树 和主方法 求解递归式 分治法的范式
  • 小程序技术原理分析

    小程序技术原理分析 背景 小程序诞生的技术背景 小程序与普通网页开发的区别 宿主环境 执行环境 小程序架构 一 技术选型 二 双线程模型 三 双线程通信 四 小程序的基础库 五 小程序运行时 运行机制 更新机制 六 性能优化 总结 背景 随
  • 懒加载、热加载(开发者模式)、热部署、预加载、热更新

    热部署 直接重新加载整个应用 生产环境 清空内存重新打包 重新解压war包 热加载 在运行时重新加载class 开发环境 基于字节码的更改 不释放内存开发可用 上线不可用 热加载不重启tomcat 不重新打包 懒加载 延迟加载 实现方法 先
  • 页式存储管理方式

    优点 分页存储管理解决了 内存碎片 问题 提高了资源的利用率 页式存储管理方式的实现思路 将作业分页 物理空间分块 块大小 页大小 将作业的每一页依次装入到物理空间中的块中执行 不要求装入连续的物理块 当所有页全部装入物理块后 才可以运行
  • 华为OD机试真题-核酸检测人员安排【2023Q1】【JAVA、Python、C++】

    题目描述 在系统 网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查 每名采样员的效率不同 采样效率为N人 小时 由于外界变化 采样员的效率会以M人 小时为粒度发生变化 M为采样效率浮动粒度 M N 10 输入保证N 10 的结
  • java对象clone()方法

    java赋值是复制对象引用 如果我们想要得到一个对象的副本 使用赋值操作是无法达到目的的 Test public void testassign Person p1 new Person p1 setAge 31 p1 setName Pe
  • 单目标跟踪算法评价指标

    中心位置误差 center location error CLE 中心位置误差为预测的目标中心和真实的目标中心之间的欧氏距离 以像素为单位 xa ya 表示预测目标中心位置 xb yb 表示真实的目标中心位置 距离精度 diatance p
  • html 编辑框取消默认样式,html5中如何更改、去掉input type默认样式

    1 如何去掉input type date 默认样式 HTML代码 选择日期 选择时间 选择星期 选择月份 目前WebKit下有如下9个伪元素可以改变日期控件的UI webkit datetime edit 控制编辑区域的 webkit d
  • 微信小程序商城项目实战(第三篇:商品列表)

    实现商品列表 利用组件实现 Tabs 组件界面编写
  • JavaWeb会话技术

    1 Cookie对象 cookie是一种会话技术 它用于将会话过程中的数据保存到用户的浏览器中 从而使浏览器和服务器可以更好的地进行数据交互 创建Serlet 创建一个chapter05项目 创建一个自己喜欢的包 在该包中编写一个为Last
  • Linux——netstat

    netstat是一个功能很强大的网络信息统计工具 它可以打印本地网卡接口上的全部连接 路由表信息 网卡接口信息等 我们主要利用的是上述功能中的第一个 即显示TCP连接及其状态信息 毕竟 要获得路由表信息和网卡接口信息 我们可以使用输出内容更