《TCP/IP详解》学习笔记-第3章 IP:网际协议

1、概述

IP是TCP/IP协议族中最为核心的协议。所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输。IP提供不可靠,无连接的数据报传送服务。
(1)不可靠:它不能保证IP数据报能成功的到达目的地。
(2)无连接:IP并不维护关于后续数据报的状态信息。每个数据报的处理都是相互独立的。

2、IP首部

普通的IP数据报首部为20个字节,除非含有选项字段。
《TCP/IP详解》学习笔记-第3章 IP:网际协议_第1张图片

如图,还记得那8位的TTL字段是做什么的么?这个字段规定该数据包在穿过多少个路由之后才会被抛弃(这里就体现出来IP协议包的不可靠性,它不保证数据被送达),某个ip数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64,Tracerouter这个工具就是用这个原理工作的,tranceroute的-m选项要求最大值是255,也就是因为这个TTL在IP协议里面只有8bit。

IP首部中包括如下内容:
(1)版本号:目前的版本号为4,即IPv4
(2)首部长度:指的是首部占32bit字的数目,包括选项长度
(3)服务类型(TOS):(现在大多数的TCP/IP实现不支持TOS特性)4bit的TOS分别代表:最小延迟,最大吞吐量,最高可靠性和最小费用。4bit只能置其中1bit,如果4bit均为0,则为一般服务。
(4)总长度字段:整个IP数据报的长度,以字节为单位。总长度是IP首部中必要的内容。
(5)标识字段:唯一地标识主机发送的每一份数据报。
(6)标志字段:会在IP分片和重组的时候使用到。标志字段的最低位记为MF,中间的一位记为DF。MF=1表示后面还有分片。DF=0时,才能进行分片。
(7)TTL(time-to-live):设置了数据可以经过的最多的路由器数,每经过一次路由器,该值-1.
(8)首部检验和:是根据IP首部计算的检验和码。
(9)源地址:
(10)目的地址:
(11)任选项:(一般没有)包括以下内容:a.安全和处理限制、b.记录路径(每个路由器都记录它的IP地址)、c.时间戳、d.宽松的源站选路、e.严格的源站选路

3、IP路由选择

1、路由表

IP层在内存中有一个路由表。路由表中的每一项都包含下面这些信息:
(1)目的IP地址。可以是完整的主机地址,也可以是网络地址,由标志字段来指定。
(2)下一站(或者下一跳)路由器的IP地址。
(3)标志。其中一个标志指明目的IP地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真的下一站路由器,还是一个直接相连的接口。
(4)为数据报的传输指定一个网络接口。

2、路由选择

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

当一个IP数据包准备好了的时候,它是如何选择一个合适的路径将数据包送到目的地的?

1)最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以。至于是怎么直接传递的,这就要靠ARP协议。

2)一般的情况是,主机通过若干个路由器(router)和目的主机连接。那么路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。路由器或者主机将会用如下的方式来处理某一个IP数据包:
(1)如果IP数据包的TTL(生命周期)已到,则该IP数据包就被抛弃
(2)搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机
(3)搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码”的协助。如果找到路由器,则将该包发向路由器。
(4)搜索路由表,如果匹配同子网路由器失败,则匹配同网号路由器,如果找到路由器,则将该包发向路由器。
(5)搜索路由表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包。
(6)如果都失败了,就丢掉这个包。

4、子网寻址

地址格式为:

IP地址=网络地址+主机地址

IP地址=网络地址+子网地址+主机地址。

《TCP/IP详解》学习笔记-第3章 IP:网际协议_第2张图片

(1)网络号:用于识别主机所在的网络;
(2)主机号:用于识别该网络中的主机。

IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。
A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,A类地址的第一位总是0,B类地址的前两位总是10,C类地址的前三位总是110。
《TCP/IP详解》学习笔记-第3章 IP:网际协议_第3张图片

子网掩码:

除了I P 地址以外,主机还需要知道有多少比特用于子网号及多少比特用于主机号。这是在引导过程中通过子网掩码来确定的。

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

《TCP/IP详解》学习笔记-第3章 IP:网际协议_第4张图片

如果知道本机的 I P地址,那么就知道它是否为 A类、B类或C类地址(从I P地址的高位可以得知),也就知道网络号和子网号之间的分界线。而根据子网掩码就可知道子网号与主机号之间的分界线

你可能感兴趣的:(《TCP/IP详解》学习笔记-第3章 IP:网际协议)