我正在研究套接字编程,并且出现了一些问题。 这些是一些初学者的疑虑
对于特定的应用程序使用众所周知的端口是强制性的吗? 例如,如果我使用SSL,我可以devise一个服务器来听1000而不是443。
对于http,我们从其他任意端口连接到端口80。 没有任何港口80港口80通信。
服务器如何响应来自不同端口到其端口80的连接。
有多less连接是可能的一个particul
1 – 这只是关于“标准”。 默认情况下,如果您指定https,则浏览器将到达端口443;如果http为例,则浏览器将到达端口80。 你可以做任何你想要的特定用途,但是你将需要像这样指定你的自定义端口:some.place.to.go:1000你可以使用“保留和众所周知的”端口(0-1023)相应的服务,但如果你需要/想要使用另一个,这取决于你…记得你有超过65K的:)
因为端口<1024是保留的,不能用来发起连接
3-我们正在谈论TCP连接…在特定的机器上,与机器的IP地址相连的端口号称为套接字。 客户端和服务器上的IP和端口的组合称为四元组。 这四个元组唯一标识一个连接。 因此,服务器可以与许多客户端交谈,因为每个客户端都与服务器build立了独特的连接以便与之通信。
例如:客户端(cli)从客户端端口(5432)连接到服务器(srv)到服务器端口(80)cli:5432 – > srv:80
服务器将响应客户端在同一个客户端端口上:srv:80 – > cli:5432等等…
所以对于这个问题: – 想象一下客户端有一个HTTP服务器在运行,“本地”端口80已经被使用了。 – 想象一下路由器后面有几个客户端(只有一个IP …),那么许多客户端如何使用相同的始发端口?
如果连接是从端口80而不是从任意端口进行的,则这两种情况都不起作用。 这就是为什么我们需要使用任意端口来发起请求!
4-从一个IP到全世界,最大65535(因为你只能绑定65k的sockets……因为你只有65k的端口)
如果你想进一步了解这一点,我鼓励你阅读这些东西:
http://en.wikipedia.org/wiki/Internet_protocol_suite (和相关文章…)