一、什么是端口号
如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。
在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据包顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?
一种服务对应一个端口
本地操作系统会给那些有需求的进程分配协议端口(protocol port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。
当目的主机接收到数据包后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,
端口的概念似乎仍然抽象,那么继续跟我来,别走开。
二、端口引入
然这个问题有待解决,端口机制便由此被引入进来。
- 比喻:
在A1-1(IP地址)里面,有很多个窗子(端口),房子的主人,银银,为了偷懒,每次外卖的时候,都不想下楼去拿,所以就告诉外卖人员,我在这个80窗口(80端口,80端口其实是网站的端口),放个绳子,叫外卖人员,把快餐系在上面。并且告诉外面,以后我的外卖就是这个窗口了(端口),以后外面你就系在这里给我就好了。
- 注释:
在互联网上,端口号范围从0到65535,其中有些端口规定了,默认就是这个,虽然是可以修改的。(规定的端口,就像是银银告诉外卖人员,以后快餐就系80这个窗口,但是因为银银不只是在一家外卖店买外卖,也在其他店买,也告诉外卖人员快餐就系80窗口,就导致了一个默认。)
- 防火墙(安全问题)
在普及一下端口安全的问题。
假如银银在家里,开了很多窗口(端口),但是窗口没有上防护网(防火墙),这样就会有安全隐患。试想一下,你家里常年开着窗口(端口),但是有没上防护网(防火墙),这样有小偷(黑客)就可以通过梯子,或者其他方法爬到(入侵)你家里(电脑),如果你家里贵重物品(私人资料)没有上锁(数据保护),那么小偷(黑客)就可以随意的翻看,或者拿走你家里的贵重物品(复制,剪切私人资料),如果是有特殊目的的小偷(黑客),就会把你的贵重物品统统破坏,甚至把你家搞坏了(把你电脑弄坏了,损失掉所有的资料)。
当然,当你家(电脑)被破坏了,是可以重新装修(重装系统),甚至能找回一些其他贵重物品(通过数据恢复,找回资料)。但是毕竟是重新装修过,有可能不会像以前一样(资料不一定全部恢复)。如果小偷更狠,炸了你家(毁掉,低格你的硬盘),那么就算重新装修,家也不是原来的家,找不到以前的痕迹(数据基本很难恢复了)。
- 理解解释
端口其实就是队,操作系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接受方能顺利的回传数据包到这个端口。
由于每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理,所以啰,当你的主机同时开启了 FTP 与 WWW 服务的时候,那么别人送来的资料封包,就会依照 TCP 上面的 port 号码来给 FTP 这个服务或者是 WWW 这个服务来处理,当然就不会搞乱啰!
(注:嘿嘿!有些很少接触到网络的朋友,常常会问说:咦!为什么你的计算机同时有 FTP、WWW、E-Mail 这么多服务,但是人家传资料过来,你的计算机怎么知道如何判断?计算机真的都不会误判吗?!
现在知道为什么了吗?!对啦!就是因为 port 不同嘛!你可以这样想啦!
有一天,你要去银行存钱,那个银行就可以想成是主机,然后,银行当然不可能只有一种业务,里头就有相当多的窗口,那么你一进大门的时候,在门口的服务人员就会问你说:"嗨!你好呀!你要做些什么事?"你跟他说:"我要存钱呀!",服务员接着就会告诉你:喝!那么请前往三号窗口!那边的人员会帮您服务!这个时候你总该不会往其它的窗口跑吧?! 这些窗口就可以想成是port 啰!所以啦!每一种服务都有特定的 port 在监听!您无须担心计算机会误判的问题呦! )
- 总结
总而言之,我们这里所说的端口,不是计算机硬件的I/O端口,而是软件形式上的概念。根据提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。
计算机之间相互通信的时候,分为两种方式:
1、TCP端口
一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;
2、UDP端口
一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。
- 安全风险
那么,如果攻击者使用软件扫描目标计算机,得到目标计算机打开的端口,也就了解了目标计算机提供了那些服务。我们都知道,提供服务就一定有服务软件的漏洞,根据这些,攻击者可以达到对目标计算机的初步了解。如果计算机的端口打开太多,而管理者不知道,那么,有两种情况:一种是提供了服务而管理者没有注意,比如安装IIS的时候,软件就会自动增加很多服务,而管理员可能没有注意到;一种是服务器被攻击者安装木马,通过特殊的端口进行通信。这两种情况都是很危险的,说到底,就是管理员不了解服务器提供的服务,减小了系统安全系数。
三、端口类别
本地操作系统会给那些有需求的进程分配协议端口(protocol port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。
http的端口是可以改的,但一般默认端口为80,比方说要访问一个网站,只需在浏览器中输入域名,相当于http://域名,这时其实默认就是用的80端口,如果有的网站用的是8080端口,那么写法就改为:http://域名:8080,顺便说一下,对于加密的https协议所使用的端口为443
另外端口有上万种,我们只能记住些常用的,搞不清怎么办,推荐大家去 端口问 | 端口查询网 查询,那里只要输入端口号就可以查询,这里最全
说到服务,我们首先要明白“连接”和“无连接”的概念。最简单的例子莫过于打电话和写信。两个人
如果要通电话,得首先建立连接--即拨号,等待应答后才能相互传递信息,最后还要释放连接--即挂电话。
写信就没有那么复杂了,地址姓名填好以后直接往邮筒一扔,收信人就能收到。
因特网上最流行的协议是TCP/IP协议,需要说明的是,TCP/IP协议在网络层是无连接的(数据包只管往
网上发,如何传输和到达以及是否到达由网络设备来管理)。而我们一旦谈“端口”,就已经到了传输层。
协议里面低于1024的端口都有确切的定义,它们对应着因特网上常见的一些服务。这些常见的服务可以划分
为使用TCP端口(面向连接如打电话)和使用UDP端口(无连接如写信)两种。
使用TCP端口常见的有:
ftp:定义了文件传输协议,使用21端口。
常说某某主机开了 ftp服务便是文件传输服务。下载文件,上传主页,都要用到ftp服务。
telnet:你上BBS吗?以前的BBS是纯字符界面的,支持BBS的服务器将
23端口 打开,对外提供服务。其实Telnet的真正意思是远程登陆:用户可以
以自己的身份远程连接到主机上。
smtp:定义了简单邮件传送协议。现在很多邮件服务器都用的是这个协议,
用于发送邮件。服务器开放的是25端口。
http:这可是大家用得最多的协议了--超文本传送协议。上网浏览网页
就需要用到它,那么提供网页资源的主机就得打开其80端口以提供服务。
我们常说“提供www服务”、“Web服务器”就是这个意思。
pop3:和smtp对应,pop3用于接收邮件。通常情况下,pop3协议所用的是
110端口。在263等免费邮箱中,几乎都有pop3收信功能。也就是说,只要你
有相应的使用pop3协议的程序(例如Foxmail或Outlook),不需要从Web方式登陆进邮箱界面,即可以收信。
使用UDP端口常见的有:
DNS:域名解析服务。因特网上的每一台计算机都有一个网络地址与之对应,
这个地址就是我们常说的IP地址,它以纯数字的形式表示。然而这却不便记忆,于是出现了域名。访问主机的
时候只需要知道域名,域名和IP地址之间的变换由DNS服务器来完成。DNS用的是53端口。
snmp:简单网络管理协议,使用161端口,
是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
聊天软件Oicq:Oicq的程序既接受服务,又提供服务,这样两个聊天的
人才是平等的。oicq用的是无连接的协议,其服务器使用8000端口,侦听是否有信息到来;
客户端使用4000端口,向外发送信息。如果上述两个端口正在使用(有很多人同
时和几个好友聊天),就顺序往上加。
所以可以这样说:端口便是计算机与外部通信的途径,没有它,计算机便又聋又哑
原文:https://blog.csdn.net/lcg910978041/article/details/51487378
参考:https://blog.csdn.net/an_tang/article/details/70175615