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

前言

在 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

Troubleshooting(三):网络相关推荐

  1. nova 命令汇总三 ——网络相关命令

    nova 命令汇总三 --网络相关命令 和网络相关的操作主要包括:add-fixed-ip.add-floating-ip.add-secgroup.fixed-ip-get .fixed-ip-re ...

  2. 计算机国三网络技术,计算机国三网络技术.doc

    计算机国三网络技术计算机国三网络技术 第一章 计算机基础 1.1 计算机系统的组成 <1>年份事件: 1946 ENIAC 第一台计算机诞生 1969 ARPNET产生 互联网的诞生 19 ...

  3. 网络三.网络传输设备:集线器,交换机,路由器

    网络三.网络传输设备 3.1 信号在网线和集线器中传输 3.1.1 每个包都是独立传输的 计算机发送的数据通过集线器.路由器等设备被转发,最终到达目的地.中间的转发设备不会影响到包里面的数据:数据流向 ...

  4. Wireshark网络抓包(三)——网络协议

    一.ARP协议 ARP(Address Resolution Protocol)地址解析协议,将IP地址解析成MAC地址. IP地址在OSI模型第三层,MAC地址在OSI第二层,彼此不直接通信: 在通 ...

  5. 【转】Wireshark网络抓包(三)——网络协议

    转自:https://www.cnblogs.com/strick/p/6262284.html 一.ARP协议 ARP(Address Resolution Protocol)地址解析协议,将IP地 ...

  6. Vagrant (三) - 网络配置

    这个章节脱胎于我早期的blog文章,订正了一下句法和准确性. 原始的文字在 VAGRANT 网络配置 (HIDE) 网络配置 Vagrant可以指定三种网络:端口转发(Forwarded Ports) ...

  7. linux服务器开发三(网络编程)

    转载自:http://www.cnblogs.com/zfc2201/archive/2017/05/04/6804990.html 作者:水之原 网络基础 协议的概念 什么是协议 从应用的角度出发, ...

  8. 【网络互联技术】(三) 网络互联基础。

    转载请标明出处: http://blog.csdn.net/sk719887916/article/details/46773109 作者:skay  一 互联技术 虽然作为程序员来讲不必过多的去了解 ...

  9. Java三:网络编程 视频来源:https://www.bilibili.com/video/BV1LJ411z7vY

    一.网络编程 1.概述 (1)什么是计算机网络:将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息 ...

  10. 飞鸽传书源码分析三-网络

    转载请注明出处:http://blog.csdn.net/mxway/article/details/44195099 本文是在飞鸽传书2.06源码基础之上进行分析的. 一.网络的初始化 飞鸽传书主窗 ...

最新文章

  1. JSF, MyFaces, RichFaces 和 Facelets的区别
  2. 图像像素点赋值_Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像...
  3. 2020mysql安装教程_2020MySQL安装图文教程
  4. 浅谈Java中的hashcode方法
  5. matlab 显示歌词,【Matlab编程】生日快乐歌(显示歌词)—matlab版
  6. Ssm框架实现的学生信息管理系统
  7. 使用python来操作hive(通过 pyhs2 和 HiveServer2)
  8. ElasticSearch全文搜索引擎之Windows集群搭建
  9. html 抽签分小组代码,JavaScript实现班级抽签小程序
  10. C#序列化枚举为字符串和自定义转换器
  11. 2022年政府工作报告词频分析
  12. Spring学习笔记10 - Spring配置文件参数划分析
  13. 黑鲨重装计算机安装无法继续,图解黑鲨装机大师装机失败无法开机怎么办?
  14. 传奇世界3D手游电脑版使用教程:无需安卓模拟器,tcgames完美适配
  15. 卡梅 计算机生物专业怎么样,【智友学子】X同学----卡耐基梅隆大学 计算生物学...
  16. 批量识别条形码和二维码
  17. A股上市公司裁判文书数据
  18. 读书笔记--推荐系统实践(4)
  19. Facebook等使用苹果源生分享
  20. 火鸟Firebird数据库的中文参考资料

热门文章

  1. oracle平均活动会话数,Oracle11g r2的活动会话数问题解决
  2. Effective C++学习第十一天
  3. cmake构建工具 初步01
  4. C++ 类模板遇到继承的问题以及解决
  5. java abstractrequest,Java AbstractJackson2HttpMessageConverter類代碼示例
  6. Linux系统编程---13(线程控制函数,创建线程,循环创建多个线程,线程间共享全局变量)
  7. windows环境下C语言socket编程
  8. 会话(session)
  9. Python内置数据类型之list
  10. CSS清除默认样式,经典好文