在使用ftp软件,以及设置路由器时,经常会遇到“端口”,那么这个端口该如何理解呢?
下面跟随小编一起看看吧。
先上一张示意图:
我们把电脑中的各种应用软件、驱动程序等,理解成“软件边界”包围的一个“东西”。
“网口”就是网络数据流进出电脑的口子。
“端口”就像一个个插座,通过“协议”这些数据“管道”和网口连接。
“应用程序”需要使用网络传送数据时,“插”在端口上即可。
为了识别众多的端口,我们给他们编上号:0、1、2、3......65535。
所以网络端口在表现上就是一个数字。
为什么要这样呢?那让我们再想想一下下面的情况:
电脑上打开了QQ、ftp、邮件客户端、浏览器等网络应用程序,当系统底层的网络协议收到一系列数据包之后,应该传递给哪个应用程序呢?是不是蒙圈啦。
所以网络工作者们发明了端口这个东西,以ftp文件传输端口为例:
假设我们使用filezilla这个ftp软件从服务器下载文件,filezilla就“插”在21这个端口上,当协议收到的数据包标明是21号的,就通过21号管道“排”出,filezilla自然就接到想要的数据啦。
当然,实际情况比这个复杂多了,ftp还涉及20号端口,请小伙伴们自行搜索。
那么,应用软件是怎么“插”在端口上呢?程序员们编程的时候可能就像下面的语句样:
socket.Bind(21);
这里只是举个例子,不同的库函数提供的形式都会不一样,但万变不离“端口”。
从0到65535,部分端口是约定好的,比如http的80,DNS 53,SMTP 25,telnet 23等。
其他的比如windows系统的远程桌面 3389,mysql数据库 3306等都是软件开发者自行定义的。这个“约定”需要动态的理解,就是说,某个软件(确切的说应该是协议)产生的时候,使用了某个端口,逐渐的,这个软件变得非常流行,众人皆知,那么他用的端口也就被“约定”了。
说了这么多,不会有人把上面所说的端口理解成设备上的“端口”了吧?
最后提一个,windows系统局域网资源共享时涉及到的端口,在配置防火墙时经常碰到,小伙伴们可以搜索下:135,136,137,138,139,445。