掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括尼河口網(wǎng)站建設(shè)、尼河口網(wǎng)站制作、尼河口網(wǎng)頁(yè)制作以及尼河口網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,尼河口網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到尼河口省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
我們知道,IP 地址是計(jì)算機(jī)在互聯(lián)網(wǎng)上的地址編號(hào),每臺(tái)聯(lián)網(wǎng)的計(jì)算機(jī)都必須有自己的 IP 地址,而且必須是唯一的,這樣才能正常通信。也就是說(shuō),在互聯(lián)網(wǎng)上是通過(guò) IP 地址來(lái)確定不同計(jì)算機(jī)的位置的。
大家可以把 IP 地址想象成家庭的"門牌號(hào)碼",不管你住的是大雜院、公寓樓還是別墅,都有自己的門牌號(hào)碼,而且門牌號(hào)碼是唯一的。
如果知道了一臺(tái)服務(wù)器的 IP 地址,我們就可以找到這臺(tái)服務(wù)器。但是這臺(tái)服務(wù)器上有可能搭建了多個(gè)網(wǎng)絡(luò)服務(wù),比如 WWW 服務(wù)、FTP 服務(wù)、Mail 服務(wù),那么我們到底需要服務(wù)器為我們提供哪個(gè)網(wǎng)絡(luò)服務(wù)呢?這時(shí)就要靠端口(Port)來(lái)區(qū)分了,因?yàn)槊總€(gè)網(wǎng)絡(luò)服務(wù)對(duì)應(yīng)的端口都是固定的。
比如,WWW 服務(wù)對(duì)應(yīng)的端口是 80,F(xiàn)TP 服務(wù)對(duì)應(yīng)的端口是 20 和 21,Mail 服務(wù)對(duì)應(yīng)的端口是 25 和 110。也就是說(shuō),IP 地址可以想象成"門牌號(hào)碼",而端口可以想象成"家庭成員",找到了 IP 地址只能找到你們家,只有找到了端口,寄信時(shí)才能找到真正的收件人。
為了統(tǒng)一整個(gè)互聯(lián)網(wǎng)的端口和網(wǎng)絡(luò)服務(wù)的對(duì)應(yīng)關(guān)系,以便讓所有的主機(jī)都能使用相同的機(jī)制來(lái)請(qǐng)求或提供服務(wù),同一個(gè)服務(wù)使用相同的端口,這就是協(xié)議。
計(jì)算機(jī)中的協(xié)議主要分為兩大類:
這兩種協(xié)議都支持 2
16,也就是 65535 個(gè)端口。這么多端口怎么記憶呢?系統(tǒng)給我們提供了服務(wù)與端口的對(duì)應(yīng)文件 /etc/services。 查看—下:
[root@localhost ~]#vi /etc/services
…省略部分輸出…
ftp-data 20/tcp
ftp-data 20/udp
# 21 is registered to ftp, but also used by fsp
ftp 21/tcp
ftp 21/udp
fsp fspd
#FTP服務(wù)的端口
…省略部分輸出…
smtp 25/tcp mail
smtp 25/udp mail
#郵件發(fā)送信件的端口
…省略部分輸出…
http 80/tcp www www-http #WorldWideWeb HTTP
http 80/udp www www-http #HyperText Transfer Protocol
#WWW服務(wù)的端口
…省略部分輸出…
pop3 110/tcp pop-3
# POP version 3
pop3 110/udp pop-3
#郵件接收信件的端口
…省略部分輸出…
網(wǎng)絡(luò)服務(wù)的端口能夠修改嗎?當(dāng)然是可以的,不過(guò)一旦修改了端口,那么客戶機(jī)在訪問(wèn)服務(wù)器時(shí)很難知道服務(wù)器對(duì)應(yīng)的端口是什么,也就不能正確地獲取服務(wù)了。所以,除非在實(shí)驗(yàn)環(huán)境下,否則不要修改網(wǎng)絡(luò)服務(wù)對(duì)應(yīng)的端口。
既然每個(gè)網(wǎng)絡(luò)服務(wù)對(duì)應(yīng)的端口是固定的,那么是否可以通過(guò)查詢服務(wù)器中開(kāi)啟的端口,來(lái)判斷當(dāng)前服務(wù)器開(kāi)啟了哪些服務(wù)?
當(dāng)然是可以的。雖然判斷服務(wù)器中開(kāi)啟的服務(wù)還有其他方法(如通過(guò)ps命令),但是通過(guò)端口的方法查看最為準(zhǔn)確。命令格式如下:
[root@localhost ~]# netstat 選項(xiàng)
選項(xiàng):
舉個(gè)例子:
[root@localhost ~]# netstat -tlunp
#列出系統(tǒng)中所有已經(jīng)啟動(dòng)的服務(wù)(已經(jīng)監(jiān)聽(tīng)的端口),但不包含已經(jīng)連接的網(wǎng)絡(luò)服務(wù)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:53575 0.0.0.0:*
LISTEN
1200/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1181/rpcbind
tcp 0 0 0.0.0.0:22 O.O.O.O:* LISTEN 1405/sshd
tcp 0 0127.0.0.1:631 O.O.O.O:* LISTEN 1287/cupsd
tcp 0 0 127.0.0.1:25 O.O.O.O:* LISTEN 1481/master
tcp 0 0 :::57454 :::* LISTEN 1200/rpc.statd
tcp 0 0 :::111 :::* LISTEN 1181/rpcbind
tcp 0 0 :::22 :::* LISTEN 1405/sshd
tcp 0 0 ::1:631 :::* LISTEN 1287/cupsd
tcp 0 0 ::1:25 :::* LISTEN 1481/master
udp 0 0 0.0.0.0:58322 0.0.0.0:* 1276/avahi-daemon
udp 0 0 0.0.0.0:5353 O.O.O.O:* 1276/avahi-daemon
udp 0 0 0.0.0.0:111 O.O.O.O:* 1181/rpcbind
udp 0 0 0.0.0.0:631 O.O.O.O:* 1287/cupsd
udp 0 0 0.0.0.0:56459 0.0.0.0:* 1200/rpc.statd
udp 0 0 0.0.0.0:932 O.O.O.O:* 1181/rpcbind
udp 0 0 0.0.0.0:952 O.O.O.O:* 1200/rpc.statd
udp 0 0 :::111 :::* 1181/rpcbind
udp 0 0 :::47858 :::* 1200/rpc.statd
udp 0 0 :::932 :::* 1181/rpcbind
執(zhí)行這條命令會(huì)看到服務(wù)器上所有已經(jīng)開(kāi)啟的端口,也就是說(shuō),通過(guò)這些端口就可以知道當(dāng)前服務(wù)器上開(kāi)啟了哪些服務(wù)。
解釋一下命令的執(zhí)行結(jié)果:
再舉個(gè)例子:
[root@localhost ~]# netstat -an
#查看所有的網(wǎng)絡(luò)連接,包括已連接的網(wǎng)絡(luò)服務(wù)、監(jiān)聽(tīng)的網(wǎng)絡(luò)服務(wù)和Socket套接字
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:53575 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 192.168.0.210:22 192.168.0.105:4868 ESTABLISHED
tcp 0 0 :::57454 :::* LISTEN
...省略部分輸出...
udp 0 0 :::932 :::*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
#Socket套接字輸出,后面有具體介紹
Unix 2 [ ACC ] STREAM LISTENING 11712 /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 8450 @/com/ubuntu/upstart unix 7. [ ] DGRAM 8651 @/org/kernel/udev/udevd
unix 2 [ ACC ] STREAM LISTENING 11942 @/var/run/hald/dbus-b4QVLkivf1
...省略部分輸出...
執(zhí)行"netstat -an"命令能査看更多的信息,在 Stated 中也看到了已經(jīng)建立的連接(ESTABLISED)。這是 ssh 遠(yuǎn)程管理命令產(chǎn)生的連接,ssh 對(duì)應(yīng)的端口是 22。
而且我們還看到了 Socket 套接字。在服務(wù)器上,除網(wǎng)絡(luò)服務(wù)可以綁定端口,用端口來(lái)接收客戶端的請(qǐng)求數(shù)據(jù)外,系統(tǒng)中的網(wǎng)絡(luò)程序或我們自己開(kāi)發(fā)的網(wǎng)絡(luò)程序也可以綁定端口,用端口來(lái)接收客戶端的請(qǐng)求數(shù)據(jù)。這些網(wǎng)絡(luò)程序就是通過(guò) Socket 套接字來(lái)綁定端口的。也就是說(shuō),網(wǎng)絡(luò)服務(wù)或網(wǎng)絡(luò)程序要想在網(wǎng)絡(luò)中傳遞數(shù)據(jù),必須利用 Socke 套接字綁定端口,并進(jìn)行數(shù)據(jù)傳遞。
使用"netstat -an"命令查看到的這些 Socke 套接字雖然不是網(wǎng)絡(luò)服務(wù),但是同樣會(huì)占用端口,并在網(wǎng)絡(luò)中傳遞數(shù)據(jù)。
解釋一下 Socket 套接字的輸出:

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流