1.端口的作用
在传输层一方面需要确认是使用TCP还是UDP,另一方面是要确定发送方和接收方的端口号。(当然还有差错校验和流量控制的功能)
端口号是什么
IP地址是用来区别网络(互联网)中的不同主机
端口是用来区别计算机中服务(比如QQ服务、HTTP服务、FTP服务……)
常用的服务的端口应该是固定的,当然可以改,但是改了之后,服务段对于客户端就变成隐身的了。所以服务如果是对外提供服务的,给普通用户客户端使用的,这个时候它的端口号就应该是固定的。比如网页服务的端口号是80,一旦你改了,那么用户就无法访问你的服务器,就没办法打开网页(这显然不是我们做服务器想看到了)
TCP协议包头
如图
可以看出首先标出的是源端口(0~15bit),然后时目的端口(16~31bit)
UDP协议包头
如图
明显UDP协议包头包含的信息比TCP包头少,但是和TCP一样的是:可以看出首先标出的是源端口(0~15bit),然后时目的端口(16~31bit)
端口号的分类
端口号长度是16bit,所以有2^16个端口数,即0~2^16-1(也激就是0~65535)
1000以内的端口号是给系统使用的,10000以上的端口号是给开发者使用的
需要注意的是,UDP和TCP的端口是分开的,比如,TCP有端口号10101,那么UDP也有自己的端口号10101。但是在真实的环境中,因为端口号本身的数量也是足够多的,所以,一般并不进行这样的区分,比如FTP是TCP的一个应用协议,它的端口号是20,这个时候往往就不在为UDP分配20的端口,就是为了防止造成混淆
常见的端口号
FTP(文件传输协议):端口号是 20 21
SSH(安全Shell协议):端口号是 22
telnet(远程登陆协议):端口号是 23
但是小心,现在的不管是windows还是linux,都禁止开启23 端口,因为这个协议的传输是明文方式,没有加密,所以只要截获数据包就可以直接的获取信息,所以很不安全,所以目前linux 常用的远程管理方式是 SSH(这更安全)
DNS(域名协议):端口号是 53
http(超文本传输协议):端口号是 80
SMTP(简单邮件传输协议):端口号是 25
POP3(邮局协议3代):端口号是 110
常用的关于端口的命令
netstat -an:查看本机启动的端口号
-a:查看所有连接和监听端口
-n:显示IP地址和端口号,而不显式域名和服务名