埠 區分不同服務

2021-07-23 02:26:32 字數 2547 閱讀 3323

「埠」是英文port的意譯,可以認為是裝置與外界通訊交流的出口。

埠詳解

埠是指介面電路中的一些暫存器,這些暫存器分別用來存放資料資訊、控制資訊和狀態資訊,相應的埠分別稱為資料埠、控制埠和狀態埠。

電腦執行的系統程式,其實就像乙個閉合的圓圈,但是電腦是為人服務的,他需要接受一些指令,並且要按照指令調整系統功能來工作,於是系統程式設計者,就把這個圓圈截成好多段,這些線段介面就叫埠(通俗講是斷口,就是中斷),系統執行到這些埠時,一看埠是否開啟或關閉,如果關閉,就是繩子接通了,系統往下執行,如果埠是開啟的,系統就得到命令,有外部資料輸入,接受外部資料並執行。

tcp埠

tcp:transmission control protocol傳輸控制協議tcp是一種面向連線(連線導向)的、可靠的、基於位元組流的傳輸層(transport layer)通訊協議,由ietf的rfc 793說明(specified)。在簡化的計算機網路osi模型中,它完成第四層傳輸層所指定的功能,udp是同一層內另乙個重要的傳輸協議。

udp埠

udp:udp是osi參考模型中一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。udp 協議基本上是ip協議與上層協議的介面。udp協議適用埠分別執行在同一臺裝置上的多個應用程式。

協議埠

如果把ip位址比作一間房子 ,埠就是出入這間房子的門。真正的房子只有幾個門,但是乙個ip位址的埠可以有65536(即:2^16)個之多!埠是通過埠號來標記的,埠號只有整數,範圍是從0 到65535(2^16-1)。

在internet上,各主機間通過tcp/ip協議傳送和接收資料報,各個資料報根據其目的主機的ip位址來進行網際網路絡中的路由選擇,把資料報順利的傳送到目的主機。大多數作業系統都支援多程式(程序)同時執行,那麼目的主機應該把接收到的資料報傳送給眾多同時執行的程序中的哪乙個呢?顯然這個問題有待解決,埠機制便由此被引入進來。

本地作業系統會給那些有需求的程序分配協議埠(protocol port,即我們常說的埠),每個協議埠由乙個正整數標識,如:80,139,445,等等。當目的主機接收到資料報後,將根據報文首部的目的埠號,把資料傳送到相應埠,而與此埠相對應的那個程序將會領取資料並等待下一組資料的到來。說到這裡,埠的概念似乎仍然抽象,那麼繼續跟我來,別走開。

埠其實就是隊,作業系統為各個程序分配了不同的隊,資料報按照目的埠被推入相應的隊中,等待被程序取用,在極特殊的情況下,這個隊也是有可能溢位的,不過作業系統允許各程序指定和調整自己的隊的大小。

不光接受資料報的程序需要開啟它自己的埠,傳送資料報的程序也需要開啟埠,這樣,資料報中將會標識有源埠,以便接受方能順利地回傳資料報到這個埠。

埠詳解

每種網路的服務功能都不相同,因此有必要將不同的封包送給不同的服務來處理,當你的主機同時開啟了ftp與www服務時,別人送來的資料封包,就會依照 tcp 上面的 port 號碼來給 ftp 這個服務或者是 www 這個服務來處理。

· 每乙個 tcp 連線都必須由一端(通常為 client )發起請求,這個 port 通常是隨機選擇大於 1024 以上(因為0-1023一般被用作知名伺服器的埠,被預定,如ftp、http、smtp等)的 port 號來進行!其 tcp封包會將(且只將) syn旗標設定起來!這是整個聯機的第乙個封包;

· 如果另一端(通常為 server ) 接受這個請求的話(特殊的服務需要以特殊的 port 來進行,例如 ftp 的 port 21 ),則會向請求端送回整個聯機的第二個封包!其上除了 syn旗標之外同時還將 ack 旗標也設定起來,並同時在本機端建立資源以待聯機之需;

· 然後,請求端獲得服務端第乙個響應封包之後,必須再響應對方乙個確認封包,此時封包只帶 ack旗標(事實上,後繼聯機中的所有封包都必須帶有 ack 旗標);

· 只有當服務端收到請求端的確認( ack )封包(也就是整個聯機的第三個封包)之後,兩端的聯機才能正式建立。這就是所謂的 tcp 聯機的』三次握手( three-way handshake )』的原理。

經過三向交握之後,你的 client 端的 port 通常是高於 1024 的隨機取得的 port,至於主機端則視當時的服務是開啟哪乙個 port 而定,例如 www 選擇 80 而 ftp 則以 21 為正常的聯機通道!

總而言之,我們這裡所說的埠,不是計算機硬體的i/o埠,而是軟體形式上的概念。根據提供服務型別的不同,埠分為兩種,一種是tcp埠,一種是udp埠。計算機之間相互通訊的時候,分為兩種方式:一種是傳送資訊以後,可以確認資訊是否到達,也就是有應答的方式,這種方式大多採用tcp協議;一種是傳送以後就不管了,不去確認資訊是否到達,這種方式大多採用udp協議。對應這兩種協議的服務提供的埠,也就分為tcp埠和udp埠。

那麼,如果攻擊者使用軟體掃瞄目標計算機,得到目標計算機開啟的埠,也就了解了目標計算機提供了哪些服務。我們都知道,提供服務就一定有服務軟體的漏洞,根據這些,攻擊者可以達到對目標計算機的初步了解。如果計算機的埠開啟太多,而管理者不知道,那麼,有兩種情況:一種是提供了服務而管理者沒有注意,比如安裝iis的時候,軟體就會自動增加很多服務,而管理員可能沒有注意到;一種是伺服器被攻擊者安裝木馬,通過特殊的埠進行通訊。這兩種情況都是很危險的,說到底,就是管理員不了解伺服器提供的服務,減小了系統安全係數。

同一埠如何區分不同的Socket

為了區分不同應用程序間的網路通訊和連線,主要有3個引數 通訊的目的ip位址 使用的傳輸層協議 tcp 或 udp 和使用的埠號。socket的原意是 插座 通過將這3個引數結合起來,與乙個 插座 socket繫結,應用層就可以和傳輸層通過套接字介面,區分來自不同應用程式程序或網路連線的通訊,實現資料...

同一埠如何區分不同的Socket

為了區分不同應用程序間的網路通訊和連線,主要有3個引數 通訊的目的ip位址 使用的傳輸層協議 tcp 或 udp 和使用的埠號。socket的原意是 插座 通過將這3個引數結合起來,與乙個 插座 socket繫結,應用層就可以和傳輸層通過套接字介面,區分來自不同應用程式程序或網路連線的通訊,實現資料...

常用埠區分

埠,8080埠同80埠,是被用於 www 服務的,可以實現網頁瀏覽,經常在訪問某個 或使用 伺服器的時候,會加上 8080 埠號。另外 apache tomcat web server 安裝後,預設的服務埠就是8080。服務 ssh,22埠就是 ssh 埠,用於通過命令列模式遠端連線 linux 系...