我最近一直在学习套接字编程,并且刚刚开始学习 tcp/ip 套接字。我的学习资料daytime
给出了一个通过运行连接到 localhost 服务的示例telnet 127.0.0.1 13
,预期结果是应打开 telnet 会话。daytime 13/tcp
我的文件中有一个“ ”条目/etc/services
,并且xinetd
服务正在运行,但是当我尝试 telnet 命令时,我立即收到“连接被拒绝”。
问:为什么远程登录到白天服务不起作用?
问:是否有其他本地主机服务可以接受 telnet 连接?我尝试远程登录到随机选择的具有tcp
条目的服务/etc/services
,但所有这些服务都给出了相同的“连接被拒绝”错误。
我的短期目标只是复制我的学习材料成功的 telnet 连接到本地主机 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
答案1
并不/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
。