跳转至

网络相关的命令

约 811 个字 72 行代码 3 张图片 预计阅读时间 4 分钟

Warning

随意更改网络连接、端口等配置会导致意想不到的结果。

ip - 查看网络相关信息

CentOS 下均需要 root 权限;Ubuntu 下查看不需要 root 权限。

1
2
3
4
5
6
ip link [show]      # 查看网络设备信息
ip addr [show]      # 查看网络地址信息
ip link show ens160 # 查看 ens160 的设备信息
ip addr show ens160 # 查看 ens160 的地址信息
ip link set ens160 up   # 开启 ens160 连接
ip link set ens160 down # 关闭 ens160 连接

扩展:Linux ip 命令 | 菜鸟教程

端口

概念

网络通信实质上是两个进程间的通信。

网络通信的简化结构
网络通信的简化结构

协议

网络各层都有对应的协议。

传输层协议主要有 TCP 和 UDP。

同种传输层协议不能放在一个端口上;不同传输层协议可以放在一个端口上。

应用层协议通常有默认的端口,如 SSH 对应 22 端口,HTTP 对应 80 端口,HTTPS 对应 443 端口。

上面提到的这三个应用层协议基于 TCP。

端口号

端口号范围 0~65535

  • 0~1023 为知名端口号,由 ICANN 管理,基本上都有固定的用途,只有系统进程或有特权的进程可用。
  • 1024~49151 为注册端口号
  • 49152~65535 为动态端口号 / 私有端口号

查看某些服务与端口号之间的联系:

cat /etc/services

查看端口情况

Linux:

sudo netstat -tlunp

例:

Linux 查看端口情况
Linux 查看端口情况

Windows:

netstat -ano

例:

PS Z:\> netstat -ano

活动连接

  协议   本地地址                 外部地址                状态            PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       628
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       1148
  TCP    10.94.5.157:57694      10.94.0.153:22         ESTABLISHED     8072
  TCP    10.94.5.157:60037      10.94.0.153:5365       CLOSE_WAIT      8180
  TCP    10.94.5.157:60038      10.94.0.153:5365       CLOSE_WAIT      8180
  TCP    [::]:135               [::]:0                 LISTENING       628
  TCP    [::]:445               [::]:0                 LISTENING       4
  TCP    [::]:3389              [::]:0                 LISTENING       1148
  UDP    0.0.0.0:123            *:*                                    1280
  UDP    127.0.0.1:64785        *:*                                    2640
  UDP    [::]:3389              *:*                                    1148
  UDP    [fe80::2cbe:1f6d:6536:c8e6%7]:1900  *:*                                    912

scp - 通过 SSH 传输文件

scp [选项] [[源用户@]源地址:]源文件 [...] [[目标用户@]目标地址:]目的地目录或文件

如果源文件 / 目的地在远程主机上,要在路径前加上 用户名@主机地址:

新版 Windows 也可用此命令,不过因为一般 Windows 上没有开 SSH 服务器,故如果文件涉及到 Windows 主机,需要在 Windows 上进行操作。

常用选项:

  • -r:递归复制(复制目录时有用)
  • -p:保留文件的修改时间、访问时间、访问权限
  • -P 端口号:定义端口号
  • -i 密钥文件路径:定义密钥文件

例:

1
2
3
4
5
6
7
PS Z:\> scp -r Z:\.config\ ding@192.168.1.100:/home/ding/0606temp/
ding@192.168.1.100's password:
gitk                                                 100% 1900     1.9KB/s   00:00
config                                               100%  242     0.2KB/s   00:00
PS Z:\> scp ding@192.168.1.100:/home/ding/jenkins_2.344_all.deb Z:\
ding@192.168.1.100's password:
jenkins_2.344_all.deb                                  6% 5216KB 376.8KB/s   03:33 ETA 

发送网络请求

HTTP 请求基本流程

HTTP 请求基本流程
HTTP 请求基本流程

wget - 下载文件

wget [选项] URL

不指定选项,会存到当前目录下,文件名根据 URL 确定。

常用选项:

  • -O 文件:存为指定文件
  • -P 路径:存到指定路径

例:

ding@ding-server:~$ wget https://static.a4ding.com/doc/auto_test/0001_selenium_python_basic.pdf
--2022-06-06 15:12:10--  https://static.a4ding.com/doc/auto_test/0001_selenium_python_basic.pdf
Resolving static.a4ding.com (static.a4ding.com)... 106.14.230.57
Connecting to static.a4ding.com (static.a4ding.com)|106.14.230.57|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14771347 (14M) [application/pdf]
Saving to: ‘0001_selenium_python_basic.pdf’

0001_selenium_python_basic.pdf        100%[=======================================================================>]  14.09M  13.4MB/s    in 1.1s    

2022-06-06 15:12:11 (13.4 MB/s) - ‘0001_selenium_python_basic.pdf’ saved [14771347/14771347]

curl - 构建网络请求

curl [选项] URL

返回响应体。

选项特别多,举几个例子:

  • -o 文件:保存响应体到文件(相当于 wget
  • -L:自动重定向
  • -i:显示响应头信息
  • -v:显示通信过程
  • -X 请求方法:定义请求方法(默认为 GET)
  • --data "xxx=yyy":添加请求参数信息
  • --data-urlencode "xxx=yyy":同上,但经过编码
  • --form xxx=yyy:添加表单信息
  • --form xxx=@文件:同上,但传入文件
  • --user-agent "字符串":定义 UA
  • --cookie "xxx=yyy":添加 Cookie
  • -c 文件:保存 Cookie 到文件
  • -b 文件:从文件读取 Cookie
  • --header "文本":增加请求头信息
  • --user 用户名:密码:添加 HTTP 认证信息

例:

ding@ding-server:~$ curl -X POST --data "par=val" --data "par2=val2" --user-agent "ding-test-ua" \
> --cookie "dc1=dcv1" --header "test: Ding test header" http://httpbin.org/post
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "par": "val", 
    "par2": "val2"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Content-Length": "17", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Cookie": "dc1=dcv1", 
    "Host": "httpbin.org", 
    "Test": "Ding test header", 
    "User-Agent": "ding-test-ua", 
    "X-Amzn-Trace-Id": "Root=1-629db63c-42211eac2aabf32835694e81"
  }, 
  "json": null, 
  "origin": "106.14.136.18", 
  "url": "http://httpbin.org/post"
}

延伸

参考资料