概念
IP地址是用来确定哪一台服务器(主机)的,而端口号就是用来确定这台主机上的那个进程的(qq、微信等都是一个进程),也就是说,可以通过端口,号确定是QQ,微信,爱奇艺等具体哪一个。比如网上购物后,你写的你们学校为收货地址,快递员通过地址送到了你们学校(而这就相当于通过IP找到了具体的主机),但学校有很多学生,快递员只能通过你的手机号来找到你(端口号就像你的手机号,确定电脑上的哪个具体的应用软件)
端口号范围的划分
0 - 1023: 知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的.
1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的.
认识知名端口号(Well-Know Port Number)
有些服务器是非常常用的, 为了使用方便, 人们约定一些常用的服务器, 都是用以下这些固定的端口号:
ssh服务器, 使用22端口
ftp服务器, 使用21端口
telnet服务器, 使用23端口http服务器, 使用80端口
https服务器, 使用443
我们自己写一个程序使用端口号时, 要避开这些知名端口号
一个进程是否可以bind多个端口号?
可以
因为一个进程可以打开多个文件描述符,而每个文件描述符都对应一个端口号,所以一个进程可以绑定多个端口号
就比如你可以在电脑上登两个QQ一样
一个端口号是否可以被多个进程bind?
不可以
注如果进程先绑定一个端口号,然后在fork一个子进程,这样的话就可以是实现多个进程绑定一个端口号,但是两个不同的进程绑定同一个端口号是不可以的