TCP/IP协议栈的网络层位于网络接口层和传输层之间,其主要协议包括IP(Internet Protocol 互联网协议)、ARP(Address Resolution Protocol 地址解析协议)、RARP(Reverse Address Resolution Protocol 反向地址解析协议)、ICMP(Internet Control Message 互联网控制消息协议)、IGMP(Internet Group Management Protocol 互联网组管理协议)。
IP协议概述
TCP/IP协议栈的网络层位于网络接口层和传输层之间。网络层的主要功能是标识大规模网络中的每一个节点,并将数据包投递到正确的目的节点。
TCP/IP的网络层主要定义了以下协议:
IP:负责网络层寻址、路由选择、分段及包重组
ARP:负责把网络层地址解析成物理地址
RARP:负责把物理地址解析成网络层地址
ICMP:定义了网络层控制和传递消息的功能,可以报告IP数据包传递过程中发生的错误、失败等信息,提供网络诊断功能。
IGMP:负责管理IP组播组
TCP/IP网络层的核心协议是由RFC791定义的IP。IP是尽力传输的网络协议,其提供的数据传送服务是不可靠的、无连接的。IP协议不关心数据报文的内容,不能保证数据包能成功地到达目的地,也不维护任何关于前后数据包的状态信息。面向连接的可靠服务由上层的TCP协议实现。
IP将来自传输侧的数据封装成IP包并交给网络接口层进行转发,同时将来自网络接口层的帧解封装并根据IP协议号提交给相应的传输层协议进行处理。TCP的IP协议号为6,UDP的IP协议号是17。
IP协议的主要作用包括:
标识节点和链路:IP为每个链路分配一个全局唯一的网络号以标识每个网络;为节点分配一个全局唯一的32位IP地址,用以标识每一个节点。
寻址和转发:IP路由器通过根据所掌握的路由信息,确定节点所在网络的位置,并进而确定节点所在的位置,并选择适当的路径将IP包转发到目的节点。
适应跟中数据链路:为了工作于多样化的链路和介质上,IP必须具备适应各种链路的能力,例如可以根据链路的MTU对IP包进行分片和重组,可以建立IP地址到数据链路层地址的映射以及通过实际的数据链路传递信息。
IP网络结构
典型的IP互联网由众多的路由器和网段构成。每个网段对应一个链路。路由器在这些网段之间执行数据转发服务。
路由器的主要功能:
连接分离的网络:路由器的每个接口处于一个网络,将原本孤立的网络连接起来,实现大范围的网络通信。
链路层协议适配:由于链路层协议的多样性,不同类的链路之间不能直接通信。路由器可以适配各种数据链路的协议和速率,使其的通信成为可能。
在网络之间转发数据包:为了实现这个功能,路由器之间需要运行网关到网关协议(Gateway to Gateway Protocol GGP)交换路由信息和其他控制信息,以了解去往每个目的网络的正确路径,典型的GGP包括RIP、OSPF、BGP等路由协议。
IP网络的包转发使逐跳(hop-by-hop)进行的。即包括路由器在内的每一个节点要么将一个数据包直接发送给到目的节点,要么将其发送到摸底节点路径上的下一跳节点,由下一跳继续将数据包转发下去。数据包必须历经所有的中间节点之后才能到达目的。每一个路由器或主机的转发决策都是独立的,其依据是存储于自身路由表中的路由。
IP封装
Version(4b) |
IHL (4b) |
Type of Service (8b) |
Total Length (16b) |
||||
Identification (16b) |
Flags (3b) |
Fragment Offset (5b) |
|||||
Time to Live(8b) | Protocol(8b) |
Header Checksum(16b) |
|||||
Source IP Address(32b) | |||||||
Destination IP Address(32b) | |||||||
IP Options |
- 版本(Version):表明了IP协议的版本号,目前的协议版本号为4。下一代IP协议的版本号为6.
- 头长度(Internet Header Length,IHL):指IP包头部长度。
- 服务类型(Type of Service ToS):用于标志IP包期望获得的服务等级,常用于QoS(Quality of of Service 服务质量)中。
- 总长度(Total Length):整个IP包的长度,包括数据部分。
- 标识(Identification):唯一地标识主机发送的每一个IP包。通常每发送一个包它的值就会加1.
- 生存时间(Time to Live TTL):设置了数据包可以经过的路由器数目。一旦经过一个路由器,TTL值就会减1,当该字段值为0时,数据包将被丢弃。
- 协议(Protocol):标识数据包内发送的数据所属的上层协议,IP用协议号区分上层协议。TCP协议的协议号为6,UDP 协议的协议号为17。
- 头校验和(Head Checksum):IP头部的校验和,用于检查包头的完整性。
源地址和目的地址:分别标识数据包的源节点和目的节点的IP地址。
IP地址和地址映射
IP地址格式和表示方法
连接到internet上的设备必须有一个全球唯一的IP地址。IP地址长度为二进制32位,通常采用点分十进制方式表示,即每个IP地址被表示为以小数点隔开的4个十进制整数,每个整数对应一个字节,如192.168.5.123。
IP地址与链路类型、设备硬件无关、而是由管理员分配指定的,因此也称为逻辑地址(Logical Address)。每台主机可以拥有多个网络接口卡,也可以同时拥有多个IP地址。路由器可以看作这种主机,但其每个IP接口必须处于不同的IP网络,即各个接口的IP地址分别处于不同的IP网段。
由于理论上总共有232IP地址,也就是约43亿个IP地址,在互联网上,每一台路由器都储存每一个节点的路由信息几乎是不可能的。为便于实现路由选择、地址分配和管理维护,IP地址采用二级结构,即IP地址由两个部分组成:
- 网络号(network-number):用于区分不同的IP网络,即该IP地址所属的IP网段。一个网络中的所有设备的IP地址具有相同的网络号。
- 主机号(host-number):用于标识该网络内的一个IP节点。在一个网段内部,主机号是唯一的。
这样,路由器只需要储存每个网段的路由信息即可。
IP地址分类
- A类IP地址的第一个八位段(octet)以0开始。A类地址的网络号为第一个八位段,网络号取值范围为1~126(127留作它用)。A类地址的主机号后面的三个八位段,工24位。A类地址的范围为1.0.0.0~126.255.255.255,每个A类网络有224个A类地址。
- B类IP地址的第一个八位段以10开始。B类地址的网络号为前两个八位段,网络号的第一个八位段取值为128!191。B类地址的主机号后面的两个八位段工16位。B类地址的范围为128.0.0.0~191.255.255.255,每个B类网络有216个B类地址。
- C类IP地址的第一个八位段以110开始。C类地址的网络号为前三个八位段,网络号的第一个八位段取值为192~223.C类地址的主机号后面的一个八位段共8位。C类地址的范围为192.0.0.0~223.255.255.255,每个C类网络有28=256个C类地址。
- D类地址第一个八位段以1110开头,因此D类地址的第一个八位段取值为224~239.D类地址通常为组播地址。
- E类地址第一个八位段以11110开头,保留用于研究。
特殊IP地址