14 March 2015
关于端口号的解读。

今天同事问起一个问题,他建了一个thrift的服务器,用的是99999端口监听,启动不了,让我们帮着解决。

之前学习计算机网络的时候也学过,比如HTTP是80端口,DNS是53端口等等,直接网上查了一下,TCP和UDP端口支持都是16比特,也就是最大是0~65535。

扩展说一下,所有高层协议都是基于底层协议实现,在传输层的TCP和UDP协议决定了端口号占用2个字节,那么,高层协议所占用的端口范围不会超过16位。

UDP数据报文结构如下,从96位开始,来源连接端口和目的连接端口一共占用了32位。

0 – 7 8 – 15 16 – 23 24 – 31
0 来源地址
32 目的地址
64 全零 协议名 UDP报文长度
96 来源连接端口 目的连接端口
128 报文长度 检验和
160+  
 %%%
 

TCP也一样,从一开始,从0位到第31位,4个字节用来表示来源连接端口和目的连接端口。

偏移 位 0–3 4–7 8–15 16–31
0 来源连接端口 目的连接端口
32 序列号码
64 确认号码
96 报头长度 保留 标志符 窗口大小
128 检查码 紧急指针
160 选用项
160/192+  
数据
 

Thrift这种应用层协议必须是给予传输层实现的,那么端口号也必须不能超过65535。


参考文献
  1. 传输控制协议 - Wikipedia
  2. 用户数据报协议 - Wikipedia

原文链接:网络协议的端口号,转载请注明来源!

EOF