一.IP即网际协议

TCP/IP的心脏是互联网层(网络层),这一层主要由IP和ICMP两个协议组成。主要作用:实现终端节点之间的通信。

数据链路层的主要作用在互连同一种数据链路的节点之间进行包传递。而一旦跨越多种数据链路,就需要借助网络层。网络层可以跨越不同的数据链路,即使在不同的数据链路也可以两端节点数据包传输。


二.IP基础知识

2.1简介

三大作用模块,IP寻址,路由(最终节点为止的转发)以及IP分包与组包。

2.2路由控制

将分组数据发送到最终目标地址的功能。

"跳"(Hop)指网络中的一个区间。IP包正是在网络中一个跳间被转发。因此IP路由也叫做多跳路由。

路由控制表,为了将数据包发送给目标主机,所有主机都维护着一张路由控制表。

数据链路的抽象化:


  • IP是实现多个数据链路之间通信的协议。数据链路根据种类的不同各有特点。数据链路地址可以被抽象化为IP地址。
  • 不同数据链路有最大区别,各自的最大传输单位(MTU)不同。
  • 分片处理,将较大的IP包分成多个较小的IP包。

IP属于面向无连接型,原因为了简化和提速


三.IP地址的基础知识

IP地址(IPv4地址)由32位正整数来表示。

tcp/ip系列--IP协议_ipv6

IP地址由"网络标识(网络地址)"和"主机标识(主机地址)"两部分组成。例:192.168.128.10/24中"/24"表示从第一位开始到24位为网络标识。

IP地址分类:分别为A类,B类,C类,D类,用比特位表示主机地址时,不可以全部为0或全部为1。因此全部为0表示对应地址不可获知情况下。而全部为1的主机地址通常作为广播地址。

广播地址用于在同一链路中相互连接的主机之间发送数据。IP地址中主机地址部分全部设置为1,就成为广播地址。广播分为本地广播和直接广播两种。

IP多播,多播用于将包发送给特定组内的所有主机。多播使用D类地址。因此从首位开始到第四位是"1110",就可以认为是多播地址。而剩下的28位可以成为多播组编号。

子网掩码,直接使用A类等等地址分类,浪费资源。为此,新的组合方式减少消耗。引入了子网以后,一个IP地址就有了两种识别码。一是IP地址本身,另一个是表示网络部的子网掩码。子网掩码用二进制表示的话,也是一个32位的数字。它对应IP地址网络标识部分的位全部为"1",对应IP地址主机标识部分则全部"0"。

CIDR与VLSM,地址缺乏。放弃IP地址分类,采用任意长度分割IP地址的网络标识和主机标识。这种方式CIDR。可变长子网掩码(VLSM)。

全局地址与私有地址:

私有地址,10.0.0.0~10.255.255.255(10/8) A类,172.16.0.0~172.31.255.255 (172.16/12) B类,192.168.0.0 ~ 192.168.255.255 (192.168/16) C类,此地址之外为全局IP。

全局地址,私有地址和全局IP通信,用NAT。


四.路由控制

发送数据包,通过路由转发到达目标地址。

4.1路由控制表

记录着网络地址与下一步应该发送至路由的地址。

默认路由:

路由表中任何一个地址都能与之匹配记录。标记0.0.0.0/0或default。并不是指IP地址0.0.0.0。

主机路由:

IP地址/32,主机路由,会使路由表膨大,负荷增加。

环回地址:

同一台计算机上的程序之间进行网络通信所使用的一个默认地址。

4.2路由控制表聚合

利用网路地址的比特分布可以有效地进行分层配置。对内即使有多个子网掩码,对外呈现出也是同一个网络地址。

tcp/ip系列--IP协议_ipv6_02


五.IP分割处理与再构成处理

数据链路不同,最大传输单元(MTU)则相异。

任何一台主机都有必要对IP分片进行相应的处理。分片往往在网络上遇到比较大的报文无法一下子发送出去时才会进行处理。

路径MTU发现,弥补分片机制不足。


六.IPv6

6.1简介

为了根本解决IPv4地址耗尽的问题而被标准化的网际协议。IPv4的地址长度为4个8位字节,即32比特。而IPv6地址长度则是原来的4倍,即128比特,一般写成8个16位字节。

6.2特点


  • IP地址的扩大与路由控制表聚合。
  • 性能提升,包首部长度采用固定的值(40字节),不再采用首部检验码。路由器不再做分片处理(通过路径MTU发现只由发送端主机进行分片处理)。
  • 支持即插即用功能,即使没有DHCP服务器也可以实现自动分配IP地址。
  • 采用认证与加密功能,应对伪造IP地址的网络安全功能以及防止线路窃听功能(IPsec)。
  • 多播、Mobile IP成为扩展功能。

6.3地址

举例,连续0,用两个冒号(::)隔开。

tcp/ip系列--IP协议_ipv6_03


结构

tcp/ip系列--IP协议_ipv4_04

6.4全局单播地址

世界上唯一的一个地址。

tcp/ip系列--IP协议_互联网_05

6.5链路本地单播地址

同一个数据链路内唯一的地址,它用于不经过路由器,在同一个链路中通信。通常接口ID保存64比特版的MAC地址。

tcp/ip系列--IP协议_ipv6_06

6.6唯一本地地址

唯一本地地址是不进行互联网通信时所使用的地址。

tcp/ip系列--IP协议_tcp/ip_07

6.7IPv6分段处理

IPv6的分片处理只在作为起点的发送端主机上进行,路由器不参与分片。


七.IPv4首部

tcp/ip系列--IP协议_ip_08

版本:4比特构成,表示标识IP首部的版本号。

首部长度:4比特构成,表示IP首部大小。

区分服务(TOS:Type Of Service):8比特构成,用来表明服务质量,这个值通常由应用指定。

DSCP段与ECN段:DSCP(差分服务代码点)是TOS的一部分,进行质量控制,3~5位的值为0,0~2位则被称作类别选择代码点。

tcp/ip系列--IP协议_ipv4_09

ECN(显示拥塞通告)用来报告网络拥堵情况,由两个比特构成。第6位的ECT用以通告上层TCP层协议是否处理ECN。如果出现网络拥堵的情况,将CE位设置为1。

tcp/ip系列--IP协议_tcp/ip_10

总长度:IP首部与数据部分合起来的总字节数。该字段长16比特。

标识:由16比特构成,用于分片重组。同一个分片的标识值相同,不同分片的标识值不同。

标志:有3比特构成,表示包被分片的相关信息。

tcp/ip系列--IP协议_ip_11

片偏移:由13比特构成,用来标识被分片的每一个分段相对于原始数据的位置。

生存时间:8比特构成,以秒为单位记录当前包在网络上应该生存的期限。实际中它是指可以中转多少个路由器。

协议:由8比特构成,表示IP首部的下一个首部隶属于哪个协议。

首部校验和:由16比特(2个字节)构成,主要用来确保IP数据报不被破坏。

源地址:32比特(4个字节)构成,发送端ip地址。

目的地址:32比特(4个字节)构成,接收端ip地址。

可选项:长度可变,通常只在进行实验或诊断时使用。(安全级别,源路径,路径记录,时间戳)。

填充:填充物。在有可选项的情况下,首部长度可能不是32比特的整数倍。通过向字段填充0,调整为32比特的整数倍。

数据:存入数据,将IP上层协议的首部也作为数据进行处理。


八.IPv6首部格式

IPv6中为了减轻路由器的负担,省略了首部校验和字段。因此路由器不再需要计算校验和,从而也提高了包的转发率。

tcp/ip系列--IP协议_ipv6_12

版本:与IPv4一样,由4比特构成。IPv6其版本号为6,因此在这个字段上的值为"6"。

通信量类:相当于IPv4的TOS字段,也有8比特构成。

流标号:20比特构成,准备用于服务质量(QoS)控制。只有流标号、源地址以及目标地址三项完全一致时,才被认为是一个流。

有效载荷长度:包的数据部分。IPv4的TL(Total Length)指包括首部在内所有长度。然而IPv6中的这个不包括首部,只表示数据部分的长度。

下一个首部:相当于IPv4中的协议字段。由8比特构成。

跳数限制:由8比特构成。与IPv4中的TTL意思相同。

源地址:128比特构成。表示发送端IP地址。

目标地址:128比特构成。表示接收端IP地址。

IPv6扩展首部:IPv6的首部长度固定,无法将可选项加加入其中。取而代之的是通过扩展首部对功能进行了有效扩展。扩展首部通常介于IPv6首部与TCP/UDP首部中间。在IPv4中可选项长度固定为40字节,但是在IPv6中没有这样的限制。


参考《图解TCP/IP》