Q1:100.0.0.16/28
對應網段的網關地址、廣播地址、可分配IP地址範圍。
28位掩碼,掩碼爲
255.255.255.240
,前28位表示網絡地址,後四位表示可分配的主機,所以可分配的IP地址範圍爲100.0.0.17
到100.0.0.30
,廣播地址爲100.0.0.31
,網關爲100.0.0.16
。
Q2:使用man手冊學習tcpdump
命令的使用。
tcpdump
是用來抓取網絡包內容描述信息的工具,在抓包結束後,會報告三個count
數據:
- captured:
tcpdump
接收並處理的包數量。- received by filter:被
filter expression
匹配到的包數量。- dropped by kernel:緩衝區滿後,被內核丟棄的包數量(取決於系統會不會通知tcpdump)。
- 用法:
tcpdump [options] [expression]
- 選項:
- -A:以
ASCII
編碼顯示包內容,對於抓取web頁面非常友好。- -B cuffer_size:設置操作系統的緩衝區大小。
- -c count:指定最多抓取多少個包,默認會一直抓取。
- -C file_size:配置
-w
使用,文件超過file_size
之後,自動滾動,原文件名加上數字前綴,從1
開始。file_size
單位是mb
,是整數單位(1000 * 1000 bytes),不是計算機單位(1024 * 1024 bytes)。- -d:將可讀性強的抓包代碼轉換成標準格式。
- -dd:將可讀性強的抓包代碼轉換成C語言風格的代碼段。
- -D:列出當前系統可用於抓包的網絡接口和序號。
- -e:顯示鏈路層的頭信息。
- -E:使用
spi@ipaddr algo:secret
來解密IPsec ESP包。可用算法:des-cbc
,3des-cbc
,blowfish-cbc
,rc3-cbc
,cast128-cbc
,none
,默認爲des-cbc
。- -f:顯示外部ipv4地址時,使用數字格式,而不是使用名稱
- -F file:從文件中讀取
filter expression
,忽略命令行中的filter expression
。- -G rotate_seconds:滾動輸出文件的時間間隔,單位秒。每一次滾動的文件,會添加後綴,格式爲
strftime(3)
生成的格式。如果同時指定-C
選項,文件名格式採取-C
的格式。- -i:指定監聽的網絡接口(可用
-D
選項查看可用接口)。如果不指定,會默認選擇序號最小的非本地迴環接口。如果指定any
接口,會攫取所有接口的包,但無法開啓混雜模式。- -I:進入監視模式(只針對wifi設備)。使用
-I
後,指定的接口不能再與網絡通信。- -j tstamp_type:修改時間戳格式。
- -J:列出接口支持的時間戳格式。
- --time-stamp-precision=tstamp_precision:指定時間戳的精度,具體精度依賴於平臺和硬件。可用單位爲
micro
和nano
,默認是micro
。- -K:不驗證IP、TCP、UDP的校驗和。
- -l:將結果輸出到標準輸出(默認)。
- -L:列出可用的數據鏈接層的類型。
- m module:從module文件中加載
SMI MIB module
,可指定多個。- -M secret:如果tcp包中指定了
TCP-MD5
摘要,使用secret
進行校驗。- -n:以數字方式顯示主機地址。
- -nn:以數字方式顯示端口號。
- -N:不顯示域名。
- -O:不優化
packet-matching
。- -p:禁用混雜模式。
- -Q/-P in|out|inout:指定捕捉哪個流向的包。
- -q:只輸出較少的協議信息。
- -r file:從文件中讀取包,可用
-
指明從標準輸入中讀取。- -S:輸出TCP序號的絕對值。
- -s:設置抓取包的長度,0代表默認值65536bytes。
- -T type:使用指定的
type
解析包,可用的類型爲aodv
、cnfp
、rpc
、rtp
、rtcp
、snmp
、tftp
、vat
、wb
。- -t:不輸出時間戳。
- -tt:輸出未格式化的時間戳。
- -ttt:輸出較上一行的相對時間戳。
- -tttt:輸出默認格式的時間戳。
- -ttttt:輸出較第一行的相對時間戳。
- -u:輸出未加密的NFS句柄。
- -U:配合
w
使用,寫入文件時,立即寫入,不使用緩衝區。- -v:輸出詳細信息。
- -vv:更詳細。
- -vvv:更更詳細。
- -w file:將結果寫入文件,而不是打印到標準輸出。
- -W filecount:指定滾動文件的最大數量,配合
-C
使用時,如果超過數量,將從頭開始命名文件,之前的文件會被覆蓋;配合-G
使用時,如果超過數量,將退出。- -x:打印每個包的頭部信息,並以16進制格式打印包數據。
- -xx:在
-x
基礎上,以16進制打印鏈路層頭部。- -y dataliktype:設置
datalinktype
。- -z postrotate-command:配合
-C
或-G
使用,對指定文件運行command
,比如使用-z gzip
會用gzip壓縮文件。- -Z user:使用指定用戶的身份運行。
- expression filter:
- type:指定捕獲什麼類型的網絡包。
- host:指定主機,默認值;如
host foo
。- net:指定網段;如
net 128.3
。- port:指定端口;如
port 22
。- portrange:指定端口範圍;如
portrange 6000-6008
。- dir:指定捕獲哪個流向的數據包。
- src:捕獲從
src
流入的包;如src foo
。- dst:捕獲流向
dst
的包;如dst net 128.3
。- src or dst:捕獲從
src
流入或流向dst
的包;如src or dst port ftp-data
。- src and dst:捕獲從
src
流向dst
的包。- proto:指定捕獲哪種協議的包,不指定默認捕獲所有協議的包。
- ether
- fddi
- tr
- wlan
- ip
- ip6
- arp
- rarp
- decnet
- tcp
- udp
- and,or,not:條件組合。
- 示例:
- 抓取來自magedu的包:
tcpdump host magedu.com
。
Q3:詳細敘述殭屍進程產生的原因以及危害。
子進程退出後,還沒有來得及被父進程清理,或父進程沒有調用wait或waitpid等待子進程結束,也沒有顯式忽略SIGCHLD信號,此子進程即成爲殭屍進程;如果父進程退出,僵局進程會被init進程接管,清理其進程信息後,殺死殭屍進程;但如果父進程一直不退出(比如服務進程,httpd,nginx等),殭屍進程就一直存在;
殭屍進程雖然不會被調度執行,但它依然佔據一個進程號,也在進程表中佔據一行資源,如果殭屍進程過多,會造成資源大量浪費,甚至造成系統崩潰。
Q4:詳細說明vmstat
輸出結果的含義。
- procs:進程相關信息。
- r:運行中或等待運行的進程量。
- b:不可中斷眨眼的進程數量。
- memory:內存相關信息。
- swpd:虛擬內存使用量。
- free:物理內存剩餘量。
- buff:用於buffer的內存量。
- cache:用於cache的內存量。
- swap:交換分區信息。
- si:從磁盤換進的量(kb/s)。
- so:換出到磁盤的量(kb/s)。
- io:io相關信息。
- bi:從塊設備讀入的量(blocks/s)。
- bo:寫入到塊設備的量(blocks/s)。
- system:內核相關信息。
- in:每秒產生的中斷數量
- cs:每秒的上下文切換數量。
- cpu:cpu時間相關信息。
- us:用戶空間佔用cpu的時間百分比。
- sy:內核空間佔用cpu的時間百分比。
- id:空閒時間百分比(2.5.41之前,還包含等待io的時間)。
- wa:等待io的時間百分比(2.5.41之前,被包含在id時間裏)。
- st:被虛擬機偷走的時間(2.6.11之後纔有)