TCP 和 UDP 可以使用相同的端口号

结论:

  1. TCP和UDP可以使用相同的端口号;
  2. TCP协议里的端口号必须是唯一的,UDP同理;

原因:

IP首部中存入一个长度为8bit的数值,称作协议域。1代表ICMP,2代表IGMP,6代表TCP,17代表UDP。系统有能力根据接受的报文的IP字段里面的协议部分判断这个报文是什么报文,就是说,系统读数据的时候还没有读到上层报文的时候已经知道上层是什么报文了,直接交给相关的内核进程或协议栈处理就可以了。而在同一个协议内部端口号唯一。

知识拓展:

 

TCP 和 UDP 可以使用相同的端口号

由于TCP,UDP,ICMP和IGMP都要向IP传输数据,应此IP必须在生成的IP首部中加入某种标志,以表明数据属于哪一层。为此P首部中存入一个长度为8bit的数值,称作协议域。1代表ICMP,2代表IGMP,6代表TCP,17代表UDP。

类似地,许多应用程序使用TCP或UDP来传送数据。运输层协议在生成报文首部是要存入一个应用程序的标识符。TCP和UDP都用一个16bit的端口号来表示不同的应用程序。TCP和UDP把原端口号和目的端口号分别存入报文首部中。

网络接口分别要发送和接受IP、ARP、RARP数据,因此必须在以太网的帧首部中加入某种形式的标识,以指明生成数据使用的网络层协议。为此,以太网的帧首部也有一个16bit的帧类型域。

TCP 和 UDP 可以使用相同的端口号

当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由低往上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检测报文首部中的协议标识,以确定接受数据的上层协议。这个过程称作“分用”。