重学操作系统(八)
前言
距离上次整理关于操作系统相关知识点,已经过去几周了,现在找到时间,继续看相关文章,继续总结。
今天看的文章是关于Linux网络指令相关的知识点。
贯穿全文的一道题:如何查看一个域名有哪些NS(Name Server)记录?
Linux网络相关指令
远程操作指令
远程操作指令,就我个人而言,用过最多的就是ssh和scp。ssh主要是用来远程登录目标计算机并进行操作的指令。scp主要是负责远程传输文件的。
- ssh(Secure Shell)
一般登录远程机器的指令,比如ssh xxx@ip的方式登录。
- scp
用来拷贝文件到远程机器,或者把远程机器的文件拷贝到本地。主要命令结构是”scp [可选参数] file_source file_target “,可选参数比如-C:允许压缩,-r:递归整个目录,-P:指定传输端口等。
常用的从本地拷贝到远程到命令:scp local_file remote_username@remote_ip:remote_file
常用的从远程拷贝到本地的命令:scp root@www.xxxx.xxxx:source_file target_file
查看本地网络状态
网络状态相关的主要命令,用的最多的应该是ifconfig和netstat
- ifconfig
主要就是用来查看本地ip和本地有哪些网络接口。如下图:

- netstat
netstate的主要查看的是本机网络使用情况。不包括任何参数的话,查询的是本地所有socket。socket主要负责客户端和服务器之间收发数据。当客户端和服务端发生连接时,他们会同时生成一个socket文件,用来管理连接。

使用 netstat -t tcp可以查看TCP连接
查看某个端口占用:比如端口8888,可以用:
netstat -ntlp | grep 8888-n: 将特殊端口号用数字显示,-t:查看TCP协议,-l:显示连接中的连接,-p:显示程序名称
网络测试命令
通常我们都会使用一些命令,提前测试下网络延迟或者网络服务是否可用,能做到这写的命令,常用的主要是ping和telnet。
- ping
我们经常用到比如ping www.baidu.com,如下图:

可以看出,本地机器是可以顺利连接到百度的。ping主要用到了ICMP协议,所以能看到icmp序号。time主要是往返一次的时间。ttl = time to live,是封包生存时间,一个封包从发出开始倒计时,如果超过52ms,这个包就会丢弃。ping同时能帮我们查询到一个网站的ip地址。
- telnet
telnet主要可以让我们知道目标服务器的某个端口是否提供服务,比如:
telnet www.baidu.com 443,输出如下:

telnet运行后是交互式界面,可以输入相应内容,机型HTTP请求。
DNS查询
如果需要知道一个DNS的解析过程,就需要用到一些DNS的查询命令。
- host
是一个DNS查询工具,比如:host www.baidu.com输出:

- dig
dig的用处是查询的内容更详细。比如还是查询百度的DNS:

HTTP相关
- curl
curl的主要作用就是在命令行请求一个网页或者一个接口。cur支持多种协议,比如SMTP,FTP,HTTP等。例如:curl www.baidu.com

从结果来看,我们请求到了百度的主页。cur也有一些可选的选项,比如curl -I,用来请求返回头。curl也可以执行POST请求。
总结
回到最开始的问题,查看NS记录,可以使用host -t ns {网址}来查看。比如:
host -t ns www.baidu.com
如何查看TIME_WAIT状态的连接数?
netstat -an | grep TIME_WAIT | wc -l