1. 端口概述
在网络通信中,每个服务都会占用一个或多个端口,通过端口实现网络通信。一个端口由一个数字,介于0到65535之间的组成,其中0到1023的端口被系统保留,一般用于系统服务或者常用应用程序的通信。65535个端口中大多数应用不会使用这么多,常用的TCP端口大都在1024到49151之间。了解端口都会占用哪些服务,可以更好地保障网络安全。
1.1 熟知端口和注册端口
TCP/UDP端口分为熟知端口、注册端口、动态端口三种。
熟知端口的编号一般在0~1023之间。它们被预留给像FTP、HTTP、SMTP等众所周知的网络服务使用。
注册端口的端口编号在1024~49151之间。它们是由一些网络软件如MYSQL等自己定义和使用的。
动态端口的端口编号是49152~65535.在启用TCP/IP协议的计算机上,应用程序可以通过将自己绑定到系统分配的一个IP地址,然后由系统随机提供一个TCP/UDP端口号使用。在这种方式下,端口号便是动态分配的。
1.2 数据库端口
协议也是基于TCP/IP的,它默认使用1433端口,但可以使用其他端口。然而,使用不同的端口并不会使数据库更 secure/安全。
--SQL Server 连接字符串格式
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
2. 端口类型
2.1 TCP端口和UDP端口
TCP(Socket Type为SOCK_STREAM):可靠的、按顺序传递的、面向连接的、基于字节流的传输。
UDP(Socket Type为SOCK_DGRAM):不可靠的,非面向连接的,支持广播和多播方式,基于数据报的传输。
2.2 临时端口和永久端口
永久端口,一般是指被指定给某一个特定的应用程序使用的端口,使用这些端口的应用程序并不会因为端口被占用而改变自己的端口号。
临时端口则是指明确分配来供临时使用的端口,如客户端连接服务器时,服务器分配给客户端的端口就是随机的临时端口。一般来说,临时端口只在数据传输过程中使用。当数据传输完毕,端口就被回收。临时端口范围是从1024到65535(不同 UNIX 系统使用的值略有不同)。创建高质量的应用程序时应该避免使用这些端口。为了确保应用程序可以正确地工作,应为每个服务指定一个枚举的永久端口(如 1433 用于SQL Server),并使其可以在配置文件中设置。
3. 操作及问题解决
3.1 查看端口占用情况
在Windows上使用命令netstat,可以查看当前系统的端口使用情况:
netstat -ano | findstr "1433"
在macOS或Linux系统下,可使用命令lsof来列出端口占用情况:
lsof -nPi:1433
3.2 改变SQL Server端口
对于不想使用默认端口的用户来说,改变SQL Server端口很简单,只需要在SQL Server Configuration Manager中,配置SQL Server Network Configuration –> Protocols for MSSQLSERVER –>TCP/IP –> IPAll,将TCP Dynamic Ports设置为一个固定的端口,比如15000。将TCP Port设置为15000后,SQL Server将使用该端口。
3.3 防火墙设置
如果用户使用防火墙,需要确保在防火墙中开放MS SQL Server的端口。
firewall-cmd --zone=public --add-port=1433/tcp --permanent #开放TCP 1433端口
systemctl restart firewalld.service #重启防火墙服务
4. 总结
端口是计算机网络通信的基础,对于使用MS SQL Server的用户而言,了解端口的使用也是非常必要的。查询端口占用情况、改变端口号、设置防火墙都是与端口相关的操作,因此理解MS SQL Server 2008之端口深度探索对于提高系统可靠性和安全性非常有帮助。