curl

curl 命令是一个从服务器传输数据,或者向服务器传输数据的工具,支持多种协议:DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、MQTT、POP3、POP3S、RTMP、RTMPS、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET、TFTP。curl 命令被设计成无需用户交互即可工作的。更多信息请见 curl(1) — Linux manual page

  1. ubuntu:~$ curl https://httpbin.org/get
  2. {
  3. "args": {},
  4. "headers": {
  5. "Accept": "*/*",
  6. "Host": "httpbin.org",
  7. "User-Agent": "curl/7.58.0",
  8. "X-Amzn-Trace-Id": "Root=1-629c984a-2e1c3936379071cc3f9b3fc4"
  9. },
  10. "origin": "121.5.122.78",
  11. "url": "https://httpbin.org/get"
  12. }
  13. ubuntu:~$ curl -X POST -d 'name=hello' https://httpbin.org/post
  14. {
  15. "args": {},
  16. "data": "",
  17. "files": {},
  18. "form": {
  19. "name": "hello"
  20. },
  21. "headers": {
  22. "Accept": "*/*",
  23. "Content-Length": "10",
  24. "Content-Type": "application/x-www-form-urlencoded",
  25. "Host": "httpbin.org",
  26. "User-Agent": "curl/7.58.0",
  27. "X-Amzn-Trace-Id": "Root=1-629c98c0-64e567ec62638cda249d4ed5"
  28. },
  29. "json": null,
  30. "origin": "121.5.122.78",
  31. "url": "https://httpbin.org/post"
  32. }

ss

ss 命令被用于输出 Linux 套接字的统计信息。它显示的信息与 netstat 命令类似,并且可以显示更多的 Tcp 和状态信息。更多信息请见 ss(8) — Linux manual page

  1. ubuntu:~$ sudo ss -lntp
  2. State Recv-Q Send-Q Local Address:Port Peer Address:Port
  3. LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=10113,fd=12),("nginx",pid=1184,fd=12))
  4. LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=943,fd=13))
  5. LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1094,fd=3))
  6. LISTEN 0 128 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=10113,fd=11),("nginx",pid=1184,fd=11))
  7. LISTEN 0 128 *:9100 *:* users:(("node_exporter",pid=1042,fd=3))
  8. LISTEN 0 128 *:1200 *:* users:(("frps",pid=1071,fd=9))
  9. LISTEN 0 128 *:8080 *:* users:(("frps",pid=1071,fd=8))
  10. LISTEN 0 128 [::]:80 [::]:* users:(("nginx",pid=10113,fd=13),("nginx",pid=1184,fd=13))
  11. LISTEN 0 100 *:1234 *:* users:(("java",pid=3640,fd=21))
  12. LISTEN 0 128 *:8088 *:* users:(("node",pid=2249,fd=18))
  13. LISTEN 0 128 *:7000 *:* users:(("frps",pid=1071,fd=3))
  14. LISTEN 0 128 *:9508 *:* users:(("frps",pid=1071,fd=10))

nslookup

nslookup(Name Server Lookup)命令用来从 DNS 中查询域名对应的 ip 地址和其它 DNS 记录信息。

  1. ubuntu:~$ nslookup 3.cn
  2. Server: 127.0.0.53
  3. Address: 127.0.0.53#53
  4. Non-authoritative answer:
  5. Name: 3.cn
  6. Address: 106.39.164.153
  7. Name: 3.cn
  8. Address: 111.13.28.27

ping

ping 命令用来测试数据包能否通过 IP 网络发送到目标主机。

ping 命令的运行原理是向目标主机发送 ICMP 协议的 ECHO_REQUEST 数据包,等待接收响应的 ECHO_RESPONSE 数据包,然后按响应时间和成功次数估算丢包率和延时。

  1. ubuntu:~$ ping 3.cn -t 4
  2. PING 3.cn (106.39.164.153): 56 data bytes
  3. 64 bytes from 106.39.164.153: icmp_seq=0 ttl=50 time=39.883 ms
  4. 64 bytes from 106.39.164.153: icmp_seq=1 ttl=50 time=43.923 ms
  5. 64 bytes from 106.39.164.153: icmp_seq=2 ttl=50 time=39.428 ms
  6. 64 bytes from 106.39.164.153: icmp_seq=3 ttl=50 time=47.891 ms
  7. --- 3.cn ping statistics ---
  8. 4 packets transmitted, 4 packets received, 0.0% packet loss
  9. round-trip min/avg/max/stddev = 39.428/42.781/47.891/3.430 ms

traceroute

traceroute 命令用来显示数据包在 IP 网络上发送到目标主机的路由信息。

tcpdump

tcpdump 命令会打印经过网卡的数据包。

tcpdump -i eth0 -w dump.pcapng命令表示把经过eth0网卡上的数据包保存到dump.pcapng文件中,后续可以使用 Wireshark 打开该文件来分析记录网络数据包。