Troubleshooting(三):网络

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

前言

    在 Troubleshooting 过程中,检查完进程信息后,接下来就是排查网络情况的时候了,初略翻过《TCP/IP 详解卷一:协议》这本书,简直跟看《深入理解 Linux 内核》一毛一样,各种协议各种底层结构体,每个域代表不同的意思,许许多多的域组合在一起共同控制着网络和内核。

    Troubleshooting 系列仅仅整理工具和排查问题可能用到的命令,尽量不细述底层概念(功力有限我也写不出来)。

    curl netstat iptables network ifconfig ip地址配置 traceroute telnet ping lsof iftop(top系列)vpn tcpdump 等抓包,和各种网络攻击(后续单独整理)

 

网络状态

 

  • netstat

    显示网络相关信息(网络连接、路由表、接口状态等)

    常见的参数:

    -a    显示所有连接中的 socket

    -c    持续列出网络状态

    -n    尽量把别名转换成数字显示

    -o    显示计时器

    -p    显示正在使用 socket 的程序识别码和程序名称

    -i    显示网卡列表

    -s    显示网络统计信息

    -v    显示指令执行过程,与 -p 不可同用

    -t/u    tcp/udp 连接状况

 

    netstat 的输出结果可分为两个部分:

    1、Active Internet connections:有源 TCP 连接,列中 Recv-Q 和 Send-Q 为接受队列和发送队列,如果没有堆积一般都为 0。

    2、Active UNIX domain sockets:有源 Unix 域套接口(只能用于本机通信,性能较高),RefCnt 表示连接到套接口的进程号。

    套接口的类型:TCP、UDP、RAW、UNIX 域 等

    状态:

    LISTEN:处于监听状态ESTABLISHED:表示打开的一个连接SYN-SENT:发送连接请求后等待匹配的状态SYN-RECEIVED:收到和发送一个连接请求后等待对方确认连接请求FIN-WAIT-1:等待远程 TCP 连接中断请求,或之前的连接中断请求确认FIN-WAIT-2:从远程 TCP 等待连接中断请求CLOSE-WAIT:等待从本地用户发来的连接中断请求CLOSING:等待远程 TCP 对连接中断的确认LAST-ACK:等待原来的发向远程 TCP 的连接中断请求的确认TIME-WAIT:等待足够的时间以确保远程 TCP 接收到连接中断请求的确认CLOSED:没有任何连接状态

 

    通过 netstat 可以查看连接本机的ip,通过 uniq 可以统计出连接 ip 的数量。

        

  • curl

    curl 是一款用于上传下载的传输工具,支持 http/https/ftp/imap/pop3 等协议,同时也支持断点续传,功能十分强大。

    PS:本人用的最多的是在无图形界面的 linux 上测试网页状态,将网页输出到界面上:

    curl http://www.baidu.com

    -o:保存网页至指定文件-O:保存服务器上指定文件,url 需要明确指定文件名-C/--continue-at:断点续传,可指定位置获取数据,假设文件大小为1000字节,-C 100 代表获取 100-999 的数据-r:分块下载,类似于 -C,可以使用区间,-r 0-1024 代表获取 0-1024 的数据,cat part* > all 即可以合并-T/--upload-file:上传,-T "file[1-100].txt" ftp://myserver.com/upload/、-T "{file1.txt, file2.txt}" http://myserver.com-d/--data:post 请求,-d "id=1&name=test" http://myserver.com/example.php-F/--form:上传,-F "password=@/etc/passwd" www.mypasswords.com-e/--referer:伪造 referer(盗链),服务器一般会检查 http 请求的 referer,用于控制访问,也就是告诉服务器你是从哪个页面跳转过来的,-e "www.baidu.com" http://www.baidu.com 告诉服务器你是从 www.baidu.com 跳转过来的-A/--user-agent:定义 user agent,伪装成一个指定的浏览器,-A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)http://www.baidu.com-b/--cookie:有的网站会查看 cookie 信息来判断是否按规定浏览,-b /cookie.txt http://www.baidu.com 使用本地 cookie.txt 里的 cookie 信息来访问,也可以输入参数和值:-b "name=wade" http://www.baidu.com-c/--cookie-jar:保存操作时生成的 cookie 文件,-c ./cookie.txt http://www.baidu.com-w/--write-out:自定义输出内容,-w %{http_code} -w "time=%{time_total}\n" http://www.baidu.com 打印返回的 http 码和响应时间,还有很多参数可以打印。-u/--user: <user[:password]> 用户名和密码,curl -O -u username:passwd ftp://www.linux.com/file.txt 从 ftp 服务器下载文件(也可以 curl -O ftp://username:passwd@www.linux.com/file.txt)-x/--porxy:上网很多时候需要用到代理服务器,-x 192.168.1.1:8080 http://www.baidu.com 使用代理服务以及端口访问-s/--silent:静音模式

 

    当然,curl 还有很多别的功能,只是列了几个常用的选项,附上一个写的不错的博客:http://www.ruanyifeng.com/blog/2011/09/curl.html,可参考。

 

  • iptables

    可参考《2小时玩转 iptables》pdf

    ipset 是 iptables 的扩展,允许创建一个匹配整个地址的地址集合,而 iptables 仅仅支持线性存储和过滤,地址集合可提高查找的速率。

    #iptables + ipset:centos 默认没有安装 iptables 和 ipsetyum install iptables-services ipset#创建一个新的 ipset,ipset 默认可存储 65536 个 element,可通过选项 maxelem 修改数量ipset create my_ipset hash:nat (maxelem 65536)#查看以创建的 ipset ipset list#添加一个ip 到 ipset 中ipset add my_ipset 192.168.1.1#从 ipset 中去除一个 ipipset del my_ipset 192.168.0.1#在创建 iptables 规则链时使用 ipsetiptables -I INPUT -m set --match-set my_ipset src -p tcp --destination-port 22 -j DROP#删除 ipsetipset destroy my_ipset#将 ipset 规则保存到文件ipset save my_ipset -f my_ipset.txt#从文件中导入 ipset 规则ipset restore -f my_ipset.txt

    ipset 支持动态修改地址集合,哪怕 iptables 正在使用这个集合,这样在生产环境上面就可以很好的管理黑名单列表,而不用重启 iptables 了。

 

  • telnet

    telnet 是一款基于 telnet 协议的远程工具,Telnet 协议是 TCP/IP 协议家族中的一员,是一个远程登录服务的标准协议,但是由于 telnet 采用明文传送报文,没有使用公钥私钥加密,所有大都服务器都没有开放 telnet 服务,而使用加密的ssh 方式。

    一般使用 telnet 大都是检查远程服务器的某个端口是否能访问。

    telnet 192.168.0.1 22

    Telnet 实例还可以将键盘连接到某个目标 TCP 端口,并将此 TCP 端口输出回送到显示屏上,它几乎可以连接所有的 TCP 服务器,包括 HTTP 服务器。

    通过 Telnet 程序直接与 Web 服务器进行对话,通过 Telnet 可以打开一条到某台机器上某个端口的 TCP 连接,然后直接向那个端口输入一些字符,Web 服务器会将 Telnet 程序做为一个 Web 客户端来处理,所有回送给 TCP 连接的数据都会显示在屏幕上。

    步骤:

    1、首先,向 DNS 服务器查找 www.joes-hardware.com 的 IP 地址,打开一条到目标服务器端口 80 的 TCP 连接,当然 Telnet 会为我们完成这些。2、在完成打开一条 TCP 连接后,Telnet 会输出三行内容,告诉我们已经建立了连接。3、接下来就要输入 HTTP 请求了4、请求结束后(由一行空行表示),服务器会在一条 HTTP 响应中将内容返回并关闭连接。

    输出:

    Telnet 虽然可以很好的模拟 HTTP 客户端,但是并不能作为服务器使用,而且 Telnet 做自动化很繁琐,可以使用 nc(netcat)方便的操纵基于 TCP 和 UDP 的流量(包括 HTTP)

 

 

 

 

 

 

 

 

    

        

 

 

 

 

 

    

    

    

 

 

 

 

 

 

 

 

    

转载于:https://my.oschina.net/u/2470065/blog/776719

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SqlServer 备份还原教程

看了众多教程&#xff0c;自己也写个增强记忆&#xff0c;错误地方麻烦指出。 ———————————————————————-备份——————————————————————– 1.打开数据库&#xff0c;成功连接 2.找到要备份的数据库&#xff0c;图中演示备份数据库te…

深入理解计算机系统----读书笔记

第二部分 信息的表示和处理 信息存储&#xff1a; 二进制&#xff08;0101001&#xff09;&#xff0c; 八进制&#xff0c;十六进制&#xff08;0x32FD&#xff09; 字&#xff08;word size&#xff09;指明整数和指针数据的标称大小&#xff08;normal size&#xff09;&…

OpenStack-Zun 使用

Zun组件简介 Zun是Openstack中提供容器管理服务的组件&#xff0c;于2016年6月建立。Zun的目标是提供统一的Openstack API用于启动和管理容器&#xff0c;支持多种容器技术。Zun原来称为Higgins&#xff0c;后改名为Zun。 Zun计划支持多种容器技术&#xff0c;Docker&#xff0…

js进阶 14-8 表单序列化函数serializeArray()和serialize()的区别是什么

js进阶 14-8 表单序列化函数serializeArray()和serialize()的区别是什么 一、总结 一句话总结&#xff1a;两者都是对表单进行序列化&#xff0c;serializeArray()返回的是json对象&#xff0c;serialize()返回的是json形式的字符串&#xff0c;使用起来都是一样的 1、$&#x…

linux 7.2中文命令,CentOS7如何支持中文显示

1.查看系统是否安装有中文语言包locale -a | grep "zh_CN" 命令含义&#xff1a;列出所有可用的公共语言环境的名称&#xff0c;包含有"zh_CN"若出现图中所示几项&#xff0c;那么说明系统中已经安装了语言包&#xff0c;不需要在安装。含义是&#xff1a;…

别人7天乐,运维还苦逼值班?

你被点名值班了吗&#xff1f;或者你的朋友、隔壁七大姑八大姨的侄子被点名值班了吗&#xff1f; 国庆将至&#xff0c;大家都开始研究各种度假攻略了&#xff0c;国内游、国外游、地球游、外星游。。。然而总有一票人&#xff0c;默默地职守着 -- tIT 公司运营支撑组/运维组。…

【常用损失函数】

一、Smooth L1 Loss 1.公式&#xff1a; 2.原因&#xff1a; L1损失使权值稀疏但是导数不连续&#xff0c;L2损失导数连续可以防止过拟合但对噪声不够鲁棒&#xff0c;分段结合两者优势。 二、Focal Loss 1.公式&#xff1a; 2.作用&#xff1a; 使得正负样本平衡的同时&#x…

linux 读取内存颗粒,linux查看主板内存槽与内存信息的命令dmidecode怎么用

在Linux中&#xff0c;我们常常使用命令来实现许多操作&#xff0c;比如查看内存信息等&#xff0c;下面小编就为大家带来一篇linux查看主板内存槽与内存信息的命令dmidecode方法。小编觉得挺不错的&#xff0c;现在就分享给大家&#xff0c;也给大家做个参考。一起跟随小编过来…

Java对象容器——List

为什么80%的码农都做不了架构师&#xff1f;>>> 在Java中&#xff0c;我们可以用数组来存放同类型的变量或对象&#xff0c;但是数组有一个缺陷&#xff0c;它的长度不可变&#xff0c;必须在定义时给定其长度&#xff0c;所以说在一些场合下不适用。例如我们要存放…

STL学习笔记(数值算法)

运用数值算法之前必须先加入头文件<numeric> 加工运算后产生结果 1.对序列进行某种运算 T accumulate(InputIterator beg,InputIterator end, T initValue) T accumulate(InputIterator beg,InputIterator end, T initValue,BinaryFunc op) 1.第一种形式计算InitValue和…

angualejs

为什么80%的码农都做不了架构师&#xff1f;>>> http://segmentfault.com/a/1190000000347412 http://www.xker.com/page/e2015/06/199141.html http://www.runoob.com/angularjs/angularjs-application.html http://blog.csdn.net/lglgsy456/article/details/3690…

SPOJ SORTBIT Sorted bit squence (数位DP,入门)

题意&#xff1a; 给出一个范围[m,n]&#xff0c;按照二进制表示中的1的个数从小到大排序&#xff0c;若1的个数相同&#xff0c;则按照十进制大小排序。求排序后的第k个数。注意&#xff1a;m*n>0。 思路&#xff1a; 也是看论文的。一开始也能想到是这种解法&#xff0c;枚…

mysql日志(介绍 路径修改 备份)

2019独角兽企业重金招聘Python工程师标准>>> 环境&#xff1a;senos6 软件&#xff1a;mysql2.6.20 mysql日志&#xff1a; 错误日志 一般查询日志 慢查询日志 二进制日志 只记录DDL&#xff0c;DML等引起数据库改变的操作都会记录下来 复制&am…

Algorithm I assignment Collinear

这本来应该是第三周的作业&#xff0c;但是由于其他作业逼近deadline&#xff0c;暂时推后了一周完成。 这周的assignment大大提高了我对这门课的看法&#xff0c;不得不说&#xff0c;Algorithms这门课的assignment部分设计得很好。为什么好&#xff1f;个人认为有以下几点&am…

Java BigDecimal详解

1.引言 float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算&#xff0c;这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而&#xff0c;它们没有提供完全精确的结果&#xff0c;所以不应该被用于要求精确结果的场合。但是…

windows 串口编程 c语言,windows下C语言版串口发送程序(基于VS2017)

#include "tchar.h"#include int main(){/*****************************打开串口*************************************/HANDLE hCom;//全局变量&#xff0c;串口句柄hCom CreateFile(_T("COM3"),//COM3口GENERIC_READ | GENERIC_WRITE,//允许读和写0,/…

scikit-learn决策树算法类库使用小结

之前对决策树的算法原理做了总结&#xff0c;包括决策树算法原理(上)和决策树算法原理(下)。今天就从实践的角度来介绍决策树算法&#xff0c;主要是讲解使用scikit-learn来跑决策树算法&#xff0c;结果的可视化以及一些参数调参的关键点。 1. scikit-learn决策树算法类库介绍…

c语言编写程序求8,使用c语言编写程式,实现计算1*2*3+4*5*6+7*8*9+……+28*29*30的值...

使用c语言编写程式&#xff0c;实现计算1*2*34*5*67*8*9……28*29*30的值以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;使用c语言编写程式&#xff0c;实现计算1*2*34*5*67*8*9……28*29*3…

PHP 正则表达式分割 preg_split 与 split 函数

为什么80%的码农都做不了架构师&#xff1f;>>> preg_split() preg_ split() 函数用于正则表达式分割字符串。 语法&#xff1a; array preg_split( string pattern, string subject [, int limit [, int flags]] ) 返回一个数组&#xff0c;包含 subject 中沿着与…

简单学C——第五天

结构体 首先明确&#xff0c;结构体是一种构造的数据类型&#xff0c;是一种由多个数据类型如 int&#xff0c;char&#xff0c;double&#xff0c;数组或者结构体......组成的类型,现在告诉大家如何定义一个结构体。在定义int整型变量时&#xff0c;大家肯定都知道 int a; 即…