哪些服務接受 tcp 連接?
我最近一直在學習套接字程式,並且剛剛開始學習 tcp/ip 套接字。我的學習資料提供了一個連接到 localhost
daytime
服務的範例,通過執行telnet 127.0.0.1 13
預期結果應該打開一個 telnet 會話。daytime 13/tcp
我的文件中有一個“”條目/etc/services
,並且xinetd
服務正在執行,但是當我嘗試 telnet 命令時,我立即得到“連接被拒絕”。問:為什麼遠端登錄到白天服務不起作用?
問:還有其他可以接受 telnet 連接的 localhost 服務嗎?我嘗試遠端登錄到具有
tcp
條目的隨機選擇的服務/etc/services
,但它們都給出了相同的“連接被拒絕”錯誤。我的短期目標只是將我的學習資料成功的 telnet 連接複製到 localhost tcp 服務——如果不是
inetd
,那麼其他任何東西;我只想通過實踐來學習。>telnet 127.0.0.1 13 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused >telnet 127.0.0.1 49000 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused >telnet 127.0.0.1 9009 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused >uname -a Linux linuxbox 3.11.10-301.fc20.x86_64 #1 SMP Thu Dec 5 14:01:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
/etc/services
不指示實際執行的服務。請參閱/etc/services 的用途。您將需要找到正在執行(或啟動)的服務。您可以通過查看來了解正在收聽的內容netstat -nlt
。特定服務會有所不同,但您會看到如下內容:$ netstat -nlt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp6 0 0 :::3306 :::* LISTEN tcp6 0 0 :::111 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN
所以:
daytime
服務可能沒有執行。如果它沒有出現在列表中(你可以從上面的列表中看到我沒有執行它),那麼埠上沒有監聽。如果已安裝,則可能可以啟動該服務。- 根據安裝和活動的內容,還有許多其他潛在服務。在上面的清單中,埠
25
正在偵聽,即郵件服務。所以我可以通過telnet
25埠連接。由於預設沒有安裝telnet,我使用nc
連接,但原理是一樣的:
$ nc 127.0.0.1 25 220 centos7.feedthecoder.com ESMTP Postfix HELO me.theworld.com ...
編輯:正如評論中提到的,這當然可能是防火牆問題。一般來說,安裝不會阻塞
127.0.0.1
,但它總是有可能的。此外,根據您的發行版,
daytime
可能未安裝,這將是一個進一步的障礙。如果已安裝,您應該能夠通過正常的服務啟動(例如service start daytime
,或發行版等效項)來啟動它。編輯:事實證明,它
daytime
僅xinetd
作為內部服務提供。因此,雖然上面有關列出服務的資訊是正確的,但要daytime
確保xinetd
已安裝,並且文件/etc/xinetd/daytime-stream
已disabled
設置為no
.