多埠 監聽 處理

2021-06-18 13:38:15 字數 2759 閱讀 1812

1、

2、

01、tcp是面向連線的協議,就象打**;而udp是無連線的協議,就象郵寄信件。 

tcp是可靠的,它需要確認,而udp是不可靠的,因為它不需要確認。所以一般情況下重要資料的傳輸都用tcp,不太重要的,丟失後不會造成太大影響的資料都用udp來傳輸。

與tcp相比,udp幀的長度要小的多。

02、

tcp/ip是網路協議 udp也是協議之一 監聽埠80是系統自己監聽用的 可以選擇開啟或者不開啟
03、

tcp,udp都是傳速協議,而udp傳速安全性不高。監聽埠是系統的埠。
3、

4、啟動程式,該程式建立乙個包含四個執行緒的執行緒池提供 tcp 服務,在 80 埠上進行監聽,在客戶端使用 telnet 來進行測試,首先啟動四個客戶端,並且輸入乙個字母,讓伺服器的四個執行緒都進行繁忙狀態,然後在啟動乙個客戶端,依然能夠進行連線,想起 tcp 監聽埠在有連線請求過來時是有乙個佇列進行緩衝的,該值預設是 5,所以在啟動五個客戶端,這樣4個在繁忙,五個進入了緩衝佇列,最後乙個應該連線不上了吧?結果發現啟動了幾十個客戶端全部都連上了,此時伺服器的執行緒池都在「繁忙」中,主線程在等待執行緒池結束,那麼是誰接受了客戶端的連線?鬱悶不解中.......

檢視 ace 的源**,發現在建立 tcp 埠監聽時,對緩衝佇列的大小設定是通過巨集 ace_default_backlog 來指定的,該巨集在 windows 上使用系統定義的 somaxconn ,(在其他系統上使用預設值 5) , 而 somaxconn 的定義是 0x7fffffff , (當然實際上不可能有這麼多的連線到達,即使有緩衝佇列也不可能容納的下,因為幾乎不可能有那麼大的記憶體來做緩衝)查閱 msdn 說使用該值,系統將盡可能的緩衝所有的客戶端連線請求,就是說在 windows 上,只要伺服器系統能力允許,幾十伺服器上的程式繁忙,客戶端的連線請求幾乎都能夠被系統快取下來,客戶端不會發生連線失敗的情況;

最後在 tcp/ip 詳解一書中的 194 頁找到了相關的描述,在建立 tcp 的埠監聽時可以指定乙個連線的緩衝佇列,該佇列的長度上限在 unix 和早期的 windows 上預設實現都是 5 個,在新版本的 windows 中該佇列的上限系統不再做限制;

當客戶端發起連線時,首先是 tcp 接受了該連線,然後應用程式接受該連線,如果應用程式忙沒有即時接受連線(即將該連線從 tcp 接受的連線佇列中移走)那麼只有在佇列滿後 tcp 將不再接受客戶端的連線,所以此時伺服器程式即使處於繁忙中,客戶端的連線因為 tcp 接受了,雖然伺服器程式沒有接受該連線,但是客戶端的表現是連線已經建立,但是傳送任何內容給伺服器都沒有反映(因為伺服器程式沒有接受該連線);

5、一、常用埠及其分類

電腦在internet上相互通訊需要使用tcp/ip協議,根據tcp/ip協議規定,電腦有256×256(65536)個埠,這些埠可分為tcp埠和udp埠兩種。如果按照埠號劃分,它們又可以分為以下兩大類:

1.系統保留埠(從0到1023)

這些埠不允許你使用,它們都有確切的定義,對應著網際網路上常見的一些服務,每乙個開啟的此類埠,都代表乙個系統服務,例如80埠就代表web服務。21對應著ftp,25對應著smtp、110對應著pop3等。

2.動態埠(從1024到65535)

當你需要與別人通訊時,windows會從1024起,在本機上分配乙個動態埠,如果1024埠未關閉,再需要埠時就會分配1025埠供你使用,依此類推。

但是有個別的系統服務會繫結在1024到49151的埠上,例如3389埠(遠端終端服務)。從49152到65535這一段埠,通常沒有**系統服務,允許windows動態分配給你使用。

二、如何檢視本機開放了哪些埠

在預設狀態下,windows會開啟很多「服務埠」,如果你想檢視本機開啟了哪些埠、有哪些電腦正在與本機連線,可以使用以下兩種方法。

1.利用netstat命令

windows提供了netstat命令,能夠顯示當前的 tcp/ip 網路連線情況,注意:只有安裝了tcp/ip協議,才能使用netstat命令。

操作方法:單擊「開始→程式→附件→命令提示符」,進入dos視窗,輸入命令 netstat -na 回車,於是就會顯示本機連線情況及開啟的埠。其中local address代表本機ip位址和開啟的埠號,foreign address是遠端計算機ip位址和埠號,state表明當前tcp的連線狀態,listening是監聽狀態,表明本機正在開啟135埠監聽,等待遠端電腦的連線。

如果你在dos視窗中輸入了netstat -nab命令,還將顯示每個連線都是由哪些程式建立的。本機在135埠監聽,就是由svchost.exe程式建立的,該程式一共呼叫了5個元件 (ws2_32.dll、rpcrt4.dll、rpcss.dll、svchost.exe、advapi32.dll)來完成建立工作。如果你發現本機開啟了可疑的埠,就可以用該命令察看它呼叫了哪些元件,然後再檢查各元件的建立時間和修改時間,如果發現異常,就可能是中了木馬。

2.使用埠監視類軟體

與netstat命令類似,埠監視類軟體也能檢視本機開啟了哪些埠,這類軟體非常多,著名的有tcpview、port reporter、綠鷹pc萬能精靈、網路埠檢視器等,推薦你上網時啟動tcpview,密切監視本機埠連線情況,這樣就能嚴防非法連線,確保自己的網路安全,詳見本刊2023年2月88頁《讓埠開放盡收眼底》一文。

眾所周知,計算機之間通訊是通過埠進行的,例如你訪問乙個**時,windows就會在本機開乙個埠(例如1025埠),然後去連線遠方**伺服器的乙個埠,別人訪問你時也是如此。預設狀態下,windows會在你的電腦上開啟許多服務埠,黑客常常利用這些埠來實施入侵,因此掌握埠方面的知識,是安全上網必備的技能。

6、

apache開啟多埠

網上資源很多,同時也很雜,很多時候並不完全符合我們的要求,浪費時間。應該有兩種方式 1.直接修改httpd.conf 2.開啟虛擬埠 修改httpd vhosts.conf檔案內容 我這裡採用第二種 比較簡單分三步 1.在httpd.conf中新增新的監聽埠 listen 8887 2.virtua...

Apache多埠配置

virtual hosts include conf extratpd vhosts.conf開啟 virtual hosts include conf extratpd vhosts.conf開啟extratpd vhosts.conf 新增 配置 serveradmin webmaster du...

wampserver 多埠配置

apache 的配置檔案httpd.conf 檔案裡 開啟 include conf extra httpd vhosts.conf 然後開啟 include conf extra httpd vhosts.conf檔案 配置如下 以81埠為例 listen 81 documentroot e jy...