計算機"端口“的真正含義

計算機"端口"是英文port的譯義,可以認為是計算機與外界通訊交流的出口。其中硬件領域的端口又稱接口,如:USB端口、串行端口等。軟件領域的端口一般指網絡中面向連接服務和無連接服務的通信協議端口,是一種抽象的軟件結構,包括一些數據結構和I/O(基本輸入輸出)緩衝區。


在網絡技術中,端口(Port)有好幾種意思。集線器、交換機、路由器的端口指的是連接其他網絡設備的接口,如RJ-45端口、Serial端口等。我們這裡所指的端口不是指物理意義上的端口,而是特指TCP/IP協議中的端口,是邏輯意義上的端口。
那麼TCP/IP協議中的端口指的是什麼呢?如果把IP地址比作一間房子,端口就是出入這間房子的門。真正的房子只有幾個門,但是一個IP地址的端口可以有65536(即:256×256)個之多!端口是通過端口號來標記的,端口號只有整數,範圍是從0 到65535(256×256)。

計算機


在Internet上,各主機間通過TCP/IP協議發送和接收數據包,各個數據包根據其目的主機的ip地址來進行互聯網絡中的路由選擇。可見,把數據包順利的傳送到目的主機是沒有問題的。問題出在哪裡呢?我們知道大多數操作系統都支持多程序(進程)同時運行,那麼目的主機應該把接收到的數據包傳送給眾多同時運行的進程中的哪一個呢?顯然這個問題有待解決,端口機制便由此被引入進來。
本地操作系統會給那些有需求的進程分配協議端口(protocal port,即我們常說的端口),每個協議端口由一個正整數標識,如:80,139,445,等等。當目的主機接收到數據包後,將根據報文首部的目的端口號,把數據發送到相應端口,而與此端口相對應的那個進程將會領取數據並等待下一組數據的到來。說到這裡,端口的概念似乎仍然抽象,那麼繼續跟我來,別走開。

計算機


端口其實就是隊,操作系統為各個進程分配了不同的隊,數據包按照目的端口被推入相應的隊中,等待被進程取用,在極特殊的情況下,這個隊也是有可能溢出的,不過操作系統允許各進程指定和調整自己的隊的大小。
不光接受數據包的進程需要開啟它自己的端口,發送數據包的進程也需要開啟端口,這樣,數據包中將會標識有源端口,以便接受方能順利的回傳數據包到這個端口。


分享到:


相關文章: