通信最终是要访问进程,那么ip是访问一台机器的地址,端口则是访问进程的标识,比如ip是一个大楼的地址,端口则是具体的门牌号,一个门牌号对应的房屋只能由1个进程占领。
一个进程可以Build多个端口号,一个端口号不能被多个进程绑定,一个进程绑定端口后,fork一个子进程,这个子进程可以访问这个端口。
一些常用端口
22:SHH远程登陆协议
80:http,用于网页浏览,也就是web端口
443:https
3306:mysql
1433:sql server
比如我们将一个war包部署到在服务器中的Tomcat上,tomcat默认使用端口8080,正常情况我们通过,服务器ID:端口/war包名 来访问war包中的内容。 tomca默认服务端口是8080,所以我们通过 www.xxxx.com:8080/war包名来访问。如果不加8080那么就是默认使用80端口,例如输入www.xxxx.com,实际则是www.xxxx.com:80。
我们可以通过nginx转发来实现端口映射,从80端口映射到8080端口,以此达到不输入8080,只输入域名的目的。比如我们输入www.xxxx.com,通过nginx转发,实际则是www.xxxx.com:8080。
Tomcat中的配置文件在 tomcat\conf\service.xml下,service.xml中的一些配置
<Server port="8005" shutdown="SHUTDOWN" debug="0"> Service是一组Connector的集合 它们共用一个Engine来处理所有Connector收到的请求
//在端口8005处等待关闭命令*** 如果接受到"SHUTDOWN"字符串则关闭服务器
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" //该Connector的实现类是CoyoteConnector
port="8080" //在端口号8080处侦听来自的浏览器HTTP请求
minProcessors="5" //该Connector先创建5个线程等待客户请求,每个请求由一个线程负责
maxProcessors="75" //当现有的线程不够服务客户请求时,若线程总数不足75个,则创建新线程来处理请求,到75个为客户请求排队
acceptCount="100" //当队列中请求数超过100时,后来的请求返回Connection refused错误
enableLookups="true"
redirectPort="8443" //当客户请求是https时,把该请求转发到端口8443去
debug="0"
connectionTimeout="20000"
useURIValidationHack="false"
disableUploadTimeout="true" />
<Engine name="Standalone" defaultHost="localhost" debug="0"> Engine用来处理Connector收到的Http请求,它将匹配请求和自己的虚拟主机,并把请求转交给对应的Host来处理 默认虚拟主机是localhost
<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true"> 一个Host即为一个虚拟主机,name设置虚拟主机的域名,appBase设置 Web 应用程序组的路径,war包下载到这个目录