网络协议的端口号
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。
参考文献
原文链接:网络协议的端口号,转载请注明来源!
–EOF–