我在这个主题上进行了广泛的搜索,但我仍然对“端口”究竟是什么感到困惑。
我知道'概念'是什么,我知道有很多不同的端口,有些数字,比如80,是为某些用途保留的,我知道通过在CMD中键入'netstat'命令我可以检查它们是否正在使用中。
但我仍然不明白港口是什么。它在我的电脑上是否“存在”?因为我看到的是我插入的一条以太网连接线,而不是6000个不同的端口可以做不同的事情。
我真的不明白我的互联网浏览器是怎么做的。当我点击“Chrome.exe”时图标,是否“打开”80-数字端口?
如果这看起来像是一个新手问题,我非常抱歉,但提前谢谢你。
答案 0 :(得分:3)
要在任何联网计算机上访问服务,您需要知道3个参数。其中一些是您明确提供的,其中一些是由操作系统隐式推断出来的。这三个参数是IP Address
,Protocol
,Port number
。因此,任何正在运行的服务都可以通过这三个数字的组合来唯一描述。
想象一下,我们没有使用端口号。这意味着在每台计算机上我们只能使用任何协议进行一项服务。因此,Web服务器只能提供HTTP协议,邮件服务器只能提供SMTP服务等等。
端口的使用允许我们在同一台计算机上复用服务。端口号只不过是一个数字,表示应该获取数据包的服务。所以我们可以让HTTP服务器,SMTP服务器和SSH服务器都在同一台计算机上运行,并且都使用相同的协议 - 即TCP。
此外,这些端口与您在计算机上看到的物理端口无关。再次 - 它们只是一个数字,允许区分哪个服务(即程序)应该接收哪个数据包。
例如,当我在我的网络浏览器地址栏中输入www.stackoverflow.com时,我的操作系统会向{IP:104.16.34.249, Proto: TCP, Port: 80}
发送HTTP请求。它是如何知道这些数字的?使用DNS协议从主机名解析IP地址。 Web浏览器正在运行使用TCP的HTTP协议。端口80是HTTP的默认端口。在幕后,每个数据包的目标地址IP都设置为上述值,TCP有效负载的目标端口设置为80.在SO计算机上,将运行一个Web服务器,它正在侦听端口80上收到的数据并回复我的信息包。
答案 1 :(得分:1)
简而言之,端口只是与服务(或服务器软件)相关的逻辑数字(物理上不存在),它们在操作系统(ftp服务器,Web服务器等)上运行。当存在发往特定端口的传入连接(或任何流量)时,操作系统可以将流量转发到适当的服务进行处理。
默认情况下,浏览器使用端口号80来寻址给定站点 http://www.randomsite.com和http://www.randomsite.com:80完全相同。
答案 2 :(得分:0)
端口号是一个16位无符号整数,范围为0到65535。对于TCP,端口号0是保留的,不能使用,而对于UDP,源端口是可选的,0表示没有端口。
进程通过 Internet 套接字关联其输入或输出通道,这是一种文件描述符,与传输协议、IP 地址和端口号相关联。这称为绑定。
进程使用套接字通过网络发送和接收数据。操作系统的网络软件的任务是将所有应用程序端口的传出数据传输到网络上,并通过将数据包的 IP 地址和端口号与套接字匹配来将到达的网络数据包转发给进程。对于 TCP,只有一个进程可以绑定到特定的 IP 地址和端口组合。
常见的应用程序故障,有时称为端口冲突,当多个程序尝试使用相同的协议在相同的 IP 地址上使用相同的端口号时会发生。