在使用ftp軟件,以及設(shè)置路由器時(shí),經(jīng)常會(huì)遇到“端口”,那么這個(gè)端口該如何理解呢?
下面跟隨小編一起看看吧。
先上一張示意圖:

我們把電腦中的各種應(yīng)用軟件、驅(qū)動(dòng)程序等,理解成“軟件邊界”包圍的一個(gè)“東西”。
“網(wǎng)口”就是網(wǎng)絡(luò)數(shù)據(jù)流進(jìn)出電腦的口子。
“端口”就像一個(gè)個(gè)插座,通過“協(xié)議”這些數(shù)據(jù)“管道”和網(wǎng)口連接。
“應(yīng)用程序”需要使用網(wǎng)絡(luò)傳送數(shù)據(jù)時(shí),“插”在端口上即可。
為了識(shí)別眾多的端口,我們給他們編上號(hào):0、1、2、3......65535。
所以網(wǎng)絡(luò)端口在表現(xiàn)上就是一個(gè)數(shù)字。
為什么要這樣呢?那讓我們?cè)傧胂胍幌孪旅娴那闆r:
電腦上打開了QQ、ftp、郵件客戶端、瀏覽器等網(wǎng)絡(luò)應(yīng)用程序,當(dāng)系統(tǒng)底層的網(wǎng)絡(luò)協(xié)議收到一系列數(shù)據(jù)包之后,應(yīng)該傳遞給哪個(gè)應(yīng)用程序呢?是不是蒙圈啦。
所以網(wǎng)絡(luò)工作者們發(fā)明了端口這個(gè)東西,以ftp文件傳輸端口為例:
假設(shè)我們使用filezilla這個(gè)ftp軟件從服務(wù)器下載文件,filezilla就“插”在21這個(gè)端口上,當(dāng)協(xié)議收到的數(shù)據(jù)包標(biāo)明是21號(hào)的,就通過21號(hào)管道“排”出,filezilla自然就接到想要的數(shù)據(jù)啦。
當(dāng)然,實(shí)際情況比這個(gè)復(fù)雜多了,ftp還涉及20號(hào)端口,請(qǐng)小伙伴們自行搜索。

那么,應(yīng)用軟件是怎么“插”在端口上呢?程序員們編程的時(shí)候可能就像下面的語句樣:
socket.Bind(21);
這里只是舉個(gè)例子,不同的庫函數(shù)提供的形式都會(huì)不一樣,但萬變不離“端口”。
從0到65535,部分端口是約定好的,比如http的80,DNS 53,SMTP 25,telnet 23等。
其他的比如windows系統(tǒng)的遠(yuǎn)程桌面 3389,mysql數(shù)據(jù)庫 3306等都是軟件開發(fā)者自行定義的。這個(gè)“約定”需要?jiǎng)討B(tài)的理解,就是說,某個(gè)軟件(確切的說應(yīng)該是協(xié)議)產(chǎn)生的時(shí)候,使用了某個(gè)端口,逐漸的,這個(gè)軟件變得非常流行,眾人皆知,那么他用的端口也就被“約定”了。
說了這么多,不會(huì)有人把上面所說的端口理解成設(shè)備上的“端口”了吧?
最后提一個(gè),windows系統(tǒng)局域網(wǎng)資源共享時(shí)涉及到的端口,在配置防火墻時(shí)經(jīng)常碰到,小伙伴們可以搜索下:135,136,137,138,139,445。















