《TCP/IP详解 卷一:协议》读书笔记--IP:网际协议

3.1、引言

不可靠:它不能保证IP数据报能成功地到达目的地。

无连接:IP并不维护任何关于后续数据报的状态信息。这也说明,IP数据报可以不按发送顺序接收。


3.2、IP首部

4个字节的32 bit值以下面的次序传输:首先是0~7 bit,其次是8~15 bit,然后16~23 bit,最后是24~31 bit。这种传输次序称为big endian字节序。由于TCP/IP首部中所有的二进制整数在网络传输时都要求以这种次序,因此它又称作网络字节序。以其他形式存储二进制整数的机器,如little endian格式,则必须在传输数据之前把首部转换成网络字节序。

目前的协议版本号是4,因此IP有时也称作IPv4.

首部长度指的是首部站32bit 字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60字节。普通IP数据报字段的值是5。

服务类型(TOS)字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0。4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性、最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。

总长度字段是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65525字节。当数据报被分片时,该字段的值也随着变化。

标志字符唯一地标识主机发送的每一份数据报。

TTL(time to live)生存时间字段设置了数据报可以经过的最多路由器数。

协议字段,标志那个协议向IP传送数据。

首部检验和字段是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。ICMP、IGMP、UDP、TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。

为了计算一份数据报的IP检验和,首先把检验和字段置0。然后,对首部中没16bit进行二进制反码求和,结果存在检验和字段中。当收到一份IP数据报后,同样对首部中16 bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1,那么IP就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据并进行重传。

每一份IP数据报都包含源IP地址和目的IP地址。

最后一个字段 是任选项,是数据报中一个可变长的可选信息。目前,这些任选项定义如下:

  • 安全和处理限制(用于军事领域)
  • 记录路径(让每个路由器都记下它的IP地址)
  • 时间戳(让每个路由器都记下它的IP地址和时间)
  • 宽松的源站选路(为数据报指定一系列必须经过的IP地址)
  • 严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能进过其他的地址)

这些选项很少被使用,并非所有的主机和路由器都支持这些选项。

选项字段一直都是以32 bit作为界限,在必要的时候插入值为0的填充字节。这样就保证IP首部始终是32 bit的整数倍(这是首部长度字段所要求的)。


3.3、IP路由选择

IP层在内存中有一个路由表。当收到一份数据报并进行发送时,它都要对该表搜索一次。

当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址。如果确实是这样,数据报就会被送到由IP首部协议字段所指定的协议模块进行处理。如果数据报的目的地址不是这些地址。那么(1) 如果IP层被设置为路由器的功能,就会对数据报进行转发。(2) 数据报被丢弃。

路由表中的每一项包含下面这些信息:

  • 目的IP地址。它既可以是一个完整的主机地址,也可以是一个网络地址
  • 下一站路由器的IP地址,或者有直接连接的网络IP地址
  • 标志。其中一个标志是指IP地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口
  • 为数据报的传输指定一个网络接口

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

1)搜索路由表,需找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或者直接连接的网络接口。

2)搜索路由表,需找能与目的网络号匹配的表目。

3)搜索路由表,寻找标为“默认”的表目。

如果上面这些步骤都没有成功,那么该数据报就不能传送。


3.4、子网寻址


3.5、子网掩码

这个掩码是一个32位bit的值,其中值为1的比特留给网络号和子网络,为0的比特留给主机号。


3.6、特殊情况的IP地址

0表示所有的比特位全为0;-1表示所有的比特位全为1;netid、subnetid和hostid分别表示不全为0或全为1的对应字段。

子网号栏为空表示该地址没有进行子网划分。

我们把这个表分成三个部分。表的头两项是特殊的源地址,中间项是特殊的环回地址,最后四项是广播地址。

表中的头两项,网络号为0,如主机使用BOOTP协议确定本机IP地址时,只能作为初始化过程中的源地址出现。


习题:

3.1、环回地址必须是127.0.0.1吗?

答:不,任何网络ID为127的A类地址都是可行的


3.2、在图3-6中指出两个以上网络接口的路由器。

答:kpno有5个接口:3个点对点链路和2个以太网接口。R10有4个以太网接口。

gateway有3个接口:2个点对点链路和1个以太网接口。netb有1个以太网接口和2个点对点链路。


3.3、子网号为16bit的A类地址与子网号为8bit的B类地址的子网掩码有什么不同?

答:没有区别:作为一个没有再区分子网的C类地址,它们都有一个255.255.255.0的子网掩码。


3.5、子网掩码255.255.0.255是否对A类地址有效?

答:它是合法的,被称为非连续的子网掩码,因为其用于子网掩码的16位是不连续的。但是RFC建议反对使用非连续的子网掩码。


3.7、TCP/IP协议族是基于一种数据报的网络技术,即IP层,其他的协议族则基于面向连接的网络技术。找出数据报网络层提供的三个有点。

答:第一,数据报降低了路由器对连接状态的需求。第二,数据报提供了基本的构件,在它的上面可以构造不可靠的(UDP)和可靠的(TCP)的运输层。第三,数据报代表了最小的网络层的假定,使得可以使用很大范围的数据链路层服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值