1.端口号的定义
数据链路层的地址是MAC地址,用来识别同一链路中不同的计算机
网络层(IP)的地址是IP地址,用来识别TCP/IP网络中互连的主机和路由器
传输层中类似于地址的概念就是端口号
端口号用来识别同一台计算机中进行通信的不同应用程序
端口号也被成为程序地址
2.根据端口号识别应用
一台计算机上可以同时运行很多个程序
比如接收WWW服务的Web浏览器、电子邮件客户端、远程登录用的ssh客户端等等这些程序都可以同时运行
传输层的协议刚好是利用这些端口号识别主机中正在进行通信的应用程序,才可以达到准确的数据传输
3.通过IP地址、端口号、协议号进行通信识别
TCP/IP或者UDP/IP使用五个信息来识别一个通信:
源IP地址+目标IP地址+协议号+源端口号+目标端口号
五项当中若有一项不同,就可以认为是不同的通信
IP首部包括:源IP地址+目标IP地址+TCP(6)
TCP首部包括:源端口号+目标端口号
4.端口号如何确定?
实际当中进行通信之前要先确定端口号
- (1)标准既定的端口号,也叫做静态方法
每个应用程序都有指定的端口号,不是随意的使用任何一个端口号
每个端口号都有对应的使用目的,当然一个端口的作用可以不止是一个
HTTP、TELNET、FTP等应用协议中所使用的端口号就是固定的
这些端口号也可以叫做知名端口号,一般由0~1023的数字分配的
其他端口号也被正式注册了,1024~49151之间的,这些端口号可以被用于任何通信用途 - (2)时序分配法,动态分配法
服务端有必要确定监听端口号,但是客户端没有必要确定端口号
客户端应用程序可以完全不设置自己的端口号,交给操作系统进行分配
在之前的端口号基础上加上1,操作系统就可以动态的管理端口号了
动态分配端口号即使同一个客户端发起多个TCP连接,识别通信的5部分数据也不全部相同,不会冲突
动态分配端口号在49152~65535之间
5.端口号与协议
一个服务的端口号由其使用的传输层的协议决定
不同的传输层协议可以使用相同的端口号,比如TCP和UDP,但是使用的目的不一样
端口号上面进行的处理也是根据每个传输协议的不同而进行的
数据到达网络等之后(IP层),会先检查IP首部中的协议号,再传给相应协议的模块去处理
再由TCP或者UDP去进行端口处理
HTTP通信必须使用TCP,因为UDP的80端口并没有开启
53端口在TCP和UDP中都用于DNS服务,80端口在TCP和UDP中都用于HTTP服务
- (1)TCP具有代表性的知名端口号如下:
端口号 | 服务名 |
---|---|
20 | ftp-data |
21 | ftp |
22 | ssh |
23 | telnet |
25 | smtp |
53 | dns |
80 | http(www,www-http) |
123 | ntp |
443 | https |
ftps-data | 989 |
990 | ftps |
- (2)UDP具有代表性的知名端口号
端口号 | 服务名 |
---|---|
7 | echo |
11 | sysstat |
53 | DNS |
69 | tftp |
123 | ntp |
161 | snmp |