得之我幸 失之我命

when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.

认识下端口

端口简介

在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型

物理端口:物理存在的端口,如 ADSL Modem、集线器、交换机、路由器上用于连接其他网络设备的接口

逻辑端口:逻辑意义上用于区分服务的端口,如 TCP/IP 协议中的服务端口,端口号的范围从 0 到 65535,比如用于浏览网页服务的 80 端口,用于 FTP 服务的 21 端口等

由于物理端口和逻辑端口数量较多,为了对端口进行区分,将每个端口进行了编号,这就是端口号

TCP/IP 协议中的服务端口按端口号可以分为 3 大类:

  1. 公认端口(Well Known Port)

    0 到 1023

    它们紧密绑于一些服务,通常这些端口的通讯明确表明了某种服务的协议。在浏览器的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下 www 服务的端口号是 80,但是网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在地址栏上指定端口号,方法是在地址后面加上冒号端口号。但是有些系统协议使用固定的端口号,是不能被改变的,比如 139 端口专门用于 NetBIOS 与 TCP/IP 之间的通信,不能手动改变

  2. 注册端口(Registered Ports)

    1024 到 49151

    这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号必须在 IANA 按照规定的手续登记,以防止重复

  3. 动态或私有端口(Dynamic and/or Private Ports)

    49152 到 65535

    这类端口号是在客户程序运行时才动态选择,当通信结束时,这个刚才使用的端口号会被系统回收,以供其它客户进程使用

事实上,现在的动态端口分配常见从 1024 开始,只要运行的程序向系统提出访问网络的申请,系统就从这些端口号中分配一个供该程序使用

本地 TCP/UDP 的端口范围可以在 /proc/sys/net/ipv4/ip_local_port_range/etc/sysctl.confnet.ipv4.ip_local_port_range 进行定义

端口与服务

一台拥有 IP 地址的主机可以提供许多服务,比如 FTP 服务、SMTP 服务等,这些服务可以通过 1 个 IP 地址实现,所以 IP 地址与网络服务的关系是一对多的关系,那么主机要怎么区分不同的网络服务?正是通过 IP 地址 + 端口号来区分不同的服务

端口号与相应服务的对应关系存放在 /etc/services 文件中,这个文件中可以找到大部分端口

be slow to promise and quick to perform.