Troubleshooting(三):網絡

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

前言

? ? 在 Troubleshooting 過程中,檢查完進程信息后,接下來就是排查網絡情況的時候了,初略翻過《TCP/IP 詳解卷一:協議》這本書,簡直跟看《深入理解 Linux 內核》一毛一樣,各種協議各種底層結構體,每個域代表不同的意思,許許多多的域組合在一起共同控制著網絡和內核。

? ? Troubleshooting 系列僅僅整理工具和排查問題可能用到的命令,盡量不細述底層概念(功力有限我也寫不出來)。

? ? curl netstat iptables network ifconfig ip地址配置 traceroute telnet ping lsof iftop(top系列)vpn tcpdump 等抓包,和各種網絡攻擊(后續單獨整理)

?

網絡狀態

?

  • netstat

? ? 顯示網絡相關信息(網絡連接、路由表、接口狀態等)

? ? 常見的參數:

? ? -a? ? 顯示所有連接中的 socket

? ? -c? ? 持續列出網絡狀態

? ? -n? ? 盡量把別名轉換成數字顯示

? ? -o? ? 顯示計時器

? ? -p? ? 顯示正在使用 socket 的程序識別碼和程序名稱

? ? -i? ? 顯示網卡列表

? ? -s? ? 顯示網絡統計信息

? ? -v? ? 顯示指令執行過程,與 -p 不可同用

? ? -t/u? ? tcp/udp 連接狀況

?

? ? netstat 的輸出結果可分為兩個部分:

? ? 1、Active Internet connections:有源 TCP 連接,列中 Recv-Q 和 Send-Q 為接受隊列和發送隊列,如果沒有堆積一般都為 0。

? ? 2、Active UNIX domain sockets:有源 Unix 域套接口(只能用于本機通信,性能較高),RefCnt 表示連接到套接口的進程號。

? ? 套接口的類型:TCP、UDP、RAW、UNIX 域 等

? ? 狀態:

????LISTEN:處于監聽狀態ESTABLISHED:表示打開的一個連接SYN-SENT:發送連接請求后等待匹配的狀態SYN-RECEIVED:收到和發送一個連接請求后等待對方確認連接請求FIN-WAIT-1:等待遠程 TCP 連接中斷請求,或之前的連接中斷請求確認FIN-WAIT-2:從遠程 TCP 等待連接中斷請求CLOSE-WAIT:等待從本地用戶發來的連接中斷請求CLOSING:等待遠程 TCP 對連接中斷的確認LAST-ACK:等待原來的發向遠程 TCP 的連接中斷請求的確認TIME-WAIT:等待足夠的時間以確保遠程 TCP 接收到連接中斷請求的確認CLOSED:沒有任何連接狀態

?

? ? 通過 netstat 可以查看連接本機的ip,通過 uniq 可以統計出連接 ip 的數量。

????????

  • curl

? ? curl 是一款用于上傳下載的傳輸工具,支持 http/https/ftp/imap/pop3 等協議,同時也支持斷點續傳,功能十分強大。

????PS:本人用的最多的是在無圖形界面的 linux 上測試網頁狀態,將網頁輸出到界面上:

? ? curl http://www.baidu.com

????-o:保存網頁至指定文件-O:保存服務器上指定文件,url 需要明確指定文件名-C/--continue-at:斷點續傳,可指定位置獲取數據,假設文件大小為1000字節,-C 100 代表獲取 100-999 的數據-r:分塊下載,類似于 -C,可以使用區間,-r 0-1024 代表獲取 0-1024 的數據,cat part* > all 即可以合并-T/--upload-file:上傳,-T "file[1-100].txt" ftp://myserver.com/upload/、-T "{file1.txt, file2.txt}" http://myserver.com-d/--data:post 請求,-d "id=1&name=test" http://myserver.com/example.php-F/--form:上傳,-F "password=@/etc/passwd" www.mypasswords.com-e/--referer:偽造 referer(盜鏈),服務器一般會檢查 http 請求的 referer,用于控制訪問,也就是告訴服務器你是從哪個頁面跳轉過來的,-e "www.baidu.com" http://www.baidu.com 告訴服務器你是從 www.baidu.com 跳轉過來的-A/--user-agent:定義 user agent,偽裝成一個指定的瀏覽器,-A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)http://www.baidu.com-b/--cookie:有的網站會查看 cookie 信息來判斷是否按規定瀏覽,-b /cookie.txt http://www.baidu.com 使用本地 cookie.txt 里的 cookie 信息來訪問,也可以輸入參數和值:-b "name=wade" http://www.baidu.com-c/--cookie-jar:保存操作時生成的 cookie 文件,-c ./cookie.txt http://www.baidu.com-w/--write-out:自定義輸出內容,-w %{http_code} -w "time=%{time_total}\n" http://www.baidu.com 打印返回的 http 碼和響應時間,還有很多參數可以打印。-u/--user: <user[:password]> 用戶名和密碼,curl -O -u username:passwd ftp://www.linux.com/file.txt 從 ftp?服務器下載文件(也可以 curl -O ftp://username:passwd@www.linux.com/file.txt)-x/--porxy:上網很多時候需要用到代理服務器,-x 192.168.1.1:8080 http://www.baidu.com 使用代理服務以及端口訪問-s/--silent:靜音模式

?

? ? 當然,curl 還有很多別的功能,只是列了幾個常用的選項,附上一個寫的不錯的博客:http://www.ruanyifeng.com/blog/2011/09/curl.html,可參考。

?

  • iptables

? ? 可參考《2小時玩轉 iptables》pdf

? ? ipset 是 iptables 的擴展,允許創建一個匹配整個地址的地址集合,而 iptables 僅僅支持線性存儲和過濾,地址集合可提高查找的速率。

????#iptables + ipset:centos 默認沒有安裝 iptables 和 ipsetyum install?iptables-services ipset#創建一個新的 ipset,ipset 默認可存儲 65536 個 element,可通過選項 maxelem 修改數量ipset create my_ipset hash:nat (maxelem 65536)#查看以創建的 ipset ipset list#添加一個ip 到 ipset 中ipset add my_ipset 192.168.1.1#從 ipset 中去除一個 ipipset del my_ipset 192.168.0.1#在創建 iptables 規則鏈時使用 ipsetiptables -I INPUT -m set --match-set my_ipset src -p tcp --destination-port 22 -j DROP#刪除 ipsetipset destroy my_ipset#將 ipset 規則保存到文件ipset save my_ipset -f my_ipset.txt#從文件中導入 ipset 規則ipset restore -f my_ipset.txt

? ? ipset 支持動態修改地址集合,哪怕 iptables 正在使用這個集合,這樣在生產環境上面就可以很好的管理黑名單列表,而不用重啟 iptables 了。

?

  • telnet

? ? telnet 是一款基于 telnet 協議的遠程工具,Telnet 協議是 TCP/IP 協議家族中的一員,是一個遠程登錄服務的標準協議,但是由于 telnet 采用明文傳送報文,沒有使用公鑰私鑰加密,所有大都服務器都沒有開放 telnet 服務,而使用加密的ssh 方式。

? ? 一般使用 telnet 大都是檢查遠程服務器的某個端口是否能訪問。

? ? telnet 192.168.0.1 22

? ? Telnet 實例還可以將鍵盤連接到某個目標 TCP 端口,并將此 TCP 端口輸出回送到顯示屏上,它幾乎可以連接所有的 TCP 服務器,包括 HTTP 服務器。

? ? 通過 Telnet 程序直接與 Web 服務器進行對話,通過 Telnet 可以打開一條到某臺機器上某個端口的 TCP 連接,然后直接向那個端口輸入一些字符,Web 服務器會將 Telnet 程序做為一個 Web 客戶端來處理,所有回送給 TCP 連接的數據都會顯示在屏幕上。

? ? 步驟:

????1、首先,向 DNS 服務器查找 www.joes-hardware.com 的 IP 地址,打開一條到目標服務器端口 80 的 TCP 連接,當然 Telnet 會為我們完成這些。2、在完成打開一條 TCP 連接后,Telnet 會輸出三行內容,告訴我們已經建立了連接。3、接下來就要輸入 HTTP 請求了4、請求結束后(由一行空行表示),服務器會在一條 HTTP 響應中將內容返回并關閉連接。

? ? 輸出:

? ? Telnet 雖然可以很好的模擬 HTTP 客戶端,但是并不能作為服務器使用,而且 Telnet 做自動化很繁瑣,可以使用 nc(netcat)方便的操縱基于 TCP 和 UDP 的流量(包括 HTTP)

?

?

?

?

?

?

?

?

????

????????

?

?

?

?

?

????

????

????

?

?

?

?

?

?

?

?

? ??

轉載于:https://my.oschina.net/u/2470065/blog/776719

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397477.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397477.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397477.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SqlServer 備份還原教程

看了眾多教程&#xff0c;自己也寫個增強記憶&#xff0c;錯誤地方麻煩指出。 ———————————————————————-備份——————————————————————– 1.打開數據庫&#xff0c;成功連接 2.找到要備份的數據庫&#xff0c;圖中演示備份數據庫te…

php通過實現excel導入,php實現excel導入數據

表單頁面 if($_POST [import]"導入數據 "){$leadExcel$_POST[leadExcel];//echo $leadExcel;die;if($leadExcel "true"){//echo "OK";die();//獲取上傳的文件名$filename $_FILES[inputExcel][name];//上傳到服務器上的臨時文件名$tmp_name $…

深入理解計算機系統----讀書筆記

第二部分 信息的表示和處理 信息存儲&#xff1a; 二進制&#xff08;0101001&#xff09;&#xff0c; 八進制&#xff0c;十六進制&#xff08;0x32FD&#xff09; 字&#xff08;word size&#xff09;指明整數和指針數據的標稱大小&#xff08;normal size&#xff09;&…

FiddlerScript-常用總結

沒有用過Fiddler的人應該對FiddlerScript沒啥感觸&#xff0c;我是真心覺得FiddlerScript對測試有一定的幫助哈。在web前端開發過程中&#xff0c;Fiddler是最常用的一款調試工具&#xff0c;那對于測試來說&#xff0c;對測試來說也是一大利器。在大多數情況下&#xff0c;通過…

OpenStack-Zun 使用

Zun組件簡介 Zun是Openstack中提供容器管理服務的組件&#xff0c;于2016年6月建立。Zun的目標是提供統一的Openstack API用于啟動和管理容器&#xff0c;支持多種容器技術。Zun原來稱為Higgins&#xff0c;后改名為Zun。 Zun計劃支持多種容器技術&#xff0c;Docker&#xff0…

【優雅代碼】深入淺出 妙用Javascript中apply、call、bind

這篇文章實在是很難下筆&#xff0c;因為網上相關文章不勝枚舉。 巧合的是前些天看到阮老師的一篇文章的一句話&#xff1a; “對我來說&#xff0c;博客首先是一種知識管理工具&#xff0c;其次才是傳播工具。我的技術文章&#xff0c;主要用來整理我還不懂的知識。我只寫那些…

PHP筆記隨筆

1.CSS控制頁面文字不能復制&#xff1a; body{-webkit-user-select:none;} 2.【php過濾漢字和非漢字】 $sc"aaad....##--__i漢字過濾"; //iconv("UTF-8","GB2312",$sc);utf-8轉碼 echo $temperegi_replace("[^\x80-\xff]",""…

qt linux 添加庫文件路徑,Linux下Qt調用共享庫文件.so

jvm--4垃圾收集6. 垃圾收集GC (1)當需要排查各種內存溢出,內存泄漏等問題,當GC成為系統達到更高性能的瓶頸時,我們就需要對這些自動化的GC進行監控和調節. (2)PC計數器.本地方法棧.虛擬機棧,隨方法或者線 ...GET和POSTAjax與Comet 1. Ajax Asynchronous Javascriptxml :能夠向服…

js進階 14-8 表單序列化函數serializeArray()和serialize()的區別是什么

js進階 14-8 表單序列化函數serializeArray()和serialize()的區別是什么 一、總結 一句話總結&#xff1a;兩者都是對表單進行序列化&#xff0c;serializeArray()返回的是json對象&#xff0c;serialize()返回的是json形式的字符串&#xff0c;使用起來都是一樣的 1、$&#x…

HDU 2842 Chinese Rings(矩陣高速功率+遞歸)

職務地址&#xff1a;HDU 2842 這個游戲是一個九連環的游戲。 如果當前要卸下前n個環。由于要滿足前n-2個都卸下&#xff0c;所以要先把前n-2個卸下。須要f(n-2)次。然后把第n個卸下須要1次&#xff0c;然后這時候要卸下第n-1個。然后此時前n-2個都已經被卸下了。這時候把前n-2…

硬鏈接與軟連接

linux系統硬鏈接和軟連接&#xff1a; 1文件都由文件名和數據組成&#xff0c;在linux中文件被分為兩個部分&#xff1a;用戶數據和元數據。用戶數據&#xff1a;即文件數據塊&#xff0c;記錄真實數據的地方。元數據&#xff1a;文件的附加屬性&#xff0c;記錄文件的大小&…

linux 7.2中文命令,CentOS7如何支持中文顯示

1.查看系統是否安裝有中文語言包locale -a | grep "zh_CN" 命令含義&#xff1a;列出所有可用的公共語言環境的名稱&#xff0c;包含有"zh_CN"若出現圖中所示幾項&#xff0c;那么說明系統中已經安裝了語言包&#xff0c;不需要在安裝。含義是&#xff1a;…

html-拖拽

html-拖拽(draggable"true")拖拽的7個事件&#xff1a;> 拖拽塊.οndragstartfunction(){console.log("拖拽開始")&#xff1b;}> 拖拽塊.οndragfunction(){console.log("拖拽中")&#xff1b;}> 拖拽塊.οndragendfunction(){console…

大道至簡

道在中國哲學中&#xff0c;是一個重要的概念&#xff0c;表示“終極真理”。此一概念&#xff0c;不單為哲學流派諸子百家所重視&#xff0c;也被宗教流派道教等所使用。大道至簡是指大道理&#xff08;基本原理、方法和規律&#xff09;是極其簡單的&#xff0c;簡單到一兩句…

別人7天樂,運維還苦逼值班?

你被點名值班了嗎&#xff1f;或者你的朋友、隔壁七大姑八大姨的侄子被點名值班了嗎&#xff1f; 國慶將至&#xff0c;大家都開始研究各種度假攻略了&#xff0c;國內游、國外游、地球游、外星游。。。然而總有一票人&#xff0c;默默地職守著 -- tIT 公司運營支撐組/運維組。…

【常用損失函數】

一、Smooth L1 Loss 1.公式&#xff1a; 2.原因&#xff1a; L1損失使權值稀疏但是導數不連續&#xff0c;L2損失導數連續可以防止過擬合但對噪聲不夠魯棒&#xff0c;分段結合兩者優勢。 二、Focal Loss 1.公式&#xff1a; 2.作用&#xff1a; 使得正負樣本平衡的同時&#x…

ORA-01940: cannot drop a user that is currently connected解決方法

我們在刪除數據庫用戶時候會碰到如下錯誤 SQL> DROP USER sys_xj cascade; DROP USER sys_xj cascade*ERROR at line 1:ORA-01940: cannot drop a user that is currently connected 解決方法&#xff1a; 1.查詢出還在連接的此用戶會話進程 SQL> SELECT SID,SERIAL# FR…

實現對象克隆

實現Serializable接口&#xff0c;通過對象的序列化和反序列化實現克隆&#xff0c;可以實現真正的深度克隆&#xff0c;代碼如下 package com.lovo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; i…

linux 讀取內存顆粒,linux查看主板內存槽與內存信息的命令dmidecode怎么用

在Linux中&#xff0c;我們常常使用命令來實現許多操作&#xff0c;比如查看內存信息等&#xff0c;下面小編就為大家帶來一篇linux查看主板內存槽與內存信息的命令dmidecode方法。小編覺得挺不錯的&#xff0c;現在就分享給大家&#xff0c;也給大家做個參考。一起跟隨小編過來…

python 圖像處理(從安裝Pillow開始)

python 圖像處理(從安裝Pillow開始) python2.x及以下用的是PIL(圖像處理庫是 PIL(Python Image Library))&#xff0c;最新版本是 1.1.7 可在http://www.pythonware.com/products/pil/index.htm 下載和學習。 不過從該網站可看出它不支持python3.x Pillow由PIL而來(支持3.x)&…