关于Python网络编程中端口号为什么不会重复问题释义

总所周知,TCP协议端口号只有65536个,其中0 ~ 1023是知名端口,1024 ~ 65535是动态端口。网上应用软件有那么多,那为什么这些端口号都不会重复呢?

1、TCP服务端端口一般程序员开发应用程序时就是设置了的,根据程序功能设置相应的协议端口(如果开发应用时没有设置的话,操作系统会自动在动态端口号这个范围内随机生成一个给开发的应用程序使用,这样TCP客户端访问TCP服务端的时候就会因为无法确认TCP服务端端口号而出现访问不了的问题)

2、TCP客户端端口号是程序访问TCP服务端请求连接时,从用户电脑里面正在运行的程序中随机匹配一个还没有用到的动态端口号,如此就不会存在打开程序和已经在电脑上运行的程序端口号之间出现重复的问题了。

注:如果以上描述还是有些看不懂的话请看下图,下图是同一台TCP客户端在一段时间内相继几次访问同一台TCP服务端时留下的痕迹截图。总之一句号,服务端端口号和客户端端口号是不一致的,程序员在开发应用程序时,服务端一般都会绑定端口号,但是客户端是没有绑定的。客户端端口号是在客户端向服务端发送请求连接时,操作系统从用户电脑里面正在运行的程序中选择没有用到的端口号里面随机匹配的,随机分配的端口号会同客户端发送请求连接的数据包一起发送给服务端,服务端再通过客户端给的ip地址及动态端口号找到相对应的客户端,并给与响应。

端口号重复问题图解.png

你可能感兴趣的:(关于Python网络编程中端口号为什么不会重复问题释义)