2011-09-19 152 views
8

不「聽」的端口指的是連續輪詢到該端口或分立輪詢或中斷驅動的過程。 究竟是怎麼回事的「傾聽之埠」?究竟是什麼端口監聽

+0

這是從programmers.stackexchange [如何-A-端口監聽-拉或推] 描述了深。 [1]:http://programmers.stackexchange.com/q/107545/36957 – Dinushan

+0

答案描述了非常低的水平的機制,* TCP/UDP *,*端口*和*,甚至聽*的概念之下,任何網絡數據接收都是如此。 – Kevin

回答

7

一個端口無非一個概念多,它不喜歡,如果你可以檢查一些存儲位,等待着一些信息。

所以,到一個端口將教內核在接收到的數據包與這個特定端口號怎麼做的:不是回覆其傳送到過程,要求聽該端口,[與否]該端口未打開。

注意:這只是猜測,我沒有調查任何內核執行。

編輯:在流程方面,

  • listen會告訴你感興趣的特定相約端口
  • 內核(我不知道之間發生了什麼listenaccept,無論是內核緩衝區的新的連接或拒絕他們,直到accept被調用,請參考相關手冊)
  • accept將結合一個通信端口的連接,並開始緩衝傳入分組
  • recv(或pollselect肯定)將從接收緩衝器
+0

這意味着內核將在收到此數據包時中斷(通知)進程。 – Dinushan

5

內核從傳入提取目的地端口拾取數據IP數據包,然後將數據包轉發給所有爲此特定端口註冊的接收方(是的,可能有多個)。一個用戶進程通常使用選擇(2)或輪詢(2)等待一個事件,但此投票不同於傳統輪詢等不同的「讀取I/O端口;延遲500毫秒」。