linux命令 網路相關

2021-07-07 08:00:06 字數 3143 閱讀 9133

netstat -anop

檢視ip:port的tcp/udp型別、活動狀態及所屬程序。

3次握手過程狀態:

listen: 這個也是非常容易理解的乙個狀態,表示伺服器端的某個socket處於監聽狀態,可以接受連線了。 

syn_sent: 當客戶端socket執行connect連線時,它首先傳送syn報文,因此也隨即它會進入到了syn_sent狀態,並等待服務端的傳送三次握手中的第2個報文。syn_sent狀態表示客戶端已傳送syn報文。(傳送端)

syn_rcvd: 這個狀態與syn_sent遙想呼應這個狀態表示接受到了syn報文,在正常情況下,這個狀態是伺服器端的socket在建立tcp連線時的三次握手會話過程中的乙個中間狀態,很短暫,基本上用netstat你是很難看到這種狀態的,除非你特意寫了乙個客戶端測試程式,故意將三次tcp握手過程中最後乙個ack報文不予傳送。因此這種狀態時,當收到客戶端的ack報文後,它會進入到established狀態。(伺服器端) 

established:這個容易理解了,表示連線已經建立了。

4次揮手過程狀態:(可參考上圖)

fin_wait_1: 這個狀態要好好解釋一下,其實fin_wait_1和fin_wait_2狀態的真正含義都是表示等待對方的fin報文。而這兩種狀態的區別是:fin_wait_1狀態實際上是當socket在established狀態時,它想主動關閉連線,向對方傳送了fin報文,此時該socket即進入到fin_wait_1狀態。而當對方回應ack報文後,則進入到fin_wait_2狀態,當然在實際的正常情況下,無論對方何種情況下,都應該馬上回應ack報文,所以fin_wait_1狀態一般是比較難見到的,而fin_wait_2狀態還有時常常可以用netstat看到。(主動方) 

fin_wait_2:上面已經詳細解釋了這種狀態,實際上fin_wait_2狀態下的socket,表示半連線,也即有一方要求close連線,但另外還告訴對方,我暫時還有點資料需要傳送給你(ack資訊),稍後再關閉連線。(主動方) 

time_wait: 表示收到了對方的fin報文,並傳送出了ack報文,就等2msl後即可回到closed可用狀態了。如果fin_wait_1狀態下,收到了對方同時帶fin標誌和ack標誌的報文時,可以直接進入到time_wait狀態,而無須經過fin_wait_2狀態。(主動方) 

closing(比較少見): 這種狀態比較特殊,實際情況中應該是很少見,屬於一種比較罕見的例外狀態。正常情況下,當你傳送fin報文後,按理來說是應該先收到(或同時收到)對方的ack報文,再收到對方的fin報文。但是closing狀態表示你傳送fin報文後,並沒有收到對方的ack報文,反而卻也收到了對方的fin報文。什麼情況下會出現此種情況呢?其實細想一下,也不難得出結論:那就是如果雙方幾乎在同時close乙個socket的話,那麼就出現了雙方同時傳送fin報文的情況,也即會出現closing狀態,表示雙方都正在關閉socket連線。 

close_wait: 這種狀態的含義其實是表示在等待關閉。怎麼理解呢?當對方close乙個socket後傳送fin報文給自己,你系統毫無疑問地會回應乙個ack報文給對方,此時則進入到close_wait狀態。接下來呢,實際上你真正需要考慮的事情是察看你是否還有資料傳送給對方,如果沒有的話,那麼你也就可以close這個socket,傳送fin報文給對方,也即關閉連線。所以你在close_wait狀態下,需要完成的事情是等待你去關閉連線。

(被動方)

last_ack: 這個狀態還是比較容易好理解的,它是被動關閉一方在傳送fin報文後,最後等待對方的ack報文。當收到ack報文後,也即可以進入到closed可用狀態了。(被動方)

closed: 表示連線中斷。

圖 1-1 tcp狀態圖

curl  url  //傳送get 請求

curl -i url //檢視響應的頭

curl -d 'content' url //傳送post請求。生產環境不讓除錯,生產環境是linux,沒有瀏覽器,就可以用此命令。

curl -h

head -x post --data  accuratedata url :指定頭,發指定內容的post請求。乙個發json的例子見下:

ip addr 

檢視該機器所有的ip位址。乙個機器可以有多個網絡卡,有多個ip位址。

需要安裝, yum install iftop。

iftop -p -i eth1 

檢視 eth1網絡卡的使用情況。見圖5-1。既然拿到了ip:port,就可以結合netstat得出程序的流量情況了。

注意單位是kb而非kb。

圖5-1

tx:傳送流量

rx:接收流量

total:總流量

cumm:執行iftop到目前時間的總流量

peak:流量峰值

rates:分別表示過去 2s 10s 40s 的平均流量

每個ip:port都佔兩行的高度,黑底的矩形儀錶盤,第一行代表出流量,第二行代表入流量。

優先用iftop,沒有的話再用這個。

sar -n dev interval count

檢視每塊網絡卡的流量資訊。每隔interval秒列印一次,共列印count次,預設count為0。'ctrl+\'可以中斷顯示並退出。

rxkb/s  表示入網流量,千位元組/秒。

txkb/s  表示出網流量,千位元組/秒。

sar -n dev 1 10 |grep -e 'eth1|kb'

我們只關注eth1網絡卡,高亮流量資訊可以用這個命令。效果圖見5-1.

[root@iz289srk1s9z ~]# sar -n dev 1 10 |grep -e 'eth1|kb'

04:35:20 pm iface rxpck/s txpck/s rxkb/s txkb/s rxcmp/s txcmp/s rxmcst/s

04:35:21 pm eth1 118.00 159.00 8.29 200.16 0.00 0.00 0.00

Linux相關網路命令

手動臨時設定ip sudo ifconfig eth0 up 192.168.1.10 手動設定ip一般在系統重啟後就失效 靜態設定ip ubuntu網路配置資訊儲存在 etc network inte ces 檔案中,預設內容如下 auto eth0 iface eth0 inet dhcp au...

Linux網路相關命令

2.物理介面上增加子介面 同乙個物理介面上的不同子介面是以vlan區分的,所以首先要增加vlan,命令 vconfig add ethx vlanid,此後便在ethx介面上建立了vlan為vlanid的子介面ethx.vlanid,然後ifconfig為ethx.vlanid介面配置ip。刪除子介...

Linux相關網路命令

telnet ip 埠號 檢視ip curl ifconfig.me cat etc rc.config.d netconf nslookup hostname hostname 可以從 etc host檔案得到 who輸出常用標題含義 標題 含義 user 使用者登陸 line 使用者登陸使用終端...