Linux内核是高并发服务的关键组件之一。以下是一些可用于优化Linux内核的配置。
周末的时候,有位读者疑惑为什么 Linux man 手册中关于 netstat 命令中的 tcp listen 状态下的 Recv-Q 和 Send-Q 这两个信息的描述跟我的图解网络写的不一样?
前文《使用TCPDUMP和Wireshark排查服务端CLOSE_WAIT(一)》通过TCPDUMP和Wireshark在利用CentOS7作为服务端、Windows10作为客户端,模拟演示了一个TCP通信的CLOSE_WAIT状态,这篇文章主要利用前文的数据尝试解释Linux服务端产生CLOSE_WAIT状态的原因。
由于在Windows下经常使用NetAssist.exe这款网络调试工具进行TCP、UDP的服务端、客户端的监听,对于需要编写各种通信协议的TCP服务端、客户端以及UDP通信程序来说是很方便的。 NetAssist的下载地址为:NetAssist.exe 下载之后无需安装即可使用,是一款绿色软件,其软件界面如下图所示:
之前文章《Linux服务器性能评估与优化(一)》太长,阅读不方便,因此拆分成系列博文:
为何给靶机发送这条执行命令就会自动连接到本地计算机,并且出发实时通讯机制(ps:有点类似oicq,前生就是用的这种模式开发的即时通讯)
在前文中讲述了Linux服务端TCP通信出现CLOSE_WAIT状态的原因,这篇文章主要通过一个实例演示它个一个“恶劣”影响:直接使服务端进程Down掉。
在Linux后端服务网络通信开发中,可能会遇到CLOSE_WAIT的状况。引起TCP CLOSE_WAIT状态的情况很多,归根结底还是由于被动关闭的一方没有关闭socket链路导致的。这篇文章主要是通过用一个简单的例子通过TCPDUMP和Wireshark这两个工具来模拟产生CLOSE_WAIT的情况,下一篇主要是对这个问题的原理解释。
在早期运维工作中,查看服务器连接数一般都会用netstat命令。其实,有一个命令比netstat更高效,那就是ss(Socket Statistics)命令! ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。 ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。原因如下: 1)当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受
无论是软件开发人员,还是测试人员,亦或是运维人员,都需要掌握一些常用的基础网络知识,以用于日常网络问题的排查。这些基本的网络知识与概念,不仅日常工作会用到,跳槽时的笔试面试也会用到。本文结合多年来的工作实践,来详细讲述一下作为IT从业人员要掌握的一些基本网络知识。
TCP是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务器的内存里保存的一份关于对方的信息,如ip地址、端口号等。
Netcat 是跨平台的,可用于 Linux、macOS、Windows 和 BSD。你可以使用 Netcat 调试和监视网络连接、扫描打开的端口、传输数据、作为代理等等。Netcat 软件包已预安装在 macOS 和大多数 Linux 发行版(如:Ubuntu)上。
最近,有小伙伴在群里提问:Linux系统怎么设置tcp_nodelay参数?也有小伙伴说问我。那今天,我们就来根据这个问题来聊聊在高并发场景下如何优化服务器的性能这个话题。
在前文中讲述了Linux服务端TCP的某个链路变成CLOSE_WAIT状态,然后由于客户端已经关闭了(发送了RST标志的报文),那么服务端如果继续向这个链路中写入数据的话就会收到SIGPIPE信号而终止,这篇文章主要通过客户端进入CLOSE_WAIT后由于收到服务端产生的RST标志报文进入死循环的情况。注:RST表示复位,用来关闭异常的连接。
为了让大家更容易「看得见」 TCP,我搭建不少测试环境,并且数据包抓很多次,花费了不少时间,才抓到比较容易分析的数据包。
这些实验有助于让学生们深入了解TCP协议的运作方式,并通过实践加深对网络传输控制的理解。他们将有机会通过实验验证理论概念,观察TCP协议在不同情境下的行为,从而更好地掌握网络协议的本质和运作机制。
滑动窗口本质上是描述接受方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来。 关于滑动窗口协议,还有三个术语,分别是: 窗口合拢:当窗口从左边向右边靠近的时候,这种现象发生在数据被发送和确认的时候。 窗口张开:当窗口的右边沿向右边移动的时候,这种现象发生在接受端处理了数据以后。 窗口收缩:当窗口的右边沿向左边移动的时候,这种现象不常发生。
在Linux上做网络应用的性能优化时,一般都会对TCP相关的内核参数进行调节,特别是和缓冲、队列有关的参数。网上搜到的文章会告诉你需要修改哪些参数,但我们经常是知其然而不知其所以然,每次照抄过来后,可能很快就忘记或混淆了它们的含义。本文尝试总结TCP队列缓冲相关的内核参数,从协议栈的角度梳理它们,希望可以更容易的理解和记忆。注意,本文内容均来源于参考文档,没有去读相关的内核源码做验证,不能保证内容严谨正确。作为Java程序员没读过内核源码是硬伤。
网络编程几乎是每一门编程语言都会涉及的内容,虽然各种语言调用的方式可能不一样,但它们背后的原理支持都是一样的。因此本文将从TCP的连接的建立说起。在此之前,假设你已经对计算机网络有了最基本的认识。
原理非常简单,当在以上两种场景时,无法直接连接到webshell时,可以换一种策略。让webshell主动连接自己,而不是自己连接webshell。此时,又会产生两个问题。 一webshell如何自动自我唤醒自动发送连接; 二如何监听webshell发送的连接;
大家好,又见面了,我是你们的朋友全栈君。 在linux中防火墙的开启和关闭是可以通过命令来执行的,那么具体是哪个命令呢?下面由学习啦小编为大家整理了linux关闭防火墙的相关命令,希望对大家有所帮助。
为什么要性能调优? 大部分的linux发行版是为了完全兼容市场中大部分计算机而设计的。这是一个相当混杂的硬件集合(硬盘,显卡,网卡,等等)。所以Red Hat, Suse,Mandriva和其他的一些发行版厂商选择了一些保守的设置来确保安装成功。 简单地说:你的发行版运行的很好,但是它可以运行地更好! 比如,可能有一个具体一些特殊特性的高级硬盘,而这些特性在标准配置的情况下可能就没被启用。 磁盘子系统的调优 对于Linux的Ext3/4来说,几乎在所有情况下都有所帮助的一个参数是关闭文件系统访问时间,在/
nc就是netcat,官网:https://eternallybored.org/misc/netcat/
TCP/IP 协议栈进行稳定性或安全性测试,确保开发产品在遇到各种不规则的错误的IP 包时
https://nmap.org/dist-old/nmap-5.35DC1-setup.exe
来源:https://www.cnblogs.com/txlsz/p/13683892.html
最初这个问题是读者在我的 TCP 掘金小册的《TCP RST 攻击与如何杀掉一条 TCP 连接》小节中的一个留言提出的:「处于 ESTABLISHED 的连接,为什么还要响应 SYN 包?」,这篇文章就来聊聊这一部分的内容。
关于TCP协议相关内容看:http://networksorcery.com/enp/default.htm
很简单呀,因为我做了实验和看了 TCP 协议栈的内核源码,发现要增大这两个队列长度,不是简简单单增大某一个参数就可以的。
在Linux网络管理和监控领域,conntrack命令是一个强大的工具,它提供了对netfilter连接跟踪系统的直接访问🔍。这篇文章将深入探讨conntrack的由来、底层原理、参数意义,以及其常见用法,并对返回结果的每个字段进行详细解释。
PortShellCrypter支持对shell会话进行E2E加密,可以帮助研究人员在完全不需要了解底层传输机制的情况下,对会话信息进行可靠的加密。除此之外,PortShellCrypter还可以发送/接收Base64编码的数据而无需对数据进行修改或过滤。除了接收E2E PTY之后,还可以转发TCP和UDP连接,这个功能有些类似于OpenSSH的-L参数。而且不需要在信息发起点本地分配IP地址,这将允许取证人员或渗透测试人员通过下列方式创建网络连接:
服务器一般都是命令页面,不像 windows 有图形页面点点鼠标就好,所以掌握些基本的 Linux 命令是很有必要的,不然就无法操作 Linux,更体会不到 Linux 的精髓。
有些网络和应用程序还不支持 IPv6 ,因此,禁用 IPv6 可以说是一个非常好的选择: 加强系统的安全性,并提高系统的整体性能。不过,首先要确认一下:IPv6是不是处于动的状态,命令如下:
在检查主机是否在线的工具中 ping 可能是最著名的程序了,该工具向目标主机发送 ICMP 协议(Internet Control Message Protocol) 的echo request 数据包。如果目标主机在线且允许接受ping 请求,那么目标主机将回复 ICMP echo reply 数据包。
在Linux系统中,端口是用于网络通信的关键元素。通过端口,不同的进程可以在同一台服务器上进行通信。对于一个测试服务器而言,经常需要测试某个应用程序或服务是否在正确的端口上运行,以确保其可以正常工作。因此,掌握如何测试Linux服务器端口是非常重要的。本文将介绍几种测试Linux服务器端口的方法。
如非必须,关掉或卸载iptables防火墙,并阻止kernel加载iptables模块。这些模块会影响并发性能。
无论你用任何语言或者是网络库,你都可以设置网络操作的超时时间,特别是connect,read,write的超时时间。
数据可用性是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使用者的习惯与需求。以互联网网站的设计为例,希望让使用者在浏览的过程中不会产生压力或感到挫折,并能让使用者在使用网站功能时,能用最少的努力发挥最大的效能。基于这个原因,任何有违信息的“可用性”都算是违反信息安全的规定。因此,世上不少国家,不论是美国还是中国都有要求保持信息可以不受规限地流通的运动举行。
本节所涉及的概念有文件储结构(包括索引节点和目录项)、虚拟文件系统VFS、Linux I/O分类和磁盘的性能指标。涉及到的命令有stat、 df、iostat、 cat /proc/slabinfo、slabtop、pidstat和iotop。
TCP三次握手是建立一个可靠的连接的基础。在这个过程中,有两个重要的队列:半连接队列(SYN queue)和全连接队列(ACCEPT queue)。
TCP 性能的提升不仅考察 TCP 的理论知识,还考察了对于操作系统提供的内核参数的理解与应用。
Linux还是比较常用的,防火墙的关闭和开启可以通过命令来实现,下面由学习啦小编为大家整理了linux中关闭防火墙的命令,希望对大家有帮助!
之前我在「实战!我用“大白鲨”让你看见 TCP」这篇文章里做了 TCP 三次握手的三个实验:
利用 ethtool 可以根据需要更改以太网卡的参数,包括自动协商、速度、双工和局域网唤醒等参数。
TCP connect to 175.25.168.95:80: 501 iterations (warmup 1) ping test: Connecting to 175.25.168.95:80 (warmup): from 10.91.1.4:51531: 2.28ms Connecting to 175.25.168.95:80: from 10.91.1.4:51532: 1.86ms Connecting to 175.25.168.95:80: from 10.91.1.4:51533: 2.67ms .................... Connecting to 175.25.168.95:80: from 10.91.1.4:52029: 1.90ms Connecting to 175.25.168.95:80: from 10.91.1.4:52030: 2.69ms Connecting to 175.25.168.95:80: from 10.91.1.4:52031: 2.69ms Connecting to 175.25.168.95:80: from 10.91.1.4:52032: 2.39ms
nc(netcat)是一个简单、可靠的网络工具,可以用于实现任意TCP/UDP端口的侦听、端口扫描、机器之间传输文件等任务。
本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如、、、等。 本文不会深入研究这些命令的强大用法,因为每个命令都足以写一篇文章,本文只是简单地介绍并辅以几个简单demo实例,旨在大脑中留个印象,平时遇到问题时能够快速搜索出这些工具,利用强大的工具,提供一定的思路解决问题。 ping 使用这个命令判断网络的连通性以及网速,偶尔还顺带当做域名解析使用(查看域名的IP): ping google.com 默认使用该命令会一直发送ICMP包直到用户手动中止,
查看状态: iptables -L -n 下面添加对特定端口开放的方法: 使用iptables开放如下端口 /sbin/iptables -I INPUT -p tcp –dport 8000 -j ACCEPT 保存 /etc/rc.d/init.d/iptables save 重启服务 service iptables restart 查看需要打开的端口是否生效? /etc/init.d/iptables status
领取专属 10元无门槛券
手把手带您无忧上云