操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊


    etcat 號稱 TCP/IP 的瑞士軍刀并非浪得虛名,以體積小(可執行 200KB)功能靈活而著稱,在各大發行版中都默認安裝,你可以用它來做很多網絡相關的工作,熟練使用它可以不依靠其他工具做一些很有用的事情。

    最初作者是叫做“霍比特人”的網友 Hobbit hobbit@avian.org 于 1995 年在 UNIX 上以源代碼的形式發布,Posix 版本的 netcat 主要有 GNU 版本的 netcat 和 OpenBSD 的 netcat 兩者都可以在 debian/ubuntu 下面安裝,但是 Windows 下面只有 GNU 版本的 port。

    不管是程序員還是運維,熟悉這個命令都可以讓很多工作事半功倍,然而網上基本 90% 的 netcat 文章說的都是老版本的 OpenBSD 的 netcat,已經沒法在主流 linux 上使用了,所以我們先要檢查版本:

    在 debian/ubuntu 下面:

    readlink -f $(which nc)


    看看,結果會有兩種:

    • /bin/nc.traditional: 默認 GNU 基礎版本,一般系統自帶。
    • /bin/nc.openbsd: openbsd 版本,強大很多。

    都可以用 apt-get install nc-traditional 或者 apt-get install nc-openbsd 來選擇安裝。不管是 GNU 版本還是 OpenBSD 版本,都有新老的區別,主要是傳送文件時 stdin 發生 EOF 了,老版本會自動斷開,而新的 gnu/openbsd 還會一直連著,兩年前 debian jessie 時統一升過級,導致網上的所有教程幾乎同時失效。

    下面主要以最新的 GNU 版本為主同時對照更強大的 openbsd 版本進行說明。

    端口測試

    你在服務器 A主機(192.168.1.2) 上面 8080 端口啟動了一個服務,有沒有通用的方法檢測服務的 TCP 端口是否啟動成功?或者在 B 主機上能不能正常訪問該端口?

    進一步,如果而 A 主機上用 netstat -an 發現端口成功監聽了,你在 B 主機上的客戶端卻無法訪問,那么到底是服務錯誤還是網絡無法到達呢?我們當然可以在 B 主機上用 telnet 探測一下:

    telnet 192.168.1.2 8080


    但 telnet 并不是專門做這事情的,還需要額外安裝,所以我們在 B 主機上用 netcat:

    nc -vz 192.168.1.2 8080


    即可,v 的意思是顯示多點信息(verbose),z 代表不發送數據。那么如果 B 主機連不上 A 主機的 8080 端口,此時你就該檢查網絡和安全設置了,如果連的上那么再去查服務日志去。

    nc 命令后面的 8080 可以寫成一個范圍進行掃描:

    nc -v -v -w3 -z 192.168.1.2 8080-8083


    兩次 -v 是讓它報告更詳細的內容,-w3 是設置掃描超時時間為 3 秒。

    傳輸測試

    你在配置 iptable 或者安全組策略,禁止了所有端口,但是僅僅開放了 8080 端口,你想測試一下該設置成功與否怎么測試?安裝個 nginx 改下端口,外面再用 chrome 訪問下或者 telnet/curl 測試下??還是 python -m 啟動簡單 http 服務 ?其實不用那么麻煩,在需要測試的 A 主機上:

    nc -l -p 8080


    這樣就監聽了 8080 端口,然后在 B 主機上連接過去:

    nc 192.168.1.2 8080


    兩邊就可以會話了,隨便輸入點什么按回車,另外一邊應該會顯示出來,注意,openbsd 版本 netcat 用了 -l 以后可以省略 -p 參數,寫做:nc -l 8080 ,但在 GNU netcat 下面無法運行,所以既然推薦寫法是加上 -p 參數,兩個版本都通用。

    老版本的 nc 只要 CTRL+D 發送 EOF 就會斷開,新版本一律要 CTRL+C 結束,不管是服務端還是客戶端只要任意一邊斷開了,另一端也就結束了,但是 openbsd 版本的 nc 可以加一個 -k 參數讓服務端持續工作。

    那么你就可以先用 nc 監聽 8080 端口,再遠端檢查可用,然后又再次隨便監聽個 8081 端口,遠端檢測不可用,說明你的安全策略配置成功了,完全不用安裝任何累贅的服務。

    測試 UDP 會話

    兩臺主機 UDP 數據發送不過去,問題在哪呢?你得先確認一下兩臺主機之間 UDP 可以到達,這時候沒有 nginx 給你用了,怎么測試呢?用 python 寫個 udp 的 echo 服務??運維不會認你寫的工具的,即使連不通他也會認為你的程序有 bug,于是 netcat 又登場了,在 A 主機上:


    nc -u -l -p 8080


    監聽 udp 的 8080 端口,然后 B 主機上連上去:

    nc -u 192.168.1.2 8080


    然后像前面測試 tcp 的方法進行檢測,結束了 CTRL+C 退出,看看一邊輸入消息另外一邊能否收到,收得到的話可能是你自己的服務原因,收不到的話把 nc 測試結果扔給運維/系統管理員,讓他們趕快檢查網關和防火墻配置,系統自帶的工具測試的結果,既簡單又權威。

    文件傳輸

    你在一臺 B 主機上想往 A 主機上發送一個文件怎么辦?不能用 scp / szrz 的話?繼續 python 寫個 http 上傳?裝個 ftpd 服務?不用那么麻煩,在 A 主機上監聽端口:

    nc -l -p 8080 > image.jpg


    然后在 B 主機上:

    nc 192.168.1.2 8080 < image.jpg


    netcat 嘛,就是用于通過網絡把東西 cat 過去,注意,老版本 GNU / OpenBSD 的 netcat 再文件結束(標準輸入碰到 EOF),發送文件一端就會關閉連接,而新版本不會,你需要再開個窗口到 A 主機上看看接收下來的文件尺寸和源文件比較一下判斷傳輸是否結束。

    當傳輸完成后,你再任意一端 CTRL+C 結束它。對于新版 OpenBSD 的 netcat 有一個 -N 參數,可以指明 stdin 碰到 EOF 就關閉連接(和老版本一致),我們寫作:

    /bin/nc.openbsd -N 192.168.1.2 8080 < image.jpg


    你機器上的 nc 命令有可能指向 /bin/nc.traditional 或者 /bin/nc.openbsd 任意一個,這里顯示指明調用 openbsd 版本的 netcat。

    這樣在 openbsd 新版本的 netcat 中使用 -N參數,就不需要再開個終端去手工檢查傳輸是否完成,傳輸結束了就會自動退出。其實 GNU 版本的 netcat 也有可以加個 -q0 參數,達到和 openbsd 版本 -N 的效果:

    /bin/nc.traditional -q0 192.168.1.2 8080 < image.jpg


    只不過是 Linux 下面最新的 GNU netcat,對應 Windows 版本 沒有該參數,所以從 Windows 傳文件過去時,少不了再開個終端看一下進度,如果是 Linux 端發送就沒問題了。通過管道協作,搭配 tar 命令,還可以方便的傳一整個目錄過去,有興趣可以自己研究。

    使用 netcat 這個系統默認安裝的工具進行文件傳輸,可以算作你保底的手段,當 scp/ftp 都沒法使用的情況下,你的一個殺手锏。

    網速吞吐量測試

    最簡單的方法,GNU 版本的 netcat 加上 -v -v 參數后,結束時會統計接收和發送多少字節,那么此時 A 主機上顯示運行 GNU 版本的 nc 監聽端口:


    /bin/nc.traditional -v -v -n -l -p 8080 > /dev/null


    加 n 的意思是不要解析域名,避免解析域名浪費時間造成統計誤差,然后 B 主機上:

    time nc -n 192.168.1.2 8080 < /dev/zero

    回車后執行十秒鐘按 CTRL+C 結束,然后在 A 主機那里就可以看到接收了多少字節了,此時根據 time 的時間自己做一下除法即可得知,注意 GNU 的 netcat 統計的數值是 32 位 int,如果傳輸太多就回環溢出成負數了。

    對于 OpenBSD 版本的 nc 我們可以用管道搭配 dd 命令進行統計,服務端運行:

    nc -l -p 8080 > /dev/null


    客戶端運行 dd 搭配 nc:

    dd if=/dev/zero bs=1MB count=100 | /bin/nc.openbsd -n -N 192.168.1.2 8080


    結束以后會有結果出來,注意這里使用了 -N 代表 stdin 碰到 EOF 后就關閉連接,這里凡是寫 nc 命令的地方,代表 GNU/OpenBSD 任意版本的 netcat 都可以,顯示的指明路徑,就代表必須使用特定版本的 netcat,上條命令等效的 GNU 版本是:

    dd if=/dev/zero bs=1MB count=100 | /bin/nc.traditional -n -q0 192.168.1.2 8080


    其實上面兩種方法都把建立連接的握手時間以及 TCP 窗口慢啟動的時間給計算進去了,不是特別精確,最精確的方式是搭配 pv 命令(監控統計管道數據的速度),在 A 主機運行:

    nc -l -p 8080 | pv


    然后再 B 主機運行:

    nc 192.168.1.2 8080 < /dev/zero


    此時 A 主機那端持續收到 B 主機發送過來的數據并通過管道投遞給 pv 命令后,你就能看到實時的帶寬統計了,pv 會輸出一個實時狀態:

    353MiB 0:00:15 [22.4MiB/s] [ <=> ]


    讓你看到最新的帶寬吞吐量,這是最準確的吞吐量測試方法,在不需要 iperf 的情況下,直接使用 nc 就能得到一個準確的數據。

    系統后門

    假設你用串口登錄到 A 主機,上面十分原始,包管理系統都沒有,sshd/telnetd 都跑不起來,這時候你想用 B 主機通過網絡登錄 A 主機有沒有辦法?

    GNU 版本的 netcat 有一個 -e 參數,可以在連接建立的時候執行一個程序,并把它的標準輸入輸出重定向到網絡連接上來,于是我們可以在 A 主機上 -e 一下 bash:

    /bin/nc.traditional -l -p 8080 -e /bin/bash


    按回車打開系統后門,然后再 B 主機那里照常:

    nc 192.168.1.2 8080


    你就可以在 B 主機上登錄 A 主機的 shell 了,操作完成 CTRL+C 結束。

    對于 openbsd 版本的 netcat,-e 命令被刪除了,沒關系,我們可以用管道來完成,和剛才一樣,在 A 主機上:

    mkfifo /tmp/f

    cat /tmp/f | /bin/bash 2>&1 | /bin/nc.openbsd -l -p 8080 > /tmp/f


    然后 B 主機和剛才一樣:

    nc 192.168.1.2 8080


    即可訪問,用完注意將 /tmp/f 這個 fifo 文件刪除。

    結束

    netcat 就是可以在命令行直接的方式操作 tcp/udp 進行原始的:監聽,連接,數據傳輸等工作。然后搭配管道,實現靈活多樣的功能,或者進行各種網絡測試。

    其實上面幾個例子,并不是說明 “netcat 可以干這些事情”而是通過舉例開一下腦洞,看看搭配管道的 netcat 究竟有多強。

    還有很多其他用法,比如你可以用 netcat + shell script 寫一個 http 服務器,使用 fifo 搭配兩層 nc 可以實現 tcp 端口轉發,搭配 openssl 命令行工具和 nc 加管道可以把 ssl 的套接字解碼并映射成裸的 socket 端口供沒有 ssl 功能的工具訪問。

    當然你要說,這么多復雜的用法你記不住,大部分你都可以用專業軟件來代替,那至少你可以先嘗試使用 nc 來做 tcp/udp 端口測試,不要再用 telnet/chrome 來測試端口是否可用了,后者太過業余。其他功能可作為備份手段,在極端惡劣的環境下使用一下,也許能幫助到你很多;再你有心情的情況下可以研究下如何使用管道搭配其他工具進行一些高階操作就行。

    一、前期準備

    打開串口工具,以XCOM V2.6為例,驗證AT指令。如圖表 1?1所示。

    圖表 1?1驗證AT指令

    如果未識別串口,請按下面的步驟安裝相應的驅動。

    1.檢查并安裝串口驅動程序

    PC打開“控制面板” ,進入“硬件和聲音”,選擇“設備管理器”,如圖表 1?2所示。

    圖表 1?2 進入設備管理器

    2.進入“設備管理器”,可以看到設備對應的端口號,如果有多個端口請注意區分,如圖表 1?3所示。

    圖表1?3 檢查是否識別串口

    二、單連接 TCP Client

    1、配置WiFi模式為Station+SoftAP模式,如圖表 2?1所示。

    圖表 2?1 設置WiFi模式

    2、E103-W10連接至WiFi名稱為"E880-IR01",密碼為"JSZXE880"的路由器,根據您的路由器名稱和密碼替換AT指令的參數即可。如圖表 2?2所示。

    圖表2?2 連接至路由器

    3、PC與E103-W10連接至同一路由器,即WiFi名稱為E880-IR01,如圖表 2?3所示。

    圖表 2?3 PC連接至同一路由器

    4、查看PC端WiFi IP地址

    windows 10桌面左下角“開始”按鈕處右鍵,進入“運行(R)”,如圖表 2?4所示。

    圖表 2?4 win10運行

    輸入“cmd”進入 “命令提示符”界面,如圖表 2?5所示。

    圖表 2?5 進入命令提示符界面

    在“命令提示符”界面中輸入ipconfig,在按下“Enter”鍵,找到 “無線局域網適配器 WLAN”中的IPv4地址。如圖表 2?6所示。

    圖表 2?6 查詢PC 無線IP地址

    往下找到“無線局域網適配器 WLAN:”中的IP地址,如圖表 2?7所示。

    圖表 2?7 查看PC 無線IP地址

    5、在PC端使用網絡調試工具,以“TCP&UDP測試工具”為例,建立一個TCP服務器。

    打開“TCP&UDP測試工具”,選中“服務器模式”,鼠標右鍵選擇“創建服務器”,如圖表 2?8所示。

    圖表 2?8 準備創建服務器

    PC創建IP地址為192.168.1.156,即上述步驟查到的IP地址,端口為8080的服務器。如圖表 2?9所示。

    圖表 2?9 配置服務器

    選中創建的的服務器,點擊“啟動服務器”,此時服務器已進入“監聽狀態”了。如圖表 2?10所示。

    圖表 2?10 啟動服務器

    6、連接到上述步驟中創建的服務器

    E103-W10作為TCP Client,相關指令AT+CIPSTART="TCP","192.168.1.156",8080 指令的參數分別表示:協議,服務器IP地址和端口號。與PC端“TCP&UDP測試工具”建立TCP連接。如圖表 2?11圖表 2?12所示。

    圖表 2?11 發送TCP連接指令

    圖表 2?12 連接成功

    7、E103-W10向服務器發送數據

    首先,設置想要發送的數據長度,例如5字節,如圖表 2?13所示。

    圖表 2?13 設置發送長度

    然后輸入發送數據,例如“ABCDE”,如圖表 2?14所示。

    圖表 2?14 發送數據

    PC端接收到數據,如圖表 2?15所示。

    圖表 2?15 TCP&UDP測試工具接收數據

    8、當E103-W10接收到服務器發來的數據,將提示如下信息:

    +IPD,n:xxxxxxxxx //接收n個字節,數據為: xxxxxxxxx

    如圖表 2?16所示。

    圖表 2?16 接收數據

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有