终端开发所必知道的计算机网络知识(一)

前言

最近在整理网络相关的笔记,计划会写两三篇计算机网络相关的文章,文章不对网络各层进行深入专研,只对每层里的关键的知识点做解析,对一些平常开发接触得比较多的层会详讲,对接触得比较少的层会略讲,文章的目的是为了让读者的脑海中形成TCP/IP五层模型,理解每一层一些关键的协议,作为连接器将读者已经习得的计算机网络的知识系统地连接起来。开讲之前,我们先明确TCP/IP五层模型,自底往上分别是:物理层、数据链路层、网络层、传输层、应用层。

物理层

物理层建立在物理通信介质的基础上,作为系统和通信介质的接口,用来实现数据链路实体间透明的比特流传输。只有该层为真实物理通信,其它各层为虚拟通信

数据链路层

在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧在信道上无差错的传输,并进行各电路上的动作系列。数据的单位称为帧

点对点协议(PPP,Point-to-Point Protocol)

主要是用来通过拨号或专线方式在两个网络节点之间建立连接、发送数据。PPP是各类型主机、网桥和路由器之间简单连接的一种解决方案。

网络层

选择合适的路由,使数据分组交付到目的主机

关键协议

IP、ARP( 地址解析协议,获取MAC地址)、ICMP(数据发送异常通知)、NAT (网络地址转换协议)

IP协议

主要功能:IP寻址、路由、IP分包、重组

1、 IP

为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码,即网络标识主机标识,IP地址一共是32位,,根据网络标识分为以下五类:

  • A类(网络号占8位,0开头) ,地址范围:0.0.0.0~126.0.0.0 ;
  • B类(网络号占16位,10开头) ,地址范围:128.0.0.0~191.255.0.0;
  • C类(网络号占24位,110开头),地址范围:192.0.0.0~223.255.255.0;
  • D类用于多点广播,以1110开头,它并不指向特定的网络;
  • E类以11110开头,为将来使用保留;

主机标识段全为0的IP代表这个网段本身,这个地址不分配给主机;主机标识段全为1的IP为广播地址,例如,对于10.1.1.0 (255.255.255.0 )网段的网络,其广播地址为10.1.1.255 ,当发出一个目的地址为10.1.1.255 的分组时,它将被分发给该网段上的所有计算机。

子网掩码:识别一个IP的网络号和主机号,子网掩码中非网络位的前几位置1原网络就被分为2的几次方个网络。

2、路由控制

指将分组数据发送到目标地址的功能,这个功能一般由路由器完成,路由器中保存着路由控制表,它在路由控制表中查找目标IP对应的下一个路由器地址。

路由控制表可以由管理员手动设置,称为静态路由控制。

3、IP报文分割重组

IP协议的一个任务是对数据进行分片和重组。分片由发送端主机和路由器负责,重组由接收端主机负责。

a、分割

主机会首先获取整个路径中所有数据链路的最小 MTU(最大传输单元),并按照整个大小将数据分片。

为了找到路径MTU,主机首先发送整个数据包,并将IP首部的禁止分片标志设为1.这样路由器在遇到需要分片才能处理的包时不会分片,而是直接丢弃数据并通过ICMP协议将整个不可达的消息发回给主机。主机将ICMP通知中的MTU设置为当前MTU,根据整个MTU对数据进行分片处理。如此反复下去,直到不再收到ICMP通知,此时的MTU就是路径MTU。

b、重组

目的主机根据IP首部中的标志片偏移进行数据重组

4、IP首部


总长度(Total Length):表示IP首部与数据部分总字节数,该段长16比特,所以IP包的最大长度为65535字节(2^16-1)。虽然不同数据链路的MTU不同,但是IP协议屏蔽了这些区别,通过自己实现的数据分片功能,从上层的角度来看,IP协议总是能够以65535为最大包长进行传输。

标识(Identification):用于分片重组,属于同一个分片的帧的ID相同,但即使Identification相同,如果目标地址、源地址、上层协议中有任何一个不同,都被认为不属于同一个分片。

标志(Flags):用于分片重组,由3个比特构成。第一个比特未使用,目前必须是0。第二个比特表示是否进行分片,0表示可以分片,1表示不能分片,在路径MTU发现技术中就用到了这个位。第三个比特表示在分片时,是否表示最后一个包,1表示不是最后一个包,0表示分配中最后一个包。

片偏移(FO: Fragment Offset):由13比特组成,表示被分片的段相对于原始数据的位置,它可以表示8192(2^13)个位置,单位为8字节,所以最大可以表示8 x 8192 = 65536字节的偏移量。

生存时间(TTL,Time To Live):表示包可以经过多少个路由器的中转,每经过一个路由器,TTL减1,这样可以避免前文无限传递包的问题。

协议: 表示IP首部的下一个首部属于哪个协议,比如TCP协议的编号为6,UDP编号为17。

首部校验和:用于检查IP首部是否损坏。

可选项:仅在试验或诊断时用,可以没有,如果有,需要配合填充(Padding)占满32比特。

5、IPv6与IPv4

IPv6是下一版本的互联网协议,采用128位地址长度,几乎可以不受限制地提供地址。

top Created with Sketch.