網路通訊技術基礎

Alexwym發表於2018-07-21

在我們日常使用的各種各樣的軟體,都涉及到一項很關鍵的技術——網路通訊技術。今天我們就從軟體開發者的角度來探究一下J網路通訊技術。

一、網路通訊技術

當我們用在點選下QQ對話方塊的“傳送”按鍵時,相應的好友就會在另一臺電腦上收到我們所傳送的資訊。大致過程如下

首先我們要明白通訊是程式與程式之間的互動而不僅僅只是主機與主機之間的互動。每一臺主機都有自己的ip地址。這個IP地址可以在網路中標識每一臺主機。當主機1上面的QQ程式1要和主機2上面的QQ程式2通訊時,它首先要根據主機2的ip地址找到主機2。但是隻有ip地址是不夠的,因為你還要找到QQ程式2的地址,與這個地址相對應的就是埠號。每一臺電腦都有0~65535埠號,其中每一個埠可供一個程式通訊用。所以在這裡QQ程式1還要去找到QQ程式2在主機2上所對應的埠號。

注意點:0~1024埠儘量不要用,這些埠屬於知名埠號。一般已經預設指定給一些特定的程式使用了。

二、檢視伺服器埠是否開發

使用telnet命令來檢視埠,如果連線得上,說明埠是開放的。而ping指令只能證明網路是否通達,即資料是否可以傳送到指定 的主機,並不能證明主機上是否開放某個埠。就像如果一個快遞員要把一封信送到小林家,他首先需要用ping指令來測試一下從快遞站到小林家的路是不是通的。但是即使是通的也不能保證快遞員能把包裹送進小林家,因為我們不知道小林家的門或窗能不能進。最好的測試方法就是親自走一趟,送一個包裹到小林家。如果能從門送進去,說明小林家門這個埠是開放的。如果能從窗送進去則說明窗這個埠是開放的。下面我們就來測試一下,檢視某個網站的埠是不是開放的。

指令一:ping 網站地址

我們發現資料沒有丟失,說明路是通的。接下來我們來測試它開放了哪些埠。首先我們來測試80埠,因為所有的網頁基本都會開放80埠。用telnet來嘗試連線上這個埠,進行資料的傳送。

這裡的183.232.231.173就是www.baidu.com這個網站伺服器的ip地址

指令二:telnel 183.232.231.173 80

進入這個介面之後說明我們已經連線上www.baidu.com這個網站的80埠了。我們在這個埠隨便輸入一些字元,發現頁面會出現如下的報錯資訊:

報錯資訊顯示這是個錯誤請求。這是因為伺服器上的web服務與客戶端通訊使用的是http協議,而我們隨便發的字元,伺服器是不能理解,所以就報出了錯誤請求的資訊,然後斷開了與客戶端的連線。

 

三、檢視本機的埠開放和通訊情況

指令一: netstat -an

可以使用netstat -an來檢視我們的機器在和哪些埠通訊。

補充一下netstat選項的資訊:

netstat [選項]

-a或--all:顯示所有連線中的Socket; 
-A<網路型別>或--<網路型別>:列出該網路型別連線中的相關地址; 
-c或--continuous:持續列出網路狀態; 
-C或--cache:顯示路由器配置的快取資訊; 
-e或--extend:顯示網路其他相關資訊; 
-F或--fib:顯示FIB; 
-g或--groups:顯示多重廣播功能群組組員名單; 
-h或--help:線上幫助; 
-i或--interfaces:顯示網路介面資訊表單; 
-l或--listening:顯示監控中的伺服器的Socket; 
-M或--masquerade:顯示偽裝的網路連線; 
-n或--numeric:直接使用ip地址,而不通過域名伺服器; 
-N或--netlink或--symbolic:顯示網路硬體外圍裝置的符號連線名稱; 
-o或--timers:顯示計時器; 
-p或--programs:顯示正在使用Socket的程式識別碼和程式名稱; 
-r或--route:顯示Routing Table; 
-s或--statistice:顯示網路工作資訊統計表; 
-t或--tcp:顯示TCP傳輸協議的連線狀況; 
-u或--udp:顯示UDP傳輸協議的連線狀況; 
-v或--verbose:顯示指令執行過程; 
-V或--version:顯示版本資訊; 
-w或--raw:顯示RAW傳輸協議的連線狀況; 
-x或--unix:此引數的效果和指定"-A unix"引數相同; 
--ip或--inet:此引數的效果和指定"-A inet"引數相同。

這個資訊說明本地埠135是開放的,但是目前沒有和外部埠通訊。

這個則說明本地埠49365是開放的,並且正在和外部埠49366進行通訊。

還有很多資訊這裡就不補充了。

 

 

相關文章