C语言再学习 -- Linux常用网络调试工具

这篇具有很好参考价值的文章主要介绍了C语言再学习 -- Linux常用网络调试工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参看:Linux常用网络调试工具

linux常用指令,之前我也总结了不少了。
参看:C语言再学习 – Linux 中常用基本命令
参看:Hi3516A开发–环境搭建工具

下面看看网络调试相关的工具:

1、ifconfig

ifconfig 命令用于检查或设置机器上的网卡。

ifconfig 语法:

ifconfig(参数)
参数
add<地址>:设置网络设备IPv6的ip地址; 
del<地址>:删除网络设备IPv6的IP地址; 
down:关闭指定的网络设备;
<hw<网络设备类型 ><硬件地址>:设置网络设备的类型与硬件地址; 
io_addr:设置网络设备的I/O地址; 
irq:设置网络设备的IRQ; 
media<网络媒介类型>:设置网络设备的媒介类型;
mem_start<内存地址>:设置网络设备在主内存所占用的起始地址; 
metric<数目>:指定在计算数据包的转送次数时,所要加上的数目; 
mtu<字节>:设置网络设备的MTU; 
netmask<子网掩码>:设置网络设备的子网掩码; 
tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址; 
up:启动指定的网络设备; 
-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理; 
-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能; 
-promisc:关闭或启动指定网络设备的promiscuous模式; 
IP地址:指定网络设备的IP地址; 网络设备:指定网络设备的名称。

显示网络设备信息:

C语言再学习 -- Linux常用网络调试工具,网络,c语言,学习

启动关闭指定网卡

ifconfig eth0 up
ifconfig eth0 down 

用ifconfig修改MAC地址:

ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE 

配置IP地址:

# ifconfig eth0 192.168.2.10 
# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 
# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255 

设置最大传输单元:

ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为 1500 bytes

2、ping

ping 命令是最常用的命令之一,用于检查两个设备之间网络是否连通:

ping ip地址/域名  //默认为4个数据包,之后自动停止。

后缀增加 -t:不断使用ping命令发送回响请求信息到目的地,即长ping。要终端并退出ping,按“Ctrl+c”即可。

后缀增加-a:制定对目的地IP地址进行反向名称解析。如果解析成功,ping将显示相应的主机名。

后缀增加-n Count:制定发送回响请求消息的次数,默认值为 4。

后缀增加-l size:制定发送的回响请求消息中 “数据字据的长度”(以字节表示)。默认值为32,size的最大值为65527。

后缀增加-i TTL:指定发送回响请求消息的IP标题中的TTL字段值。其默认值是主机的默认TTL值。TTL值最大值为255。

ping IP并显示测试结果脚本:

@echo off
:: 设置窗口底色为绿色
color FF
title wifi功能测试

echo.
echo.

ping -n 5 127.1 >nul

ping -n 2 www.baidu.com > %temp%\1.ping & ping -n 2 www.baidu.com >> %temp%\1.ping   
::ping阿里公共DNS

findstr "TTL" %temp%\1.ping > nul
if %errorlevel%==0 (echo     √ 外网正常) else (echo     × 外网不通)         
::根据返回值输出

::删除缓存文件
if exist %temp%\*.ping del %temp%\*.ping

echo.
echo.
pause

说明:

D:\>ping -n 2 123.125.114.144>%temp%\1.ping & ping -n 2 180.76.76.76>>%temp%\1.ping

D:\>echo %temp%\1.ping
C:\Users\000\AppData\Local\Temp\1.ping

查看 PC“环境变量”
TEMP
%USERPROFILE%\AppData\Local\Temp

D:\>cat %temp%\1.ping

正在 Ping 123.125.114.144 具有 32 字节的数据:
来自 123.125.114.144 的回复: 字节=32 时间=2ms TTL=56
来自 123.125.114.144 的回复: 字节=32 时间=2ms TTL=56

123.125.114.144 的 Ping 统计信息:
    数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 2ms,最长 = 2ms,平均 = 2ms

正在 Ping 180.76.76.76 具有 32 字节的数据:
来自 180.76.76.76 的回复: 字节=32 时间=3ms TTL=56
来自 180.76.76.76 的回复: 字节=32 时间=3ms TTL=56

180.76.76.76 的 Ping 统计信息:
    数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 3ms,最长 = 3ms,平均 = 3ms

/ findstr 命令
findstr是Window系统自带的命令,用于查找某路径下指定的一个或多个文件中包含某些特定字符串的行,并将该行完整的信息打印出来,或者打印查询字符串所在的文件名。其用途和用法类似Linux下的grep命令。findstr命令在MS-DOS下使用。

D:\>findstr "TTL" %temp%\1.ping
来自 123.125.114.144 的回复: 字节=32 时间=2ms TTL=56
来自 123.125.114.144 的回复: 字节=32 时间=2ms TTL=56
来自 180.76.76.76 的回复: 字节=32 时间=3ms TTL=56
来自 180.76.76.76 的回复: 字节=32 时间=3ms TTL=56

::错误码errorlevel或称返回码,常见的返回码为01
D:\>echo %errorlevel%
0

D:\>

3、telnet

telnet 也是最常用的命令之一,telnet 能够用于连接某个服务器并和它进行通信,如果不指定目标主机的端口,则默认向其 23 号端口发起连接请求。

通常指定目标主机和端口:

telnet ip/域名 端口

参看:Hi3516A开发–环境搭建工具
telnet远程控制 部分

4、netstat

netstat 用于查看主机的网络连接状态,常用有以下选项:

  1. -a (或–all): 显示所有 Socket,不使用该选项时不会显示 LISTEN 状态的选项。
  2. -t (或–tcp): 显示 TCP 协议的连接情况。
  3. -u (或–udp): 显示 UDP 协议的连接情况。
  4. -n (或–numeric): 使用 ip 地址显示,而不是显示域名。
  5. -l (或–listening): 显示处于 LISTEN 状态的 Socket。
  6. -p (或–programs): 显示 Socket 对应的程序名称。
  7. -c (或–continuous): 持续显示信息。

例如:查看所有的 TCP 相关选项:
C语言再学习 -- Linux常用网络调试工具,网络,c语言,学习

5、nc(netcat)

nc,全名叫 netcat,它可以用来完成很多的网络功能,譬如端口扫描、建立TCP/UDP连接,数据传输、网络调试等等,因此,它也常被称为网络工具的 瑞士军刀 。

安装

apt-get install netcat

常用选项:

-4:只使用 IPv4 地址
-6:只使用 IPv6 地址
-l:启动本地监听
-n:不使用 DNS 解析
-p:指定源端口
-s:指定源 IP 地址
-u:使用 UDP,默认是 TCP
-v:显示详细信息
-w:设定超时时间(只适合用在 Client 端)
-d:禁止从标准输入读取数据,也就是客户端输入数据不会发送到服务端
-k:让服务端保持连接,不断开

详细的可以通过指令: nc -help 查看。

使用

1、启动一个服务器程序。

nc -v -l 127.0.0.1 8080

指定-l选项(listening)用于监听端口,-v选项(verbose)用于输出更详细的信息,一般都会带上这个选项。如果希望其他主机访问这个服务器,可以指定监听 0.0.0.0 地址。

2、模拟一个客户端程序。

nc -v baidu.com 80

就是去除掉上面的-l选项就行,上面的命令会在本地启动一个客户端程序对 baidu.com 的 80 号端口进行连接,而客户端套接字的端口号是随机的,我们可以使用-p选项来指定本地套接字的端口号:

nc -v -p 5000 baidu.com 80

连接之后就能够发送消息了。此外,上述指令的连接端口号可以指定一个范围,这样就可以对主机进行端口扫描,获取目标主机开放的端口:

nc -v -z 192.168.1.46 8000-9000 2>&1 | grep succeed

其中-z选项为连接后不发送数据,我们只需要知道端口是否能连接上,不需要通信。由于-v选项输出是在[stderr]上,因此需要将其重定向到[stdout]上便于 grep 抓取成功的端口。扫描端口功能一般是黑客常用的一个功能,在对目标主机进行攻击前,获取其开放的端口。
C语言再学习 -- Linux常用网络调试工具,网络,c语言,学习
此外,为了验证防火墙是否有效,也可以使用 nc 命令的模拟客户端程序来验证。

3、udp 通信测试
在服务器端:

nc -ul 127.0.0.1 8080

指定-u选项为 UDP 工作模式。

在客户端:

nc -u 127.0.0.1 8080

4、传输文件
nc 不仅可以发送消息,还可以发送文件,只要使用 shell 提供的重定向功能就行:
接收端:

nc -l IP地址 端口号 > recv.txt

发送端:

nc IP地址 端口号 < send.txt

这样就把发送端的 send.txt 文件通过接收端的某端口号传输过去了,接收端将文件重新命名为 recv.txt。

5、端口扫描
端口扫描是一个非常重要的功能,很多时候系统管理员会通过扫描服务器上端口,来识别系统中漏洞,nc 工具提供了非常方便的操作:

nc -vz 192.168.0.117 1-100

这条命令扫描 192.168.1.3 上 1-100 端口区间,有哪些端口是开放的。

# nc -vz 192.168.0.117 1-100
...
nc: connect to 192.168.0.117 port 21 (tcp) failed: Connection refused
Connection to 192.168.0.117 22 port [tcp/ssh] succeeded!
nc: connect to 192.168.0.117 port 23 (tcp) failed: Connection refused
...

可以看到,只有 22 号端口是开放的。

更多参看:Linux网络命令必知必会之瑞士军刀 nc(netcat)

6、lsof

lsof(list opened file desciptor)是Linux上查看系统打开的文件描述符的命令,需要使用 apt 或 yum 包管理器进行安装。

由于网络套接字在 Linux 系统中也是用文件描述符来管理,因此可以使用 lsof 来查看网络的连接情况,lsof 通过 -i 选项可以只显示网络连接相关的信息,使用 -P 选项可以显示端口号而不是别名,使用 -n 选项可以显示 IP 地址而不是其别名。
C语言再学习 -- Linux常用网络调试工具,网络,c语言,学习

7、tcpdump

tcpdump 是Linux系统提供的强大抓包工具,通过命令的形式提供类似于 wireshark 的功能,同样可以使用包管理器进行安装。

常用的命令选项:

-i: 指定需要抓包的网卡名称,如果需要抓取所有网卡的包可以指定为 any。
-X: 以十六进程格式显示数据包的内容,不包括链路层的包头信息。可以指定 -XX 查看链路层包头信息。
-n: 不使用 IP 地址的别名显示,-nn 为不使用 IP 地址和端口的别名显示。
-S: 使用绝对包序号(seq字段)而不是相对序号。
-v: 显示详细抓包过程,-vv可以显示更详细的过程。
-w: 将抓取的数据包保存到文件中,该选项后面跟文件名。
-r: 从指定的文件(上面使用-w选项保存的文件)中读取数据包数据。

此外,tcpdump 最强大之处在于可以使用过滤表达式来对抓取的包进行过滤,就像 wireshark 一样。

  1. host 过滤器(指定主机)
tcpdump -i any host 127.0.0.1    // 抓取从 127.0.0.1 发出或收到的包
  1. net 过滤器(指定网段)
tcpdump -i any net 192.168.1    // 抓取从网段 192.168.1.x 发出或收到的包
tcpdump -i any net 192.168.1.0/24  // 使用 CIDR 格式
  1. port 过滤器(指定端口)
tcpdump -i any port 8000   // 抓取发送或接收端口为 8000 的包
  1. 通过 src 和 dst 过滤方向
tcpdump -i any src 192.168.1.1  // 抓取发送端地址为 192.168.1.1 的包
  1. proto 过滤器(指定协议:tcp, udp, icmp, igmp, arp等)
tcpdump -i any icmp       // 抓取 ICMP 协议包
  1. 过滤器之间可以通过逻辑符号(and, or, not)进行组合。
tcpdump -i lo src port 8000 and dst port 8001

这里举例来说明如何使用。
观察一下 TCP 连接时三次握手过程。使用两台主机,目标主机名为 fxd-pi,在上面使用 nc 启动一个 8000 端口的监听服务器,并使用 tcpdump 进行抓包,过滤端口为 8000 的包。在另一台机器(这里称为本地机器)通过 nc 连接,可以看到如下包:
C语言再学习 -- Linux常用网络调试工具,网络,c语言,学习
可以看到,首先是本地机器向 fxd-pi 发送的一个请求同步报文(标志为[S],就是 SYN),然后 fxd-pi 回复了一个应答报文(标志为[S.], 是SYN-ACK),然后本地机器再回复了一个应答报文,三次握手成功。

然后我们可以仔细分析一下报文的内容,这里使用 -X 选项,因此报文包含了 IP 报文的首部和 TCP 报文的首部。对其中关键位置的内容进行验证,以第一个报文为例,第 13-16 字节内容为0x0a8663f5,对应源 IP 地址 10.134.99.245;第 17-20 字节内容为0x0a8662ec,对应目的 IP 地址为 10.134.98.236。
C语言再学习 -- Linux常用网络调试工具,网络,c语言,学习
再往后面就是 TCP 报文内容,由于是 SYN 同步报文,因此没有携带任何内容,后面的 40 个字节全都是 TCP 首部,这从 TCP 首部中的首部长度字段也可以看出来。其中 0xb20a 和 0x1f40 分别为源端口号和目的端口号。
C语言再学习 -- Linux常用网络调试工具,网络,c语言,学习文章来源地址https://www.toymoban.com/news/detail-810070.html

到了这里,关于C语言再学习 -- Linux常用网络调试工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux系统gdb调试常用命令

    GDB(GNU调试器)是一款常用的调试工具,用于调试C、C++等编程语言的程序。以下是一些常用的GDB命令: 1. 启动程序:    - `gdb executable`:启动GDB调试器,并加载可执行文件。 2. 设置断点:    - `break line`:在指定行设置断点。    - `break function`:在指定函数的入口处设置断

    2024年02月10日
    浏览(39)
  • 【调试工具】UDP/TCP网络调试助手 NetAssist

    一、使用场景: 项目定制需求:前端的车载终端把gps、报警信息、报警图片、其他检测数据发往约定的第三方服务器,车载终端通过公网(SIM拨号或者有线网)以udp或者tcp连接服务器,并把数据发往服务器。因为项目开发时一般要不到现场实际服务器的ip和端口以及服务器环

    2024年04月24日
    浏览(42)
  • linux内核调试工具记录

    Linux性能测试使用的工具在github网站可见,网址如下: slides: http://www.slideshare.net/brendangregg/linux-performance-analysis-new-tools-and-old-secrets video: https://www.usenix.org/conference/lisa14/conference-program/presentation/gregg 也可通过git下载,可以看到相关脚本的试下: git clone --depth 1 https://github.com/br

    2024年02月16日
    浏览(53)
  • Linux: GDB 调试工具

      目录 概念: Linux 下 debug 和 release 的区别: GDB 的使用 :  激活和进入工作模式:  查看文件的内容: 运行调试的文件:  打断点:   查看断点: 删除断点: 禁用断点: ​编辑 重新打开断点:  逐过程 与 逐语句: 查看变量/监视功能:  常显示:  运行至下一个断点

    2024年02月19日
    浏览(39)
  • NetAssist网络调试工具使用指南 (附NetAssist工具包)

    1、NetAssist简介 NetAssist网络调试助手,是Windows平台下开发的TCP/IP网络调试工具,集TCP/UDP服务端及客户端于一体,是网络应用开发及调试工作必备的专业工具之一,可以帮助网络应用设计、开发、测试人员检查所开发的网络应用软/硬件产品的数据收发状况,提高开发速度,简

    2024年02月16日
    浏览(72)
  • 汇编语言调试工具:DosBox及debug安装配置使用教程

            学习汇编语言时,需要进入dos模式并使用debug工具调试。但是64位win10系统没有自带这些工具。因此,需要额外安装DosBox和debug.exe两个软件。本文介绍如何下载、安装、配置这两个工具软件。  简介 DOSBox 是一个 DOS 模拟程序,由于它采用的是 SDL 库,所以可以很方便的

    2024年02月11日
    浏览(47)
  • RK3568平台开发系列讲解(调试篇)Linux 性能调试工具汇总

    🚀返回专栏总目录 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将汇总介绍 Linux 调试优化的工具。 我们来看 Linux 的性能工具。首先还是要推荐下面这张图,也就是 Brendan Gregg 整理的性能工具谱图。我在专栏中多次提到过,你肯定也已经参考过。 这张图从

    2023年04月15日
    浏览(83)
  • Linux的调试工具 - gdb(超详细)

    程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,发布成debug模式 注: 如果没有断点,程序将运行到底 注: 单条执行需要在调试启动的情况下进行,需要先打断点

    2024年02月07日
    浏览(35)
  • 【linux】git和gdb调试工具

    这两个步骤用于识别提交代码的身份,一个你的名字,一个你的邮箱 开启本地仓库 克隆本地仓库成功 我们将这个仓库拷到了111目录底下. 我们发现少了一个.gitignore,因为.gitignore是隐藏文件,所以使用ls -la查看 用于查看提交状态 上面可以看到提交人的信息,以及时间,以及提

    2024年02月22日
    浏览(36)
  • Linux开发工具之调试器gdb

    程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项   所以一份代码若要被调试必须是debug模式,但是在linux下我们编译代码的时候默认为release模式,要想让我们的代码

    2024年02月07日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包