首页 > 代码库 > 程(搬)序(砖)员(的)
程(搬)序(砖)员(的)
首先每个人心里都有一个 TCP Server ,监听到某个端口上,等待陌生人或者熟人或者半生不熟的人来访问。
其次呢,不同的人对自己的端口是否开放持不同的态度,OPEN的人就会监听到知名端口,比如80、21、7、13、22、23等等,这样别人就知道我们找这个 OPEN 的家伙说事儿该连接哪个端口。当然,只开放端口还不够,灵慧的人还会慢慢把自己的协议 SHOW 给别人,这样想找他聊天的人就可以遵循这个协议来说,事情就容易多了,双方就都能理解。
还有一些人呢,比较内敛,虽然内心很饥渴,希望别人找自己聊聊天谈谈心,可是不知道怎么把自己的端口开放给别人,或者出于某种原因隐藏了端口。比如他本来是监听到 21 端口上,走 FTP 协议,因为被别人通过端口扫描的方式黑了两次受了点不大不小的伤害,就小心地封掉了 21 端口,把自己的服务挪到了其它端口上,并且也不告诉别人。这就出问题了,别人找不到端口号,怎么和你沟通咧……
还有一些人呢,自己也不知道该监听到哪个端口上,不能有意识的训练自己,今天是 21 ,明天就 80 ,后天又走 37 了,结果不但自己混乱,跟他打交道的兄弟姐妹们也混乱:昨天这么说还挺融洽,今天再这么说他居然翻脸了呢!
这是我们每个人内心的 TCP Server 。其实每个人还有一个 UDP Server ,是为那些夹生的人或者拥有特别标签的人准备的。你可以知道我的 UDP 端口,但是你发消息过来我就不一定搭理你,被拆穿了我还可以说 UDP 协议不可靠,我没收到……。这两个 Server 就是我们每个人身上基本的沟通模型。
最后呢,如果你要想向别人说明你的意图并让别人按你的意图去做某件事,那就要花费精力去研究如何找到对方监听的端口、使用的协议。和 OPEN 的人沟通比较容易,访问 80 端口,走 HTTP 就行了,或者夜半三更翻墙过去幽会也能成。而针对那些隐藏了端口和协议的,就要启用端口扫描这种神器,扫到端口,再抓包分析协议,成功的可能性总是有的,只不过费些力气罢了。
用这种模型来解释现实生活中的沟通问题,程序员们就可以释然了:啊哈,原来我给他说的事儿他老不反应,是搞错了端口或者走错了协议。
Reboot 小哥给大家总结了常见面试中,服务器端口的一些总结:
20 ftp-data FTP 数据端口
21 ftp 文件传输协议(FTP)端口;有时被文件服务协议(FSP)使用
22 ssh 安全 Shell(SSH)服务
23 telnet Telnet 服务
25 smtp 简单邮件传输协议(SMTP
53 domain 域名服务(如 BIND)
80 http 用于万维网(WWW)服务的超文本传输协议(HTTP)
109 pop2 邮局协议版本2
110 pop3 邮局协议版本3
115 sftp 安全文件传输协议(SFTP)服务
123 ntp 网络时间协议(NTP)
143 imap 互联网消息存取协议(IMAP)
161 snmp 简单网络管理协议(SNMP)
443 https 安全超文本传输协议(HTTP)
546 dhcpv6-client 动态主机配置协议(DHCP)版本6客户
547 dhcpv6-server 动态主机配置协议(DHCP)版本6服务
636 ldaps 通过安全套接字层的轻型目录访问协议(LDAPS)
873 rsync rsync 文件传输服务
992 telnets 通过安全套接字层的 Telnet(TelnetS)
993 imaps 通过安全套接字层的互联网消息存取协议(IMAPS)
994 ircs 通过安全套接字层的互联网中继聊天(IRCS)
995 pop3s 通过安全套接字层的邮局协议版本3(POPS3)
3306 mysql MySQL 数据库服务
本文出自 “Python & Golang 学习” 博客,转载请与作者联系!
程(搬)序(砖)员(的)