netstat能干什么
首先嘗試一下man netstat碌识,其描述原話是
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
所以它只是一個(gè)Print命令榜轿,也就是說(shuō)顯示某些信息腹鹉,并不能修改配置文件勿她。在顯示信息方面,它是個(gè)多面手踩叭,如:網(wǎng)絡(luò)連接信息,路由表信息疙教,接口信息,其他(幾乎沒(méi)用過(guò))蚓炬。下面分開(kāi)說(shuō)松逊。
-
網(wǎng)絡(luò)連接信息
輸入netstat命令即可查看,其結(jié)果(部分輸出截圖)如下肯夏,其每個(gè)字段的意義在第二部分解釋。
-
路由表信息
輸入netstat -r,其輸出結(jié)果如下
-
接口信息
輸入netstat -i驯击,其輸出結(jié)果如下:
netstat常見(jiàn)參數(shù)選項(xiàng)
對(duì)于打印接口信息烁兰,其效果等價(jià)于命令ifconfig,主要用來(lái)查看主機(jī)有幾個(gè)網(wǎng)卡徊都,其IP地址沪斟,子網(wǎng)掩碼,MAC地址等暇矫。
對(duì)于打印路由表信息主之,其效果等價(jià)于route命令,主要用來(lái)查看主機(jī)的出口路由地址等李根。如果要添加或刪除路由條目槽奕,那只能用route來(lái)操作。其輸出結(jié)果中著重注意Flags這一列房轿,其代表的含義如下:
Flags Possible flags include
U (route is up)
H (target is a host)
G (use gateway)
R (reinstate route for dynamic routing)
D (dynamically installed by daemon or redirect)
M (modified from routing daemon or redirect)
A (installed by addrconf)
C (cache entry)
! (reject route)
打印網(wǎng)絡(luò)連接信息才是netstat的主業(yè)粤攒,所以其參數(shù)也比較多。
- 從協(xié)議類型來(lái)看囱持,主要有一下幾種
-t : tcp夯接,僅顯示tcp協(xié)議的連接,且不包含listen狀態(tài)的纷妆,如需要加上-l
-u : udp盔几,僅顯示udp協(xié)議
-w : raw,不常用
-a : 顯示所有類型的連接
- 從通用性來(lái)看掩幢,有如下幾個(gè)參數(shù)選項(xiàng)
-n : 用數(shù)字形式顯示端口逊拍,IP地址,而不是顯示字符串形式的hostname
-c : 持續(xù)顯示粒蜈,每秒刷新一次
-s : 輸出統(tǒng)計(jì)信息顺献,如收發(fā)了多少TCP包,UDP包等
-p : 顯示連接是由那個(gè)進(jìn)程建立的枯怖,及其進(jìn)程號(hào)
輸出字段解析
Proto : 自然只的是協(xié)議類型
Recv-Q : 遠(yuǎn)端發(fā)來(lái)的還未被本機(jī)應(yīng)用層接收的數(shù)據(jù)大小
Send-Q : 本機(jī)應(yīng)用層發(fā)送的還未被對(duì)方ACK的數(shù)據(jù)大小
Local Address : 本地套接字
Foreign Adress : 遠(yuǎn)端套接字
State : 連接的狀態(tài)
** ESTABLISHED:連接已建立注整,三次握手完成
** SYN_SENT:連接發(fā)起的主動(dòng)方,發(fā)送SYN包后的狀態(tài)
** SYN_RECV:連接發(fā)起的被動(dòng)放度硝,收到SYN包后肿轨,回復(fù)SYN,ACK包后的狀態(tài)
** FIN_WAIT1:主動(dòng)斷開(kāi)方,發(fā)送FIN包后的狀態(tài)
** CLOSE_WAIT:收到FIN包后的一方蕊程,回復(fù)ACK給對(duì)方后的狀態(tài)
** FIN_WAIT2:主動(dòng)斷開(kāi)方椒袍,收到對(duì)方回復(fù)的ACK包后的狀態(tài)
** TIME_WAIT:主動(dòng)斷開(kāi)方,收到對(duì)方FIN包的狀態(tài)
** LAST_ACK:被動(dòng)斷開(kāi)方無(wú)需在傳遞數(shù)據(jù)藻茂,發(fā)送FIN包后的狀態(tài)
** TIME_WAIT:主動(dòng)斷開(kāi)方收到對(duì)方FIN包后驹暑,給出ACK后狀態(tài)玫恳,等待2MSL后進(jìn)入CLOSING
** CLOSE:該連接已經(jīng)斷開(kāi)
** LISTEN:監(jiān)聽(tīng)套接字,被動(dòng)放調(diào)用listen函數(shù)后的狀態(tài)
PID/Program name : 該連接隸屬于的進(jìn)程名及其進(jìn)程號(hào)
netstat是怎么做到的
Linux系統(tǒng)中一切皆文件优俘,這些信息都存在文件中京办,這些文件路徑如下:
/etc/services -- The services translation file
/proc -- Mount point for the proc filesystem, which gives access to kernel status information via the following files.
/proc/net/dev -- device information
/proc/net/raw -- raw socket information
/proc/net/tcp -- TCP socket information
/proc/net/udp -- UDP socket information
/proc/net/udplite -- UDPLite socket information
/proc/net/igmp -- IGMP multicast information
/proc/net/unix -- Unix domain socket information
/proc/net/ipx -- IPX socket information
/proc/net/ax25 -- AX25 socket information
/proc/net/appletalk -- DDP (appletalk) socket information
/proc/net/nr -- NET/ROM socket information
/proc/net/route -- IP routing information
/proc/net/ax25_route -- AX25 routing information
/proc/net/ipx_route -- IPX routing information
/proc/net/nr_nodes -- NET/ROM nodelist
/proc/net/nr_neigh -- NET/ROM neighbours
/proc/net/ip_masquerade -- masqueraded connections
/proc/net/snmp -- statistics
有了這些文件,netstat命令做的只是從這些文件中提取相關(guān)的信息進(jìn)行顯示而已帆焕。