什么是端口號?
計算機"端口"是英文port的譯義,可以認為是計算機與外界通訊交流的出口。其中硬件領域的端口又稱接口,如:USB端口、串行端口等。軟件領域的端口一般指網(wǎng)絡中面向連接服務和無連接服務的通信協(xié)議端口,是一種抽象的軟件結(jié)構(gòu),包括一些數(shù)據(jù)結(jié)構(gòu)和I/O(基本輸入輸出)緩沖區(qū)。
在網(wǎng)絡技術中,端口(Port)有好幾種意思。集線器、交換機、路由器的端口指的是連接其他網(wǎng)絡設備的接口,如RJ-45端口、Serial端口等。我們 這里所指的端口不是指物理意義上的端口,而是特指TCP/IP協(xié)議中的端口,是邏 輯意義上的端口。
那么TCP/IP協(xié)議中的端口指的是什么呢?如果把IP地址比作一間房子 ,端口就是出入這間房子的門。真正的房子只有幾個門,但是一個IP地址的端口 可以有65536(即:256×256)個之多!端口是通過端口號來標記的,端口號只有整數(shù),范圍是從0 到65535(256×256)。
在Internet上,各主機間通過TCP/IP協(xié)議發(fā)送和接收數(shù)據(jù)包,各個數(shù)據(jù)包根據(jù)其目的主機的ip地址來進行互聯(lián)網(wǎng)絡中的路由選擇??梢姡褦?shù)據(jù)包順利的傳送到目的主機是沒有問題的。問題出在哪里呢?我們知道大多數(shù)操作系統(tǒng)都支持多程序(進程)同時運行,那么目的主機應該把接收到的數(shù)據(jù)包傳送給眾多同時運行的進程中的哪一個呢?顯然這個問題有待解決,端口機制便由此被引入進來。
本地操作系統(tǒng)會給那些有需求的進程分配協(xié)議端口(protocal port,即我們常說的端口),每個協(xié)議端口由一個正整數(shù)標識,如:80,139,445,等等。當目的主機接收到數(shù)據(jù)包后,將根據(jù)報文首部的目的端口號,把數(shù)據(jù)發(fā)送到相應端口,而與此端口相對應的那個進程將會領取數(shù)據(jù)并等待下一組數(shù)據(jù)的到來。說到這里,端口的概念似乎仍然抽象,那么繼續(xù)跟我來,別走開。
端口其實就是隊,操作系統(tǒng)為各個進程分配了不同的隊,數(shù)據(jù)包按照目的端口被推入相應的隊中,等待被進程取用,在極特殊的情況下,這個隊也是有可能溢出的,不過操作系統(tǒng)允許各進程指定和調(diào)整自己的隊的大小。
不光接受數(shù)據(jù)包的進程需要開啟它自己的端口,發(fā)送數(shù)據(jù)包的進程也需要開啟端口,這樣,數(shù)據(jù)包中將會標識有源端口,以便接受方能順利的回傳數(shù)據(jù)包到這個端口。
【版權聲明】:本站內(nèi)容來自于與互聯(lián)網(wǎng)(注明原創(chuàng)稿件除外),如文章或圖像侵犯到您的權益,請及時告知,我們第一時間刪除處理!謝謝!
下一篇:什么是鴻蒙?