前言
服务器只有提供服务,我们就可以在上面部署很多服务,比如web服务、Telent服务,SMTP服务等这些服务都有着自己对应的端口,当然端口也是就协议之分的,主要有tcp、udp之分,那么这两个之间有什么区别呢?其实Telent就是tcp协议的服务,一般用来探测端口是否打开,具体详情请阅读下面的正文。
正文
端口的感念
什么是端口,具体起到什么作用呢?
端口在多数情况下是指在tcp/ip协议中的端口,端口的范围是0到65535,比如http协议中的80端口,ftp中的21端口(当然也可自定义,这是默认端口),一般都是ip加端口配合使用
目前为止互联网各个主机之间的数据传送都是通过tcp/ip协议来互通数据,当客户端发起http请求后(包括其他协议的请求)后服务器根据ip进行网络路由选择,那么一个请求就顺利的找到了自己的目标服务器,那么一个服务器上有着很多运行的进程,主机找到了,怎么去找这个进程对应的程序呢?此时端口就开始发挥自己的作用。
从本质是讲端口就是队列,端口是和服务器上的每个进程程序相关联的,如果当http请求到达服务器后,此时服务器会根据报文首部字段的端口将其分配给对应的应用程序进程,从而让其处理这个程序请求,如果处理完成,这个进程会等待下一个的到来,直到处理完成。这里和java的出队和入队基本类似,当端口入队后等待进程的调用,调用完成后再出队列。
如何查看端口并确认端口是否打开?
不管在服务器上还是本地端口都是查询的,一般使用netstat -a -n命令就可以查看tcp和udp协议端口和相关的状态。
一般情况下可以使用telnet ip:port 来检查端口是否开放,很多情况下没必要的端口服务器都是关闭的,比如http的默认端口80,还有sftp和ftp的22和21等端口都可以关闭。
telnet 只能检测tcp协议的端口是否打开,nc –uz 只能检测udp协议的端口
至于在服务器上如何关闭和打开端口可以用相关命令执行操作。
除此之外也可以使用nc -z ip:port来检测tcp协议的端口是否打开。
端口一般都有哪些类型呢?
常用知名型端口:一般我们的http和rpc用的端口都是常用型端口,范围在0到1023之间
比如http的默认80端口,Telnet的默认23端口等都是常用的端口,也就是这些端口都是会固定的分配给某些服务。
动态可以自由利用型端口:这些个端口范围一般是1024到65535,这个端口是在服务请求过程中可以随机分配给某些服务,当用完后可以这些端口就会全部释放。
按照协议划分端口,前面大概提到
端口有两种tcp、udp、IP和ICMP(Internet控制消息协议)等端口。
tcp协议端口是传输协议的端口,在客户端和服务端建立连接后进行可靠性的数据传输。
udp协议端口是数据包的传输端口,一般安全性不强,比如dns服务等都是udp协议的端口传输数据。
一般的主机入侵都是先去扫描主机上面的端口看是否进行开放,如果开放就会对端口对应的进程数据进行入侵,从而达到修改程序的操作。
总结:关于端口相关的知识点还有很多,这里暂时就说到这里,有什么问题可以一起讨论学习
欢迎关注竹韵谈科技公众号,一起来学习