11. 一文快速学懂常用工具——网络工具(下)

本章讲解知识点

  • 引言
  • curl
  • tcpdump
  • wireshark

<br/>

  • 本专栏适合于软件开发刚入职的学生或人士,有一定的编程基础,帮助大家快速掌握工作中必会的工具和指令
  • 本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅
  • 如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
  • 相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。

<br/>

1. 引言

从本章正式讲解 curl、tcpdump、wireshark。

<br/>

2. curl

curl 是一个常用的命令行工具和库,用于在计算机网络中传输数据。它支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、LDAP 等,允许用户从命令行中访问并与各种网络服务进行通信。curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。在工作中,curl 常用来验证测试接口。是必须掌握的。

以下是一些 curl 的常见用法和功能:

1.HTTP 请求: 使用 curl 可以发送 HTTP 请求,获取网页内容或与 Web 服务器进行通信。不带有任何参数时,curl 就是发出 GET 请求。例如,可以使用以下命令获取一个网页:

curl https://www.example.com

2.-A 参数

-A 参数指定客户端的用户代理标头,即 User-Agent。curl 的默认用户代理字符串是 curl/[version]

$ curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com

上面命令将 User-Agent 改成 Chrome 浏览器。

也可以通过 -H 参数直接指定标头,更改 User-Agent

$ curl -H 'User-Agent: php/1.0' https://google.com

  1. -d 参数

-d 参数用于发送 POST 请求的数据体。

$ curl -d 'login=emma&password=123'-X POST https://google.com/login
# 或者
$ curl -d 'login=emma' -d 'password=123' -X POST  https://google.com/login

使用 -d 参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST。

-d 参数可以读取本地文本文件的数据,向服务器发送。

$ curl -d **********' https://google.com/login

上面命令读取data.txt文件的内容,作为数据体向服务器发送。

curl 还可以用于构建和发送复杂的请求,包括 JSON 数据、表单数据

要使用 curl 发送 JSON 数据,可以使用 -H 标头选项来设置请求头为 "Content-Type: application/json",然后使用 -d 选项将 JSON 数据作为请求主体发送。以下是一个示例,演示如何使用 curl 发送 JSON 数据:

假设有一个 JSON 数据如下:

{
  "name": "John Doe",
  "email": "johndoe@example.com"
}

可以使用 curl 发送这个 JSON 数据到一个服务器的端点(例如,假设服务器的端点是 https://example.com/api):

curl -X POST -H "Content-Type: application/json" -d '{"name": "John Doe", "email": "johndoe@example.com"}' https://example.com/api

在这个示例中,我们使用 -X POST 指定了 HTTP POST 请求方法,-H 选项设置了请求头为 "Content-Type: application/json",-d 选项指定了要发送的 JSON 数据。最后,我们指定了目标 URL,即 https://example.com/api。

4.-o 参数

下载文件: 可以使用 curl 下载文件。例如:

curl -o https://www.example.com/file.zip

这将下载名为 "file.zip" 的文件到当前工作目录。

5.-F 参数

上传文件: curl 也可以用于上传文件,通常使用 HTTP POST 请求。例如,上传一个文件到服务器:

curl -F "**********" https://example.com/upload

上面命令会给 HTTP 请求加上标头Content-Type: multipart/form-data,然后将文件localfile.jpg作为file字段上传。

HTTP 请求方法: curl 支持多种 HTTP 请求方法,如 GET、POST、PUT、DELETE 等。可以使用 -X 选项来指定请求方法。

6.-H 参数

HTTP 标头: 可以通过 -H 选项添加自定义 HTTP 请求标头,以满足特定要求。

-H参数添加 HTTP 请求的标头。

$ curl -H 'Accept-Language: en-US' https://google.com

上面命令添加 HTTP 标头Accept-Language: en-US。

7.-u 参数

认证: curl 支持各种身份验证方法,包括基本认证、摘要认证和 OAuth 等。可以使用 -u 选项指定用户名和密码。

-u参数用来设置服务器认证的用户名和密码。

$ curl -u 'bob:12345' https://google.com/login

上面命令设置用户名为bob,密码为12345,然后将其转为 HTTP 标头Authorization: Basic Ym9iOjEyMzQ1。

8.限速: 可以使用 --limit-rate 选项限制下载或上传速度。

--limit-rate用来限制 HTTP 请求和回应的带宽,模拟慢网速的环境。

$ curl --limit-rate 200k https://google.com

上面命令将带宽限制在每秒 200K 字节。

9.-i 参数

输出控制: 你可以将输出保存到文件,或使用 -o 和 -O 选项来指定文件名。也可以使用 -i 选项来显示响应标头。

-i参数打印出服务器回应的 HTTP 标头。

$ curl -i https://www.example.com

上面命令收到服务器回应后,先输出服务器回应的标头,然后空一行,再输出网页的源码。

10.-k 参数

处理 HTTPS: curl 支持 HTTPS 连接,并验证 SSL 证书。可以使用 -k 选项跳过 SSL 证书验证,但这不推荐用于生产环境。

-k参数指定跳过 SSL 检测。

$ curl -k https://www.example.com

上面命令不会检查服务器的 SSL 证书是否正确。

11.-v 参数

-v参数输出通信的整个过程,用于调试。

$ curl -v https://www.example.com

--trace参数也可以用于调试,还会输出原始的二进制数据。

$ curl --trace - https://www.example.com

<br/>

3. tcpdump

tcpdump 是一个常用的命令行网络抓包工具,用于捕获和分析网络数据包的传输情况。它在多种操作系统上可用,包括Unix、Linux和macOS。tcpdump可以用于网络故障排除、安全分析、协议分析以及网络性能监测等任务。在工作中 tcpdump 主要用于排查网络故障,也是必须学会的工具

3.1. 参数

-n:指定将每个监听到数据包中的域名转换成IP地址后显示,不把网络地址转换成名字;
-nn:指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示
-t:在输出的每一行不打印时间戳;
-A:以ASCII文本模式显示数据包内容,使数据包内容更易于阅读。
-X:以十六进制和ASCII混合的形式显示数据包内容。
-q:以更精简的方式显示捕获信息,减少冗长的输出。
-v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv:输出详细的报文信息;
-c:在收到指定的包的数目后,tcpdump就会停止;例如,-c 100 将捕获100个数据包后停止。
-i:指定监听的网络接口;例如,-i eth0 将捕获来自以太网接口 eth0 的数据包。
-p:将网卡设置为非混杂模式,不能与host或broadcast一起使用
-w <文件名>:将捕获的数据包保存到指定的文件中,而不是在屏幕上显示。例如,-w capture.pcap 将数据包保存为名为 "capture.pcap" 的文件。

3.2. 关键字

第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.

第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

如题:一文快速学懂常用工具——包含Git、GDB、Makefile、Linux指令等常用工具的快速入门及实操,还包含相关面试题。

全部评论
好东西没人看 可惜应届生不关注这个 搞c++的应届生还是要多看看这类 自己学会从部署搭建开发环境 开发 到测试 调试 这一套流程下来 都要会才行 这类 测试 验证工具还是有必要学一下的
点赞 回复 分享
发布于 2024-01-07 02:20 上海

相关推荐

Aurora23:属于挂一半,暂时进池子了,隔一段时间没有其他组捞的话就彻底结束了
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务