比如:
http://www.baidu.com
http://127.0.0.1
假设它们所指向的服务器都有web服务端,那么它们的默认端口就是80,如果web服务器端口被改变,如88,则
http://127.0.0.1:88
才能访问到web.
你认为的80号端口并不是你的浏览器的端口,而是浏览器连接到的web服务器,服务器的端口。
关于更详细的端口信息,你可以使用工具或者cmd命令行查看
netstat -n
上面这条指令可以查看当前的程序所打开的端口和远程端口。
各个程序肯定都有自已的端口,如果全是80,如你所说,进来的数据也不知道给哪个程序了。
在同一台计算机上,两个不同的应用程序可以用同一个端口,但是不是所有都可以,像80端口一搬是QQ的,还有其它端口也可以打开QQ,所以说一个端口可以运行许多不同的程序!但程序本身也自带端口运行本身的!不能,相同的端口被占用的话,就会冲突,导致其他应用就不能使用。
对于UDP,假设主机a向主机b发送数据,b在网络层收到数据报后,去掉头部,上交给运输层,运输层再根据报文段头部信息(包含端口号信息等),再去除头部后将得到的数据。
交给相应套接字,应用程序经该套接字得到数据。如果UDP套接字共用了端口号,在应用层将数据交给套接字时,将无法确定交给哪个,因为UDP套接字只包含了两个信息。
对于TCP,首先要经过握手阶段建立连接,在目的主机端服务器产生新的套接字,包含了上述四个信息。
总结如下:
如果创建多个连接,会产生多个套接字,这些套接字实际上是共用了相同的目的端口号,但此时运输层仍能将数据交到相应的套接字,因为运输层可以知道数据的源ip,源端口号,目的ip和目的端口号。
然后就能将数据交到与这些信息相匹配的套接字,此时是可以唯一确定一个套接字的,所以数据最终能到达目的应用进程。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)