mac|啥都玫说之网络篇-3协议部分,身份认证

mac|啥都玫说之网络篇-3协议部分,身份认证

3.3 哪张嘴说什么话既然协议是我们说的话 , 那么用什么嘴说什么话就涉及到一个新名词了:“端口” 。 端口这个词在很多地方都会用到 , 我们在这里单指协议当中的端口 , port 。 我们要的是逻辑意义上的端口 , 指的是TCP/IP协议组中的端口 。
如果把操作系统比喻成一间房子 , 端口就是出入这间房子的门和窗 。 真正的房子只有几个门窗 , 但是端口可以有65536(即:2^16)个之多!端口是通过端口来标记的 , 端口只有整数 , 范围是从0 到65535(2^16-1) 。 端口的范围从0到65535 。 但是事实上 , 我总觉得端口要多余65536个 , 因为这里指的65536个是一种协议所开放的端口 , 实际上每个端口都可以有TCP和UDP两种模式存在 , 也就是TCP端口和UDP端口 。 由于TCP和UDP两个协议是独立的 , 因此各自的端口也相互独立 , 比如TCP有8080端口 , UDP也可以有8080端口 , 两者并不冲突 。
既然TCP和UDP有端口的概念 , 其他协议呢?比如IP协议或者HTTP协议 。 这里就会出现下面两种情况 , 第一种情况 , IP协议这种低于传输层的协议 , 还是用房间来举例子 , 我们先要找到我们的房间 , 才能看见门和窗 , IP协议实际上是指导我们如何找到房间的 , 所以在IP协议这个层面不存在端口这个概念 , 也就是网络层和网络接口层没有端口;那么第二种情况高于传输层的应用层呢?应用层的端口实际上是使用传输层提供的端口 , 应用层的每一种应用都会对应一个或者多个端口 , 这个端口可以是默认的、公认的或者自定义的 , 这不重要 , 重要的是这就像我们房子的某一扇门或者窗一样 , 我们的房子需要多少门窗 , 是在传输层已经定义好的 , 具体某一扇门和窗户是什么样式、颜色这个是应用层定义的 , 也就是说 , 一个应用可以决定它要使用哪种传输层协议的哪一个端口 , 前提是端口没有被占用 , 也没有出圈 , 这个应该很好理解 , 一间房子 , 有安装门窗的位置才可以安装 , 如果已经安装好了门窗 , 也不能再次安装了 。
端口根据协议分为两类 , 这个已经说了 , 另外根据用途 , 或者说根据应用可以分为三类:

  • [x
    公认端口
  • [x
    注册端口
  • [x
    动态端口
老规矩 , 逐个来说 。 公认端口有些人也称它为周知端口 , 其实就是英文惹的祸 , 因为它的英文名是Well Known Ports , 具体翻译为什么 , 个人感觉还是公认端口书面一些 。 公认端口说的是0至1023之间的端口 。 这些端口由一个叫做互联网数字分配机构(简称IANA)的组织分配和管理 。 它们把这些端口分配给最重要的一些应用程序 , 让所有的用户都知道 , 当一种新的应用程序出现后 , IANA必须为它指派一个公认端口 。常见的公认端口比如说访问网站用的80端口 , DNS用的53端口 。
注册端口 , 从1024到49151端口 , 分配给用户进程或应用程序 。 这些进程主要是用户选择安装的一些应用程序 , 而不是已经分配好了公认端口的程序 。 在大多数情况下 , 这些应用程序可以被非特权用户打开 。 这些端口在没有被服务器资源占用的时候 , 可以被其他程序占用 。 这其中比较常见的就是1433端口 , 它是SQL Server默认的端口 , SQL Server服务使用两个端口:TCP协议的1433端口、UDP协议的1434端口 。 其中1433用于供SQL Server对外提供服务 , 1434用于向请求者返回SQL Server使用了哪个TCP/IP端口 。 这里SQL Server就是可以选择安装的 , 有用再装 。 而且普通计算机用户大部分时间用不到 。 而且SQL Server并不是必须依靠特权用户权限才能打开的 。