IP是网络层协议,IP头中的协议号用来说明IP报文中承载的是哪种协议(一般是传输层协议,比如6 TCP,17 UDP;但也可能是网络层协议,比如1 ICMP;也可能是应用层协议,比如89 OSPF)。
TCP/UDP是传输层协议,TCP/UDP的端口号用来说明是哪种上层应用,比如TCP 80代表WWW,TCP 23代表Telnet,UDP 69代表TFTP。
目的主机收到IP包后,根据IP协议号确定送给哪个模块(TCP/UDP/ICMP...)处理,送给TCP/UDP模块的报文根据端口号确定送给哪个应用程序处理。

IP协议是由TCP、UDP、ARP、ICMP等一系列子协议组成的。其中,主要用来做传输数据使用的是TCP和UDP协议。在TCP和UDP协议中,都有端口号的概念存在。端口号的作用,主要是区分服务类别和在同一时间进行多个会话。

 举例来说,有主机A需要对外提供FTP和WWW两种服务,如果没有端口号存在的话,这两种服务是无法区分的。实际上,当网络上某主机B需要访问A的FTP服务时,就要指定目的端口号为21;当需要访问A的WWW服务时,则需要将目的端口号设为80,这时A根据B访问的端口号,就可以区分B的两种不同请求。这就是端口号区分服务类别的作用。

 再举个例子:主机A需要同时下载网络上某FTP服务器B上的两个文件,那么A需要与B同时建立两个会话,而这两个传输会话就是靠源端口号来区分的。在这种情况下如果没有源端口号的概念,那么A就无法区分B传回的数据究竟是属于哪个会话,属于哪个文件。而实际上的通信过程是,A使用本机的1025号端口请求B的21号端口上的文件1,同时又使用1026号端口请求文件2。对于返回的数据,发现是传回给1025号端口的,就认为是属于文件1;传回给1026号端口的,则认为是属于文件2。这就是端口号区分多个会话的作用。

 举个例子来说一台主机就好像一多功能银行,该银行内每个负责不同业务的窗口就好像是通信端口,而我们就好像Client端来的数据包。当您进入银行想要缴纳信用卡时,一到门口服务人员就会指示你直接到相应的窗口缴费,当然,如果您是要取钱,服务人员就会请您到取钱窗口去填写数据,您是不会跑错的。万一跑错了怎么办?当然该窗口就会告诉你我负责这个业务,请你回去。所以本次的连接就无法成功。