連接埠與通訊端

來源:互聯網
上載者:User

標籤:遠程登入   socket   應用程式   tcp   udp   

連接埠和通訊端,用於確定指定主機上的哪個本地進程使用了哪個協議和哪台遠程主機上的哪個進程進行了通訊。連接埠和通訊端的使用可以基於以下幾點:

①為每個應用過程分配一個過程標識符(Process ID),每次啟動一個進程時,這個ID都可能是不同的。

②進程ID因作業系統平台不同而不同,因而它們是不統一的。

③一個伺服器過程能夠同時與多個客戶串連,因而簡單的串連標識符不可能是唯一的。

連接埠和通訊端概念提供了一種以統一的方式唯一地標識串連以及參與串連的程式和主機的方法,而不管特定的過程ID。

(1)連接埠 

網路中可以被命名和定址的通訊連接埠,是作業系統可分配的一種資源。 

按照OSI七層協議的描述,傳輸層與網路層在功能上的最大區別是傳輸層提供進程通訊能力。從這個意義上講,網路通訊的最終地址就不僅僅是主機地址了,還包括可以描述進程的某種標識符。為此,TCP/IP協議提出了協議連接埠(protocol port,簡稱連接埠)的概念,用於標識通訊的進程。 

連接埠是一種抽象的軟體結構(包括一些資料結構和I/O緩衝區)。應用程式(即進程)通過系統調用與某連接埠建立串連(binding)後,傳輸層傳給該連接埠的資料都被相應進程所接收,相應進程發給傳輸層的資料都通過該連接埠輸出。在TCP/IP協議的實現中,連接埠的操作類似於一般的I/O操作,進程擷取一個連接埠,相當於擷取本地唯一的I/O檔案,可以用一般的讀寫原語訪問之。 

類似於檔案描述符,每個連接埠都擁有一個叫連接埠號碼(port number)的整數型標識符,用於區別不同連接埠。由於TCP/IP傳輸層的兩個協議TCP和UDP是完全獨立的兩個軟體模組,因此各自的連接埠號碼也相互獨立,如TCP有一個255號連接埠,UDP也可以有一個255號連接埠,二者並不衝突。 

連接埠號碼的分配

連接埠號碼的分配是一個重要問題。有兩種基本分配方式:第一種叫全域分配,這是一種集中控制方式,由一個公認的中央機構根據使用者需要進行統一分配,並將結果公佈於眾。第二種是本地分配,又稱動態串連,即進程需要訪問傳輸層服務時,向本地作業系統提出申請,作業系統返回一個本地唯一的連接埠號碼,進程再通過合適的系統調用將自己與該連接埠號碼聯絡起來(綁紮)。TCP/IP連接埠號碼的分配中綜合了上述兩種方式。

知名連接埠即眾所周知的連接埠號碼,範圍從0到1023,這些連接埠號碼一般固定分配給一些服務。比如20/21連接埠分配給FTP(檔案傳輸通訊協定)服務,23連接埠分配給Telnet(遠程登入),25連接埠分配給SMTP(簡易郵件傳輸通訊協定)服務,80連接埠分配給HTTP服務,135連接埠分配給RPC(遠端程序呼叫)服務等等。

網路服務是可以使用其他連接埠號碼的,如果不是預設的連接埠號碼則應該在地址欄上指定連接埠號碼,方法是在地址後面加上冒號“:”(半形),再加上連接埠 號。比如使用“8080”作為WWW服務的連接埠,則需要在地址欄裡輸入“:8080”。

但是有些系統協議使用固定的連接埠號碼,它是不能被改變的,比如139 連接埠專門用於NetBIOS與TCP/IP之間的通訊,不能手動改變。

不過,動態連接埠也常常被病毒木馬程式所利用,如冰河預設串連連接埠是7626、WAY 2.4是8011、Netspy 3.0是7306、YAI病毒是1024等 。

(2)通訊端

通訊端存在於通訊地區中,通訊地區也叫地址族,它是一個抽象的概念,主要用於將通過通訊端通訊的進程的共有特性綜合在一起。通訊端通常只與同一地區的通訊端交換資料(也有可能跨地區通訊,但這隻在執行了某種轉換進程後才能實現)。Windows Sockets只支援一個通訊地區:網際域(AF_INET),這個域被使用網際協議族通訊的進程使用。

分類:

常用的TCP/IP協議的3種通訊端類型如下所示。流通訊端(SOCK_STREAM):流通訊端用於提供連線導向、可靠的Data Transmission Service。該服務將保證資料能夠實現無差錯、無重複發送,並按順序接收(資料在傳送過程中順序可能會發生變化,但是接收端最後是按順序接收的)。流通訊端之所以能夠實現可靠的資料服務,原因在於其使用了傳輸控制通訊協定,即TCP(The Transmission Control Protocol)協議。
資料通訊端(SOCK_DGRAM):資料通訊端提供了一種不需連線的服務。該服務並不能保證資料轉送的可靠性,資料有可能在傳輸過程中丟失或出現資料重複,且無法保證順序地接收到資料。資料通訊端使用UDP(User Datagram Protocol)協議進行資料的傳輸。由於資料通訊端不能保證資料轉送的可靠性,對於有可能出現的資料丟失情況,需要在程式中做相應的處理。
原始通訊端(SOCK_RAW):原始通訊端與標準通訊端(標準通訊端指的是前面介紹的流通訊端和資料通訊端)的區別在於:原始通訊端可以讀寫核心沒有處理的IP資料包,而流通訊端只能讀取TCP協議的資料,資料通訊端只能讀取UDP協議的資料。因此,如果要訪問其他協議發送資料必須使用原始通訊端。
通訊:使用通訊端進行資料處理有兩種基本模式:同步和非同步。同步模式:同步模式的特點是在通過Socket進行串連、接收、發送資料時,客戶機和伺服器在接收到對方響應前會處於阻塞狀態,即一直等到收到對方請求進才繼續執行下面的語句。可見,同步模式只適用於資料處理不太多的場合。當程式執行的任務很多時,長時間的等待可能會讓使用者無法忍受。非同步模式:非同步模式的特點是在通過Socket進行串連、接收、發送操作時,客戶機或伺服器不會處於阻塞方式,而是利用callback機制進行串連、接收、發送處理,這樣就可以在調用發送或接收的方法後直接返回,並繼續執行下面的程式。可見,非同步通訊端特別適用於進行大量資料處理的場合。使用同步通訊端進行編程比較簡單,而非同步通訊端編程則比較複雜。




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.