主要是可以手动的启动、观察与修改网络接口的相关参数,比如IP参数,MTU等
ifconfig
----- 列出目前已经被启动的卡,不论是否有被给予IP
ifconfig {interface} {up | down}
----- 观察与启动接口
ifconfig interface {options}
----- 设定与修改接口
/etc/init.d/network restart
----- 将手动的处理全部取消,使用原有的设定值重建网络参数
route
route -nee 用于观察的参数
-n 不用主机名,直接用IP或端口号
-ee 更详细的信息
route add/del [-net|-host] ...
用于增加与删除路由到相关参数
详细参数介绍:
Destination, Genmask:这两个玩意儿就是分别是 network 与 netmask 啦!
所以这两个咚咚就组合成为一个完整的网域!
Gateway:该网域是通过哪个 gateway 连接出去的?如果显示 0.0.0.0 表
示该路由是直接由本机传送,亦即可以透过局域网络的 MAC 直接传讯;如果有
显示 IP 的话,表示该路由需要经过路由器 (通讯闸) 的帮忙才能够传送出去。
Flags:总共有多个旗标,代表的意义如下:
U (route is up):该路由是启动的;
H (target is a host):目标是一部主机 (IP) 而非网域;
G (use gateway):需要透过外部的主机 (gateway) 来转递封包;
R (reinstate route for dynamic routing):使用动态路由时,恢复路由信息的旗标;
D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由
M (modified from routing daemon or redirect):路由已经被修改了;
! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!)
Iface:这个路由传递封包的接口
ip P153
ip [-s] link show
单纯的查阅该装置相关的信息
ip link set [device] [动作与参数]
选项与参数
show 仅显示出这个装置的相关内容,如果加上 -s 会显示更多统计数据
set 可以开始设定项目,device指的是 eth0, eth1等界面代号
动作与参数,包含以下:
up | down :启动或关闭某个接口,其他参数使用默认的以太网络
address :如果这个装置可以更改MAC的话,即用这个修改
name :给予这个装置一个特殊的名字
mtu :就是最大传输单元
----------------------------------------------------------------------
ip address show
显示所有接口的 IP 参数
ip address [add | del] [IP参数] [dev装置名] [相关参数]
选项与参数:
show :单纯的显示出接口的IP信息
add | del : 进行相关参数的增加、删除设定:
IP参数:主要是网域的设定
dev:这个IP参数所要设定的接口,例如eth0, eth1 等
相关的参数,即这些:
broadcast: 设定广播地址,如果设定值是 + 表示【让系统自己计算】
label: 这个装置的别名,例如 eth0:0
scope: 这个界面的领域,通常这极几大类:
global: 允许来自所有来源的联机
site: 仅支持IPv6,仅允许本主机的联机
link:仅允许本装置自我联机
host:仅 允许本主机内部的联机
所以一般是用global
-----------------------------------------------------------------------
ip route show
单纯的显示出路由表,也可以使用list
ip route [add|del] [IP或网域] [via gateway] [dev 装置]
选项与参数
show: 单纯的显示出路由表,也可以使用list
add | del : 增加或删除路由
IP或网域 : 可使用网域或单纯的IP地址
via : 从那个gateway出去,不一定需要
dev : 从那个装置连出去,必要
mtu : 设定mtu值
iwconfig
无线网络信息、
iwlist: 利用无线网卡进行无线AP的侦测与取得相关数据
iwconfig:设定无线网卡的相关参数
dhclient
使用DHCP协议自动获取IP
ping:
ping [选项与参数] IP
选项与参数:
-c 数值: 执行ping的次数
-n :在输出数据时不进行IP与主机名的反查,直接用ip输出
-s 数值:发出去的ICMP封包的大小(要注意的是,由于本地端的网络卡MTU也会影响到侦测(封包过大超过MTU),所以如果想要侦测整个传输媒体的最大值,就要先将MTU调大,然后去进行侦测,不然出现错误)
-t 数值:TTL数值
-W 数值:等待响应对方主机的秒数
-M [do|dont]: 主要用于侦测网络的MTU的大小
do:代表传送一个DF标志,让封包不能重新拆包与封包
dont:代表不传送DF标志,能拆包与打包
traceroute
追踪两部主机之间通过的各个节点通讯状况
traceroute [参数] IP
参数与选项:
-n:不进行主机名称解析
-U:使用UDP的 port 33434 来进行侦测,即预设的侦测协议
-I:使用ICMP的方式进行侦测
-T:使用TCP来进行侦测,一般使用 port 80 来测试
-w:若对方主机在几秒钟内没有回声就宣告有问题
-p 埠号:可改变预设的port号
出现星号代表该node可能设有某些防护措施,让我们发送的封包信息被丢弃所致,所以某些路由器只支持转递封包,并不会接受来自客户端的各项侦测
netstat
查看本机的网络联机与后门,查看网络接口,是处于LISTEN状态?还是TIME_WAIT?等等
netstat -[选项参数]
与路由有关:
-r: 列出路由表,如同route
-n: 不使用主机名与服务名,使用ip与端口号 如同 route -n
与网络接口有关:
-a: 列出所有的联机状态,包括 tcp/udp/unix socket
-t: 列出tcp封包的联机
-u: 列出udp封包的联机
-l: 列出所有在LISTEN的服务的网络状态
-p: 列出pid与program档名
-c: 可以设定几秒钟后自动更新一次
当查阅与网络接口相关时候,各项参数如下:
Proto/Recv-Q/Send-Q/Local Address/Foreign Address/stat
关于这里的stat参数:
1、ESTABLISHED:已建立联机的状态
2、SYN_SENT:发出主动联机的联机封包
3、SYN_RECV:接收到一个要求联机的主动联机封包
4、FIN_WAIT1:该socket已中断,该联机正在断线当中
5、FIN_WAIT2:该联机已挂断,但正在等待对方主机响应断线确认的封包
6、TIME_WAIT:联机已挂断,但socket还在网络上等待结束
7、LISTEN:通常用在服务的监听port
host
可以用来查询某主机名的IP
host [-a] hostname [server]
-a : 更详细的数据
server :可以使用非为 /etc/resolv.conf的DNS服务器IP来查询
nslookup,与host类似,但也能用来根据ip找主机名
ftp
书 P171 有个连接到昆山科大ftp的例子
相当于进入一个远程系统,可下载上传(亲测可行)
links
文字界面浏览器(。。。)
wget
文字接口下载器
修改/etc/wgetrc设定代理服务器
封包撷取功能 P180
tcpdump:
不但可以分析封包的流向,连封包的内容也可以进行【监听】
tcpdump [-AennqX] [-i 接口] [-w 储存档名] [-c 次数] [-r 档名 ] [所欲截取的封包数据格式]
-A:封包内容以 ASCII 显示,通常用来捉取 WWW 的网页封包资料
-e:使用链路层 MAC 封包数据来显示
-nn:使用以IP及port name显示,而非主机名与服务名
-q:仅列出较为简短的封包信息(精简信息)
-X:可以列处十六进制(hex)以及ASCII的封包内容
-i:后面接要监听的网络接口
-w:如果你要将监听所得的封包数据储存下来,用这个
-r:从后面接的档案将封包数据读出来。(已经存在的档案,且之前是由 -w 制作出来的)
-c:监听的封包数,否则会持续不断监听
关于 可视化抓包 wireshark P185
gcc
-o 表示我们要求输出的可执行文件名
-c 选项表示我们只要求编译器输出目标代码,而不必要输出可执行文件
-g 选项表示我们要求编译器在编译的时候提供我们以后对程序进行调试的信息.
makefile
第一行表示的是依赖关系.
第二行是规则.
三个非常有用的变量:
$@ --目标文件
$^ --所有的依赖文件
$< --第一个依赖文件
比如
main:main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o:main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o:mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o:mytool2.c mytool2.h
gcc -c mytool2.c
可以简化为
main:main.o mytool1.o mytool2.o
gcc -o $@ $^
main.o:main.c mytool1.h mytool2.h
gcc -c $<
mytool1.o:mytool1.c mytool1.h
gcc -c $<
mytool2.o:mytool2.c mytool2.h
gcc -c $<
一个Makefile的缺省规则 :..c.o:
gcc -c $< 这个规则表示所有的 .o文件都是依赖与相应的.c文件的.例如mytool.o依赖于mytool.c
还可以简化为:
main:main.o mytool1.o mytool2.o
gcc -o $@ $^
..c.o:
gcc -c $<
静态、动态主机名
如果你的IP永远不会更动,那么申请的主机名即是静态的
但是许多小网站都是以非固定IP来上网的,主能申请动态DNS服务
1、Client端每次开机或是重新连接,并取得一个新的IP后,会主动向DNS Serve端提出要求,希望其变更主机名与IP的对应(ISP会提供适当的程序给client做这件事)
2、Server端接收Client申请后查询其提供的帐号密码是否正确,正确则修改