telnet服务安装
sudo apt-get install xinetd telnetd
sudo /etc/init.d/xinetd status
sudo /etc/init.d/xinetd restart
如果出现 telnet: Unable to connect to remote host: Connection refused
,则在 /etc/inetd.conf
增加一句
xxx
#: STANDARD: These are standard services.
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
xxx
系统至少得安装有 telnet
以及 telnetd
netstat -a | grep telnet
netstat -pant | grep 23
,能看到 23号端口被使用了。
提一下 inetd1
典型的unix系统可能存在许多服务器,它们只是等待客户请求的到达,如 FTP、Telnet、Rlogin、TFTP 等。最开始,所有的这些服务都与一个进程相关联,这些进程在系统启动时开始运行,而且执行几乎相同的启动任务:创建一个套接口,把本服务的众所周知的端口捆绑到该套接口,等待一个连接(TCP)或是一个数据报(UDP),然后派生子进程。子进程为客户提供服务,父进程则等待下一个客户请求。这个模型存在两个问题:
- 所有这些守护进程含有几乎相同的启动代码(套接口的创建以及成为守护进程)。
- 每个守护进程在进程表中占据一项,并且大部分时间处于睡眠状态
inetd 超级服务器使上述的问题得到简化:
- 通过 inetd 处理普通进程的大部分细节以简化守护程序的编写。
- 单个进程(inetd)就能为多个服务等待外来的客户请求,以此取代每个服务一个进程的做法,减少了系统中的进程数。
在启动阶段,读入/etc/inetd.conf文件并给该文件中指定的每个服务创建一个适当类型的套接口。
为每个套接口调用bind,指定捆绑相应服务器的众所周知端口和通配IP地址。
对于每个TCP套接口,调用 listen 以接受外来的连接请求。对于数据报套接口则不执行本步骤。
创建完毕所有套接口后,调用select等待其中任何一个套接口变为可读。
当select返回指出某个套接口已可读之后,如果该套接口是一个TCP套接口,而且其服务器的wait-flag值为nowait,
那就调用accept接受这个新连接。
inetd守护进程调用fork派生进程,并由子进程处理服务请求。
如果第5步中select返回的是一个字节流套接口,那么父进程必须关闭接受了的已连接套接口,
父进程再次调用select,等待下一个变为可读的套接口。
inetd.conf 是/usr/sbin/inetd的初始化文件,告诉/usr/sbin/inetd所需要监听的 inet 服务及有关信息。
每行有七个单元,对于socket类的服务各单元依次是:
<服务名称> <协议(tcp或udp)> <标志(wait或 nowait)> <属主> <真实服务程序全路径> <真实服务程序名称及参数
ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd
表示 /usr/sbin/inetd
监视 ftp 服务(端口21),为此服务创建的socket为流类型的,遵从 tcp协议,当ftp客户请求到来并且与 /usr/sbin/inetd
监视的ftp服务端口连接成功后, /usr/sbin/inetd
就fork一个子进程,该子进程的主人被置为root,同时继承了一个父进程与客户方连接成功而生成的子socket,然后该子进程将该子socket复制(dup2调用) 为文件号0,1, 2(标准输入输出标准出错)并且发 execl("/usr/sbin/in.ftpd", "in.ftpd")
使 in.ftpd 接管标准输入输出的处理,也就是接管父进程连接成功生成的子socket, 父进程不会等待子进程的退出(exit)状态,即 nowait。
网络常用命令
- ifconfig:查看网卡状态、启停网卡等
- ethtool:查看网卡链路、驱动等。http://man.linuxde.net/ethtool
- netstat:统计网络信息
- route:展示路由信息,设置路由表等
各个配置文件
网卡IP,网关等: /etc/network/interface
DNS: /etc/resolv.conf
协议类型: /etc/protocols
协议端口号: /etc/services
https://blog.csdn.net/u012103747/article/details/45338571 ↩︎