📅  最后修改于: 2020-11-10 04:45:36             🧑  作者: Mango
TCP端口是分配给不同应用程序的唯一编号。例如,我们已经在计算机上打开了电子邮件和游戏应用程序;通过电子邮件应用程序,我们想将邮件发送到主机,通过游戏应用程序,我们要玩在线游戏。为了完成所有这些任务,将不同的唯一编号分配给这些应用程序。每个协议和地址都有一个称为端口号的端口。 TCP(传输控制协议)和UDP(用户数据报协议)协议主要使用端口号。
端口号是与IP地址一起使用的唯一标识符。端口是16位无符号整数,TCP / IP模型中可用的端口总数为65,535个端口。因此,端口号的范围是0到65535。对于TCP,零端口号是保留的,不能使用,而在UDP中,零端口不可用。 IANA(互联网号码分配机构)是分配端口号的标准机构。
端口号示例:
192.168.1.100:7
在上述情况下,192.168.1.100是IP地址,而7是端口号。
要访问特定服务,请使用端口号和IP地址。 0到1023端口号的范围保留给标准协议使用,其他端口号由用户定义。
单个客户端可以与同一台服务器或多台服务器建立多个连接。客户端可能同时运行多个应用程序。当客户端尝试访问某些服务时,则IP地址不足以访问该服务。要从服务器访问服务,需要端口号。因此,传输层通过为应用程序分配端口号,在提供这些应用程序之间的多种通信中起主要作用。
端口号分为三类:
众所周知的端口范围是0到1023。众所周知的端口与那些服务于常见应用程序和服务的协议一起使用,例如HTTP(超文本传输协议),IMAP(Internet邮件访问协议),SMTP(简单邮件传输)协议)等。例如,我们要访问互联网上的某些网站;然后,我们使用http协议; http的端口号为80,这意味着当我们在应用程序中使用http协议时,它将获得端口号80。定义为无论何时使用http协议,都将使用端口号80。同样,对于其他协议,例如SMTP,IMAP;定义了众所周知的端口。其余端口号用于随机应用程序。
注册端口的范围是1024到49151。注册端口用于用户进程。这些进程是单个应用程序,而不是具有众所周知端口的通用应用程序。
动态端口的范围是49152到65535。动态端口的另一个名称是临时端口。客户端创建连接时,这些端口号会动态分配给客户端应用程序。客户端启动连接时会标识动态端口,而客户端会在连接之前知道众所周知的端口。客户端连接到服务时,客户端不知道此端口。
众所周知,TCP和UDP都包含源端口号和目标端口号,这些端口号用于标识源端和目标端的应用程序或服务器。 TCP和UDP都使用端口号将信息传递到上层。
让我们了解这种情况。
假设客户端正在访问网页。 TCP标头包含源端口和目标端口。
在上图中,
源端口:源端口定义TCP段所属的应用程序,此端口号由客户端动态分配。基本上,这是分配端口号的过程。
目标端口:目标端口标识服务在服务器上的位置,以便服务器可以满足客户端的请求。
在上图中,
源端口:它定义TCP段来自的应用程序。
目标端口:它定义了TCP段要去的应用程序。
在上述情况下,使用两个过程:
封装:发送方使用端口号告诉接收方应将哪个应用程序用于数据。
解封装:接收器使用端口号标识将数据发送到哪个应用程序。
让我们通过使用所有三个端口(即众所周知的端口,注册的端口和动态端口)来理解以上示例。
首先,我们来看一个著名的港口。
众所周知的端口是服务于常见服务和应用程序(例如http,ftp,smtp等)的端口。在这里,客户端使用众所周知的端口作为目标端口,而服务器使用众所周知的端口作为源。港口。例如,客户端发送一个http请求,则在这种情况下,目标端口将为80,而http服务器正在处理该请求,因此其源端口号将为80。
现在,我们看一下注册的端口。
已注册的端口已分配给非通用应用程序。许多供应商应用程序都使用此端口。像众所周知的端口一样,客户端使用此端口作为目标端口,而服务器使用此端口作为源端口。
最后,我们看到了动态端口在这种情况下的工作方式。
动态端口是在启动连接时动态分配给客户端应用程序的端口。在这种情况下,客户端使用动态端口作为源端口,而服务器使用动态端口作为目标端口。例如,客户端发送一个http请求;那么在这种情况下,目标端口将是80,因为它是一个http请求,而源端口将仅由客户端分配。当服务器处理请求时,源端口将为80,因为它是http服务器,而目标端口将与客户端的源端口相同。也可以使用注册的端口代替动态端口。
让我们看下面的例子。
假设客户端正在与服务器通信,并发送http请求。因此,客户端将TCP段发送到众所周知的端口,即HTTP协议的80。在这种情况下,目标端口将为80,并且假设客户端动态分配的源端口为1028。服务器响应时,目标端口为1028,因为客户端定义的源端口为1028,而在客户端定义的源端口为由于HTTP服务器正在响应客户端的请求,因此服务器端将为80。