端口是对于基于TCP的网络进程通信来说的。
如果你是本机,也可以走loopback的TCP,这样也是需要端口的。类似于你用浏览器访问localhost
如果你只想在本机进程间通信有许多种选择,TCP只是一种(对于性能不那么及时和重要的,这比较好),你还可以用比如Shared memory类似的方式来做到进程间通信。
@会长: 长见识!谢谢~
是的,端口是多台电脑通信时标志进程的。同一台机器上进程间通信用不着端口这个概念。
网络中的主机间通信,才需要端口,比如,一台计算机既是web服务器,有事ftp服务器,当网络中的数据被发送到这台电脑上时,这台电脑会查看数据中标示端口号的标示,如果是80,那就将数据转发给web服务进程;如果是21就转发给ftp进程。详情见套接字编程相关
如果没有端口这概念,网络中传递数据就需要知道目的机器中具体的进程,这样一是不安全,二是不方便,因为进程ID可能会变,而像端口就不太会变,用不变的端口对应可变的进程,进程对外不可见,端口对外可见。
@会长: 解释的非常清晰,谢谢了
一般情况下你感觉不到端口的作用,那是因为软件的多端口是默认的。当你开发web程序时,你就会发现多口还是很重要的。特别是tomcat的端口和oracle的端口若不改有可能争用一个端口而报错
有实践才会有更深的感触啊,谢谢你了