3.3哪张嘴说什么?
既然约定就是我们说的,我们用什么嘴说的就涉及到一个新名词:“端口”。“港口”这个词用在很多地方。在这里,我们简单的指协议中的端口,port。我们要的是逻辑端口,是指TCP/IP协议组中的端口。

如果把操作系统比作房子,端口就是进出房子的门和窗。真正的房子只有几个门窗,端口却可以多达65536个!端口由端口标记。端口只能是整数,范围从0到65535。端口的范围是从0到65535。但其实我一直认为不止65536个端口,因为这里的65536个端口是一个协议开放的端口。其实每个端口都可以有TCP和UDP两种模式,即TCP端口和UDP端口。因为TCP和UDP是独立的,所以它们的端口也是相互独立的。比如TCP有8080端口,UDP也可以有8080端口,互不冲突。
既然TCP和UDP都有端口的概念,那么其他协议呢?例如IP协议或HTTP协议。这里会出现以下两种情况。第一种情况,低于传输层的IP协议还是以房间为例。在我们能看见门和窗户之前,我们必须找到我们的房间。IP协议实际上是指导我们如何找到房间的,所以IP协议层面不存在端口的概念,即网络层和网络接口层没有端口;第二种情况高于传输层的应用层怎么办?应用层的端口实际上使用的是传输层提供的端口。应用层中的每个应用将对应于一个或多个端口。此端口可以是默认的、可识别的或自定义的。没关系。重要的是,它就像我们家的一扇门或一扇窗。我们的房子需要多少个门和窗已经在传输层定义好了。某个门窗的具体样式和颜色是由应用层定义的。也就是说,应用程序可以决定使用哪个传输层协议的哪个端口,前提是该端口未被占用或不在环路中。这个应该很好理解。房子只有具备安装门窗的位置才能安装。如果门窗已经安装,则不能再次安装。
根据端口协议,可以分为两类。这个已经说过了。此外,根据用途或应用可分为三类:
[x]知名端口[x]注册端口[x]动态端口
像往常一样,一个接一个。公认的是,有些人把这个港口叫做众所周知的港口,但这实际上是英语的错,因为它的英文名字是众所周知的港口。通常认为端口在0到1023之间。这些端口由一个名为互联网数字发行机构的组织分配和管理。他们将这些端口分配给一些最重要的应用程序,并让所有用户知道,当一个新的应用程序出现时,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不必依赖特权用户权限来打开它。
动态端口,有时也称为用户端口,范围从49152到65535。它们被称为动态端口,因为它们通常不是固定地而是动态地分配某个服务。这种端口是在进程运行时才动态选择的,所以也叫暂态端口。保留供客户端进程临时使用。也可以理解为,客户端启动时,操作系统随机分配一个端口与服务器通信,下次客户端进程关闭打开时,重新分配一个新的端口。其实我知道这个动态端口的终点在哪里,一般不记得是从哪里开始的,所以大多数情况下,我个人习惯是用50000到65535之间。注册的端口内存在1024到49000之间,方便记忆,不易出错。如果我们愿意查的话,浏览网站时使用的浏览器,无论哪个版本,都必须是开放的动态端口,访问网站的端口80或者使用安全通信https的端口443。
以下是互联网数字分销机构公布的一些端口占用情况。让我们来看看一些常见的。
|协议|端口|占用的应用程序| | |:-:|:-| | | TCP | 20 | FTP | | | TCP | 21 | FTP | | TCP | 22 | SSH | TCP | 23 | Telnet | | TCP | 25 | SMTP | TCP/UDP | 53 15 | Microsoft RPC | | | TCP/UDP | 137 | Microsoft Netbios,Internet邻居使用| |UDP|138| Microsoft Netbios数据服务| | | TCP | 139 | Microsoft netnet
几乎每个系统都有一个服务文件来保存端口和应用程序信息。Windows在系统盘WindowsSystem32driversetc下;类Unix系统一般在/etc/下。有兴趣的可以看看。
3.4网络身份证
既然知道了房间的门窗,那我们的房间在哪里呢?这就涉及到一些其他的问题,比如MAC地址,IP地址等等。一个一个说吧。
首先,MAC地址,字面翻译为媒体访问控制地址,也叫硬件地址、局域网地址、以太网地址或物理地址。它是用于确认在线设备位置的地址。在OSI参考模型中,第二层数据链路层负责MAC地址。MAC地址用于唯一识别网卡。如果一个设备有一个或多个网卡,每个网卡需要并且将有一个唯一的MAC地址。MAC地址长度为48位,由十六进制数字组成,分为前24位和后24位:前24位称为组织的唯一标识符,是IEEE注册机构分配给不同厂商的代码,用于区分不同厂商。最后24位由制造商分配,称为扩展标识符。同一厂家生产的网卡,MAC地址的后24位是不一样的。MAC地址是房间的具体位置。就好像有人告诉我们,“一直走到路口左转。第一扇门在三楼”。就是这样。

然后我们再来说IP地址,IP地址是指互联网协议地址,是IP地址的缩写。IP地址是IP协议提供的统一地址格式,它为互联网上的每个网络和每个主机分配一个逻辑地址。IP地址分为A、B、C、D、E5,适用类型有:大型网络;中型网络;小网络;多目的地地址;备用。常用的有B类和C类。IP地址可以看作是网络标识号和主机标识号两部分,所以IP地址也可以分为两部分,一部分是网络地址,一部分是主机地址。IP地址就像我们的家庭地址。如果你想去某人的家,你必须知道他的地址,这样你才能到达那里。此家庭地址必须是唯一的。IP地址工作在OSI参考模型的第三网络层。通信过程由MAC地址和MAC地址之间明确分工和默契配合来完成。IP地址集中在网络层,将数据包从一个网络转发到另一个网络;MAC地址集中在数据链路层,将数据帧从一个节点传输到同一链路中的另一个节点。
剩下的就是网关、网络ID和子网掩码。这些东西如果一个一个解释,就是在抄书,真的没有意义。或者打个比方来解释,IP地址是归属地址,网络ID是小区,网关是小区的大门,子网掩码是小区大小,MAC地址是进入小区后的具体位置。
大概就是这个意思。在这里,我不得不说一件重要的事情,那就是沟通的五行。
[x]源地址[x]目的地址[x]源端口[x]目的端口[x]协议
①和②之间的通信在两台计算机上进行。它们有相同的目的端口,都是80。可以根据源端口来区分。③和①的目的端口和源端口完全相同,但各自的源IP地址不同。另外,当IP地址和端口都相同时,我们也可以通过协议号来区分。
3.5这里说一些事情
有些事情很难归类为系统或协议问题。让我们先把它们放在这里。
第一个是MTU,通信术语中的最大传输单位。在英语中,最大传输单位是指一个通信协议的某一层所能通过的最大数据包大小。该大小以字节为单位。最大传输单元的参数通常与通信接口有关,这里我们通常要指网络接口卡,俗称网卡。
因为协议数据单元的头和尾的长度是固定的,所以MTU越大,协议数据单元携带的有效数据就越长,通信效率就越高。MTU越大,传输相同用户数据所需的数据包数量越少。MTU越大越好,因为MTU越大,传输数据包的延迟就越大。并且MTU越大,数据包中比特错误的概率越大。MTU越大,通信效率越高,传输延迟越大。因此,需要权衡通信效率和传输延迟,选择合适的MTU。以以太网传输IPv4报文为例。MTU指示的长度包括IP报头的长度。如果IP层之上的协议层发送的数据报文长度超过MTU,数据报文将在发送方的IP层被分段,接收到的分段将在接收方的IP层被重组。这里有一个具体的例子来说明IP包分段的原理。以太网的MTU值是1500字节。假设发送方的更高协议层向IP层发送一个长度为3008字节的数据包,那么这个IP包在加上20字节的IP头后的总长度为3028字节。因为3028>1500,数据包会碎片化。注意:只对上层数据进行分片,所以原IP头不需要分片,所以要分片的数据长度只有30000字节。这特别容易出错。碎片化过程如下:
首先计算最大IP包中IP净荷的长度=MTU-IP头长=1500-20=1480字节。然后将这3008个字节按照1480个字节的长度进行切片,会分成三个切片,3008=1480+1480+48。最后,发送方将在三个片段上添加IP头,形成三个IP包,长度分别为1500字节、1500字节和68字节。
从上面的分片例子可以看出,由第一和第二分片包组成的IP包的长度等于MTU,即1500字节。
在网络通信中,应该尽量避免分片和重组,因为分片和重组对网络性能影响很大。在发送数据包时,有必要选择合适的MTU大小来提高通信性能。MTU大小的选择有一个协议协商模式。通过全路径的MTU发现机制,找到全路径的最小MTU,然后消息发送方式小于等于路径MTU,避免了数据传输过程中的分片,提高了数据转发性能。由于安全等原因,MTU的协议发现机制并不能总是生效,因此需要根据网络的特点选择合理的MTU。如果消息传输过程中不可避免地会出现碎片,那么我们应该尽量在终端进行重组,并在转发路径中避免碎片。

在TCP/IP协议中,要传输的数据被分成更小的组,每个组的大小为576字节。Windows默认1500字节,这是以太网的分组标准。ADSL使用的PPPoE略小于这个值,一般为1492字节。但是,有些网站使用大于1492字节的MTU,因此有些网页可能无法访问。修改Windows的默认MTU可以解决这个问题。无论是安装在PC上的PPPoE软件,还是调制解调器内置的PPPoE软件,在使用中都有可能遇到这个问题。如果路由器出现这种情况,请将MTU更改为手动,并将其设置为1492。
网络中一些常见的链路层协议MTU的默认值如下:
FDDI协议:4352字节以太网协议:1500字节PPPoE协议:1492字节X.25协议:576字节
FDDI协议,简单来说就是一般用在钢丝网上,这样我们就可以理解为什么它的MTU比较大了。X.25协议。我不确定这是否与电话线拨号上网时调制解调器使用的协议相同。看,大小一样。
如果要在IP层传输的数据报大于链路层的MTU,IP层将对数据报进行分段。一个数据报被分成若干个片段,每个片段的大小小于或等于链路层的MTU值。同一网络上的主机相互通信时,网络的MTU对双方都很重要。但是当主机可以通过很多网络通信时,对双方来说最重要的是通信路径中最小的MTU,因为不同网络的链路层MTU在通信路径中是不同的。通信路径中最小的MTU称为路径MTU。


