TCP和UDP协议中都有端口这个概念,但是端口却不是IP协议的一部分
端口的出现主要是为了给协议栈和应用对应
。协议栈端口号将数据分配给不同的应用程序
。应用层程序用端口号去区分不同的链接
TCP 和UDP 协议都使用了端口号 的概念来标示发送方和接收方的应用层 对每个tcp链接的一端 都用一个相关的16位的无符号端口号来分配他们 即便是UDP
这种没有链接的协议 依旧有一个16的无符号端口号 可能的被承认的端口号有 2^16 -1 65535
端口分类
著名端口 监听端口 和动态端口
著名端口由因特网赋号LANA来分配 并且常用于系统进程--权限在root
监控端口 通常用来运行各种用户自己写的服务 服务监听在这些端口下不需要特别的权限
linux内核使用 32768 - 61000 范围
动态端口 通常别用来在主动发起连接时候随便分配使用 在任何特定的tcp连接外不具有任何意义 这是
由于tcp等协议是通过四元组 来区分不同的网络连接 当本地主动发起tcp连接的时候 如果目的IP
目的端口 本地ip都是一样的只能通过占用不同的本地端口来去区分连接
0号端口 0号端口是保留端口
如果在bind0号端口 以为由系统随便分配一个端口来绑定 当我们需要监听一个随机端口 可以使用bind 0