专栏名称: 吴师兄学算法
和程序员小吴一起从初学者的角度学习算法,以动画的形式呈现解题的思路。每周四篇原创文章,期待你的鉴赏!
目录
相关文章推荐
畅赏黑龙江  ·  别遗憾!黑龙江的冬天还没落幕!文末领好礼 ·  10 小时前  
畅赏黑龙江  ·  别遗憾!黑龙江的冬天还没落幕!文末领好礼 ·  10 小时前  
宁德广播电视台  ·  哪吒的粉丝们:福利来了,免票/半票! ·  2 天前  
宁德广播电视台  ·  哪吒的粉丝们:福利来了,免票/半票! ·  2 天前  
今日五莲  ·  免票!半价!哪吒粉丝福利来啦! ·  2 天前  
今日五莲  ·  免票!半价!哪吒粉丝福利来啦! ·  2 天前  
新播报  ·  刚刚通报:老板宋某,行拘10天! ·  2 天前  
新播报  ·  刚刚通报:老板宋某,行拘10天! ·  2 天前  
旅行雷达助手  ·  【历时5年重磅回归】珠海C位一线海景!山海地 ... ·  3 天前  
51好读  ›  专栏  ›  吴师兄学算法

学习网络请落实这几款小工具

吴师兄学算法  · 公众号  ·  · 2020-11-29 12:15

正文

在实际开发过程中,熟练使用Linux或者Windows中相关网络工具,可以更快更准地找到故障。 所以,今天就跟大家分享几个实用的网络利器。

1 nc

nc-->“瑞士军刀”。 不知大家在渗透过程中,拿了shell有没有使用nc搞点事儿。 它用来快速构建网络链接, 常用来调试客户端程序。

nc参数

举例

执行任务 命令
扫描机器A端口号在30-40的服务 nc -z A 30-40
连接服务器A端口号为5000 nc -C A 5000
传送文件 MachineA:nc -v -n ip port E:\a.exe

2 ping

用来实现对网络连通性探测。 我们知道网络上机器有唯一确定的IP地址,给对方发送数据包,根据返回的信息初步判断目标机器是否存在或者目标机器操作系统是啥。 那么,经常使用的ping,底层原理是什么,是TCP/UDP?

ping

在具体实现中,其实使用了 ICMP协议 (网际控制报文协议),它是一种基于 IP协议 的控制协议。 那么, ICMP协议 网际控制报文 协议 ,其报文什么样子呢?

下面分别阐述下字段含义:

  • 类型:表示ICMP的类型,如果为0表示请求类型,为8表示应答。

  • 代码:用来查找产生错误的原因。

  • 校验和:检查错误的数据。

  • 标识符:使用标识符确认到底是谁发送的控制协议。

  • 序列号:唯一确定的一个报文。

ping命令 组装成上述的IP报文进行发送,报文目的地为ping目的地址,原地址为发送ping主机地址,然后按照ICMP的规则填写数据。

随后IP报文通过 ARP协议 ,请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的 物理地址

查看详细参数

ping参数

常用参数

[-l] :定义所发送数据包的大小,默认为32字节。

[-n] :定义所发数据包的次数,默认为3次。

[-t] :表示不间断向目标IP发送数据包。

TTL

TTL 是 IP 协议包中的一个值,它告诉网络路由器,包在网络中的时间是否太长而应被丢弃。

  • TTL设置时间越长,那么缓存时间也就越长,更新也就越不容易生效。增大TTL可以节约域名解析时间从而加快网站的访问

  • 减小TTL值,减少更换空间时的不可访问时间

返回值

  • Request timed out

    可能出现的情况:

    -对方已经关机或者根本没有这个地址。

    -可能不在同一个网段,即使通过路由也无法找到对方从而出现超时。

    -对方存在但是设置了防火墙过滤。

  • Destination host Unreachable

    可能出现的情况:

    - 与对方不在同一个网段且没有设置默认路由

    - 网线出毛病

  • Bad IP address

    可能出现的情况:

    - I P地址不存在

    -没有正确连接DNS服务器从而无法解析

3 ifconfig/ip addr

查看服务器网卡、IP等信息。

ipaddr

上图中被马赛克的位置假设为10.172.100.3,这样就是一个IP地址,IP地址按照小数点分割为四部分,每部分占8字节,所以IP地址为32位。

那么,这样的IP地址一共有多少 呢?一共有2的32次方个,估算约为42.9亿个,除去一些特用的IP和一些不能用的IP,剩 下可用 的不到40亿。为解决网络地址资源不足的问题,从而出现IPV6,128位的IP地址。

刚开始觉得 32位 很够用了,还将其分为 5类 ,如下图所示:

网络地址分类

我们再看看各类地址的主机数量是多少?

上图中可知道C类地址太少了吧,但是B类地址又太多,怎么中和一下嘞?

无类型域间选路

CIDR地址中包含标准的32位IP地址和有关网络前缀位数的信息。比如10.172.100.3/24,IP地址斜杠后面数字24,代表前24位是网络号,后面8位为主机号。

如何得到网络号?

使用IP地址和子网掩码进行AND计算得到网络号。

4 tcpdump

和它类似的工具在windows中是wireshark,其采用底层库winpcap/libpcap实现,采用了bpf过滤机制。下面我们看看提供的不同参数的含义。

tcpdump

知道了相关参数,下面看几个案例。

执行任务 命令
捕获特定网口数据包
tcpdump -i eth0
捕获特定个数(1000)的包 tcpdump -c 1000 -i eth0
将捕获的包保存到文件 tcpdump -w a.pcap -i eth0
读取pcap格式的包 tcpdump -r a.pcap
增加捕获包的时间戳 tcpdump -n -ttt -i eth0
指定捕获包的协议类型 tcpdump -i eth0 arp
捕获指定端口 tcpdump -i eth0 post 22
捕获特定目标ip+port的包 tcpdump -i eth0 dst address and port 22
捕获DNS请求和响应 tcpdump -i eth0 -s0 port 53
匹配Http请求头 tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"

5 lsof

列出当前系统打开的文件描述符工具,可以得知感兴趣的描述符是被哪些进程使用。

同样,我们看看相关参数:

lsof

举例

执行任务 命令
列出所有的网络链接 lsof -i
列出所有udp的网络链接 lsof -i udp
列出谁在使用某个端口 lsof -i :3306
列出谁在使用特定的tcp端口 lsof -i tcp:80
根据文件描述范围列出文件信息 lsof -d 2-3

6 netstat

netstat是一个网络信息统计工具。它可以得到网卡接口上全部链接、路由表信息、网卡接口信息等。通常在网络编程中我们用它来显示TCP连接以及状态信息。

下面列举几个常用例子。

执行任务 命令
列出所有连接 netstat -a
只列出TCP或者UDP netstat -at/netstat -au
列出监听中的连接 netstat -tnl
获取进程名、进程号以及用户ID nestat  -nlpt
打印统计信息 netstat -s
netstat持续输出 netstat -ct
打印active状态的连接 netstat -atnp | grep ESTA
查看服务是否运行(npt) netstat -aple| grep ntp

7 dpkt

dpkt定义包packet类,它定义了网络报文类型的基础类。其中IP、ICMP等继承于dpkt class,每一个子类有一个 _hdr_ 结构,此结构定义了不同报文的头部,方便取出相应的控制字段。示例如下:







请到「今天看啥」查看全文