网络通信技术基础
在我們日常使用的各種各樣的軟件,都涉及到一項很關鍵的技術——網絡通信技術。今天我們就從軟件開發者的角度來探究一下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進行通信。
還有很多信息這里就不補充了。
?
?
總結