为什么传出套接字需要端口号?

时间:2015-12-03 00:19:57

标签: sockets language-agnostic

我理解为什么服务器需要套接字来传入数据,但我不明白为什么连接到另一台计算机的套接字需要源端口。

4 个答案:

答案 0 :(得分:1)

根据源和目标IP地址和端口号,定义了

否则,例如,您永远无法区分来自同一客户端主机的同一服务器的两个连接。

答案 1 :(得分:0)

查看此链接: http://compnetworking.about.com/od/basiccomputerarchitecture/g/computer-ports.htm

最终,它们允许不同的应用程序和服务共享相同的网络资源。例如,您的浏览器可能使用端口80,但您的电子邮件应用程序可能使用端口25。

答案 2 :(得分:0)

TCP通信是双向的。从服务器发送的段即使是响应来自客户端的段,也是从客户端看到的传入段。如果客户端打开到服务器上同一端口的多个连接(例如,当您一次加载多个StackOverflow页面时),则服务器和客户端都需要能够分开来自不同连接的TCP段;这是通过查看源端口和目标端口的组合来完成的。

答案 3 :(得分:0)

虽然其他人已经提到了确切原因,但让我举一个例子说明这一点:

  1. 假设您想要ssh到您的服务器。好的,你ssh in并做一些事情。然后你尾随一个日志文件。所以现在你再也无法访问控制台了。你觉得没问题,我再次ssh ......

    使用一个端口号,如果再次ssh,第二个连接将是第一个连接的镜像,因为服务器不知道有两个连接(没有源端口号来区分),所以你&#39 ;运气不好。

    使用两个端口号,您可以第二次使用ssh来获得第二个控制台。

  2. 说你浏览一个网站,比如Stackoverflow。你正在阅读一个问题,但你认为你以前见过这个问题。您在浏览器中打开一个新选项卡以进行stackoverflow搜索。

    只有一个端口号,服务器无法知道哪个数据包属于客户端上的哪个套接字,因此无法打开第二个页面(或者更糟糕的是,两个页面都会接收来自彼此的混合数据)。

    使用两个端口号,服务器将看到来自客户端的两个不同连接,并将正确的数据发送到正确的选项卡。

  3. 因此,客户端需要两个端口号来告知来自哪个服务器的数据以及服务器告诉客户端来自哪个套接字的数据。