关于端口

端口,是服务端编程时一定会遇到的概念。对于JAVA程序员来说,由于经常跟tomcat、jboss打交道,所以对8080端口肯定很熟悉。此外,常见的端口号还有80(http)、23(telnet)等

端口通俗来说,就是服务端的一个程序,等待处理客户端发来的请求,所以就“侦听”某个端口,然后通过这个端口进行I/O

还是以tomcat举例,如果tomcat绑定的端口号是默认的8080,那么tomcat启动以后,就会一直侦听8080这个端口。客户端(比如说是浏览器)也往这个端口发消息,比如http://ip:8080/application1/xxx.do

tomcat能够识别的应用层协议是http协议,所以如果客户端发来的请求,是遵守http协议的,那么tomcat就能对这个请求进行处理

同理,如果是http服务器Apache,那Apache就在80端口上等待消息。如果发来的不是http协议,而是别的协议格式,比如ftp、smtp,那么Apache也不能处理

一般来说,服务端应用只能处理一种应用层协议(smtp、ftp、http、pop)

当然这只是一般的情况,并不是绝对的。假设我开发了一个很强大的服务端应用,不仅能处理http,也可以处理ftp。那这种情况下,这个应用就不需要2个端口,只要侦听1个端口就可以了,收到客户端请求以后,自行判断是哪种协议,然后走不同的处理逻辑

如果某一台服务器只做一件事情,比如只负责响应http请求,那么就可以把不需要的端口都关闭。假如规定,所有服务器,一次都只能跑一个服务端应用,那么也就不需要端口了,当然这个情况是不存在的,因为太浪费了

总结:端口的作用是标识一个应用,一般来说,一个应用只处理一种应用层协议

你可能感兴趣的:(端口)