首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我发现 Linux 文档写错了

周末的时候,有位读者疑惑为什么 Linux man 手册中关于 netstat 命令中的 tcp listen 状态下的 Recv-Q 和 Send-Q 这两个信息的描述跟我的图解网络写的不一样?...没想到 Linux 的 man 手册也会出错。 首先,先给大家介绍下 netstat 命令。netstat 命令是查看网络状态很常见的 Linux 命令。...:如果 TCP 连接状态处于 Established,Send-Q的数值表示发送缓冲区中已发送但未被确认的数据大小;如果 TCP 连接状态处于 Listen 状态,Send-Q 的数值表示 syn 半连接队列的容量...有一个网站可以在线看 Linux 内核代码:https://elixir.bootlin.com/,每个内核版本的代码都有,平常我都是在这里看。...最后 看到这,大家肯定会说:小林你太强了吧,为什么对 Linux 内核源码那么熟,这都能分析出来。 其实,我并没有熟读过 Linux 内核源码啦,其实只要大家有好奇心,其实你也能分析出来。

1.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

Linux中一个网络包的发送接收流程

Linux发送HTTP网络包图像 图像解析 写入套接字缓冲区(添加TcpHeader) 用户态进程通过write()系统调用切到内核态将用户进程缓冲区中的HTTP报文数据通过Tcp Process处理程序为...2. sk_buff数据结构解析 通过对sk_buff数据结构解析,窥见Linux中的一些设计思想; 进行协议头的增添 我们知道,按照网络栈的设定,发送网络包时,每经过一层,都会增加对应协议层的协议首部...,因此Linux采用在sk_buff中的一个Union结构体进行标识: struct sk_buff { union { struct tcphdr *th; // TCP...中存在sk_buff结构),Linux会尝试将当前包合并到SEND-Q的最后一个sk_buff结构中 (粘包) ; 考虑我们上述的768bytes的结构体为SEND-Q的最后一个sk_buff,当用户进程继续调用...在真实创建的时候会设置大小2048*2=4096,因为linux除了要考虑用户的应用层数据,还需要考虑linux自身数据结构的开销-协议头部、指针、非线性内存区域结构等... sk_buff结构中通过sk_wmem_queued

1.9K30

netstat的替代者-ss命令实例详解

为什么使用ss 值得注意的是,几乎所有的linux系统都默认支持netstat命令,而并不一定支持ss,从这一点来说,netstat通常还是不二选择。但是不得不承认的是,ss命令更加快捷高效。...netstat从proc文件系统(可参考linux中不可错过的信息宝库)获取所需要的信息,而ss利用netlink机制,与内核通信,通过TCP 协议栈中 tcp_diag 模块获取第一手的内核信息。...使用-p(processes)即可,例如: $ ss -tp State Recv-Q Send-Q Local Address...例如,要查看处于LISTENING状态的连接: $ ss -t state LISTENING Recv-Q Send-Q...发送报文分配的内存 发送报文可分配的内存 socket使用的缓存 为将要发送的报文分配的内存 保存socket选项使用的内存 连接队列使用的内存 根据IP或端口过滤socket信息 你可以使用grep命令(可参考《Linux

1.5K10

网络连接配置查看

[TOC] 0x00 快速入门 前言:主要针对于Linux中网络信息/TCP/UDP连接查看抓取等命令进行学习,加深对Linux的使用; 0x01 网络状态信息 netstat 命令 描述:用来打印Linux...中网络系统的状态信息,可让你得知整个Linux系统的网络情况 WeiyiGeek.netstat选项 实际案例: #示例1.利用管道符的命令连接可以看当前与多少用户正在连接 netstat -an...| grep ESTABLISHED | wc -l netstat -tnul ##可以用来看有多少端口服务正常打开 Proto Recv-Q Send-Q Local Address...i in state) print i,"\t",state[i]}' SYN_RECV 4 ESTABLISHED 8 WeiyiGeek.分析IP/TCP Q:[面试]Linux...tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。

1.9K20

五分钟带你读懂 TCP全连接队列(图文并茂)

: # -l 显示正在Listener 的socket # -n 不解析服务名称 # -t 只显示tcp # Recv-Q 完成三次握手并等待服务端 accept() 的 TCP 全连接总数, # Send-Q...全连接队列大小 [root@server ~]# ss -lnt |grep 6080 State Recv-Q Send-Q Local Address:Port Peer Address...已发送但未收到确认的字节数 [root@server ~]# ss -nt |grep 6080 State Recv-Q Send-Q Local Address:Port Peer Address...Linux 可通过 /proc/sys/net/ipv4/tcp_abort_on_overflow 进行配置。...所以总结下: 1、TCP三次握手时,Linux维护了全连接和半连接两个队列 2、在全连接队列满的时候丢弃策略根据tcp_abort_on_overflow的配置执行 3、全连接队列大小会取Linux系统配置和应用配置中的最小值

2.7K30

Linux命令(55)——netstat命令

1.简介 netstat命令用来打印Linux系统的网络状态信息,包括网络连接(network connections)、路由表(routing tables)、网络接口设备统计信息(interface...statistics)、伪装连接(masquerade connections)和多播成员信息(multicast memberships)等,可让你得知Linux系统网络的整体情况。...2.输出结果整体说明 执行netstat命令输出: Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address...其中"Recv-Q"和"Send-Q"指接收队列和发送队列,这些数字一般都应该是0,如果不是则表示数据发送和接收队列存在堆积,这种情况较为少见。...---- 参考文献 [1]netstat manual [2]netstat.linux命令在线中文手册 [3]Linux netstat命令详解 [4]Linux命令之netstat [5]TCP

1.3K30

Linux netstat命令结果分析

一:获取数据 使用命令 netstat -anp | less //命令介绍: netstat : linux中查看网络状态的命令 -a : 显示所有的连接 -n : 以ip格式显示...Send-Q :对方没有接受的数据,仍然在本地缓冲区中。如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。这时候就要调整发送速度或者接受速度了。...例如:如果看到是大量的 send-Q ,可以判定是发送数据给目的地址的时候出现了阻塞的问题,导致了包堆积在本地缓存中,不能成功发出去。...Recv-Q 和 Send-Q :这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。可接受短暂的非0情况。...Recv-Q 表示 receive queue 中的 bytes 数量;Send-Q 表示 send queue 中的 bytes 数值。

4.5K30

TCP 三次握手,给我长脸了噢

如果这时全连接队列没满,内核会把连接从半连接队列移除,创建新的连接并将其添加到全连接队列,等待客户端调用accept()方法将连接取出来使用; TCP协议三次握手的过程,Linux内核维护了两个队列,SYN...LISTEN状态 Recv-Q:当前全连接队列的大小,表示上图中已完成三次握手等待可用的 TCP 连接个数; Send-Q:全连接最大队列长度,如上监听8888端口的TCP连接最大全连接长度为128;...字段含义有所不同 Recv-Q:已收到但未被应用进程读取的字节数; Send-Q:已发送但未收到确认的字节数; # -n 不解析服务名称 # -t 只显示tcp [root@VM-4-14-centos...| grep overflowed 7102 times the listen queue of a socket overflowed #全连接队列溢出的次数 拒绝策略 在全连接队列已满的情况,Linux...LISTEN” 1606 times the listen queue of a socket overflowed 1606 SYNs to LISTEN sockets ignored 队列调整 可以修改 Linux

71220

Linux netstat命令结果分析

一:获取数据 使用命令 netstat -anp  //命令介绍: netstat : linux中查看网络状态的命令 -a : 显示所有的连接 -n : 以ip格式显示 -p : 显示连接对应的进程...Send-Q :对方没有接受的数据,仍然在本地缓冲区中。如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。这时候就要调整发送速度或者接受速度了。...例如:如果看到是大量的 send-Q ,可以判定是发送数据给目的地址的时候出现了阻塞的问题,导致了包堆积在本地缓存中,不能成功发出去。...Recv-Q 和 Send-Q :这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。可接受短暂的非0情况。...Recv-Q 表示 receive queue 中的 bytes 数量;Send-Q 表示 send queue 中的 bytes 数值。

2.6K10
领券