TCPIP详解Protocol 读书笔记(三) IP协议讲解

TCP/IP详解:Protocol 读书笔记(三)

Chapter3 IP:网际协议

IP协议

IP提供不可靠、无连接的数据报传送服务。

不可靠是指它不能保证IP数据报能成功地到达目的地。IP协议采用尽力而为的方式,但是有可能会丢失数据报。例如某个路由器的缓冲区暂时被占满,IP协议会丢弃该数据报,然后发送ICMP消息给源端。

无连接是指IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。IP数据报可以不按照发送顺序进行接收。如果同一个源端向相同的目的地址发送两个连续的数据报(先为A,然后为B),每个数据报都是独立进行路由选择,可能选择不同的路由路线,因此B可能在A达到前先到达目的地址。

IP数据报

TCPIP详解Protocol 读书笔记(三) IP协议讲解

IP首部长为20个字节。其中比较重要的字段是TTL(time to live)生存时间字段,这个字段代表IP数据报可以经过的最多路由器数。TTL的初始值由源端主机设置(通常为32或64),一旦经过一个处理它的路由器,TTL值就减1.当TTL=0时,IP数据报就会被丢弃,并发送ICMP报文通知源端主机。

IP路由选择

简单来说,IP从TCP、UDP、ICMP等接收数据报(即在本地生成的数据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。IP层在内存中有一个路由表,当收到一份数据报并进行发送时,都要对该表搜索一次。当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址。如果是,数据报被送至由IP首部协议字段所指定的协议模块进行处理。如果数据报的目的IP不是这些地址,那么如果IP层被设置为路由器的功能,那么就对IP数据报进行转发,如果没有路由器功能,则IP数据报被丢弃。

IP路由选择是逐跳进行的。IP并不知道到达任何目的地址的完整路径(除了直接与目的主机相连的)。所有的IP路由选择都只为数据报传输提供下一站路由器的IP地址。

IP路由选择主要完成以下功能:

  1. 搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号与主机号完全匹配)。如果匹配,则把IP数据报发送给该表目指定的下一站路由器或者直接连接的网络接口。
  2. 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把数据报发送给该表目指定的下一站路由器或者直连的网络接口。目的网络上的所有主机都可以通过这个表目来处理。
  3. 搜索路由表,寻找标为“默认(default)”的表目。如果找到,则把数据报发送给该表目指定的下一站路由器。如果上面这些步骤均未能成功,那么该数据报则会被丢弃,无法被传送。

注意:路由表匹配优先级为完整主机地址、网络地址、默认路由。

子网掩码

我们知道,IP地址中包含网络号、主机号。但是现在所有的主机都要求支持子网编址,不能够把IP地址看成由单纯的一个网络号和一个主机号组成,而是进一步把主机号再细分为一个子网号和一个主机号。因为A类和B类地址给主机号预留了太多的空间,有些浪费,一般用不了这么多主机,所以又搞出来了子网号。

那么子网掩码的作用就是区分网络号、子网号、主机号。通过比较网络号就可以知道两台主机是否处于同一区域的网络中。子网掩码是一个32bit的值,其中值为1的bit留给网络号和子网号,为0的bit留给主机号。

TCPIP详解Protocol 读书笔记(三) IP协议讲解

给定IP地址和子网掩码后,主机就可以确定IP数据报的目的端是:(1)本子网上的主机;(2)本网络中其他子网中的主机;(3)其他网络上的主机。

根据本地IP地址,就可以判别其是否为A、B、C类地址,也就知道网络号和子网号之间的分界线。

例:

我们的主机地址是140.252.1.1,子网掩码是255.255.255.0

  • 如果目的IP地址是140.252.4.5。此时将IP地址和子网掩码转为二进制,做位与计算,然后再转化为十进制数,我们可以得知源端与目的端的网络号(140.252)是相同的,但是子网号(1和4)不同。
  • 如果目的IP地址是140.252.1.22,那么网络号相同,子网号也相同,但是主机号不同。
  • 如果目的IP地址是192.43.235.6,那么网络号不同。

本章的重点就是学习IP路由选择,但是书中讲解不够透彻,详细。后面会单独出两篇笔记理解一下IP路由选择与路由表。