【TCP/IP协议 卷一:协议】第三章 IP:网际协议

3.1 引言

unreliable不可靠的意思是它并不能保证IP数据报能成功的到达目的地。IP只提供尽力而为的传输服务。
conectionless无连接的意思是IP并不维护任何关于后续数据报的状态信息。整个数据报的处理是相互独立的。即每个数据报都是独立地进行路由选择,可能选择不同的路线。

3.2 IP首部

  • 4个字节的32bit值以下面的次序传输:(1)0-7 bit (2)8-15 bit (3)16-23 bit (4)24-31 bit,这种传输次序称为big endian字节序,因此他又称为网络字节序。
  • 目前的协议版本号是4,因此IP有时也称作IPv4。
  • 服务类型TOS字段:3 bit优先权子字段(已被忽略),4 bit的TOS子字段,1 bit未用位但必须置为0。如果所有的4 bit(TOS字段)都置0,则意味着是一般服务。
  • Telnet 和 Rlogin 这两个交互应用要求最小的传输时延,因此人们主要用来传输少量的交互数据。 FTP文件要求最大的吞吐量。SNMP(网络管理)和路由选择协议要求最高可靠性。NNTP(用户网络新闻)是唯一要求最小费用的应用。
  • 总长度字段是指整个IP数据报的长度,以字节byte为单位,是IP首部中必要的部分。利用首部长度字段和总长度字段可以知道IP数据报中数据内容的起始位置和长度。
  • 标示字段唯一地标识主机发送的每一份数据报。
  • TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数,它指定了数据报的生存时间。TTL的初始值由源主机设置(一般为32 或者 64),一旦经过一个处理它的路由器,值-1,。当字段值为0时,数据报就被丢弃。TTL体现了IP协议的unreliable。
  • 协议字段,被用于对数据报进行分用。可以识别出是哪个协议向IP传送数据。
  • 首部检验和字段是根据IP首部计算的检验和码。具体检验方法参见教材P26-27。
  • 每一份IP数据报都包含源IP地址和目的IP地址,它们都是32 bit的值。

3.3 IP路由选择

特殊情况:(1)目的主机与源主机直接相连(PointToPoint链路) (2)都在同一个共享网络上(以太网或令牌环网) IP直接到达目的主机。
教材P4 介绍了主机和路由器的区别,多接口主机一般不称作路由器,但是也可以具有路由器的功能:单纯的转发数据报。

IP可以从(1)TCP,UDP,ICMP,IGMP接收数据报(即在本地生成的数据报) (2)从一个网络接口接收数据报(待转发的数据报) 进行发送。
IP路由选择是逐跳逐跳(hop-by-hop)的进行,IP内存中有一个路由表,当接收到一份数据报之后,对该表进行搜索:

  • (1)搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号均匹配),找到后由标志字段的值决定发往下一跳路由器或者网络接口。
  • (2)步骤1 missed,搜索路由表,寻找能与目的网络号所匹配的表目,找到后由标志字段的值决定发往下一跳路由器或者网络接口。
  • (3)步骤1 2 missed,搜索路由表,寻找标为“默认”的表目,找到后发往表目指定的下一跳路由器。
  • (4)以上均失败,向生成数据报的application发送一个“不可达”的错误。

当接收一份来自某个网络接口的数据报时(待转发的数据报),IP先检查是否是本机的IP地址之一或者IP广播地址,是的话数据报被送到IP首部协议字段所指定的协议模块进行处理。如果不是,if(1)IP层被设置为路由器的功能,进行转发数据报的工作 else(2)数据报被丢弃。

3.4 子网寻址

  • 现在所有的主机都支持子网编址,把原来地址的主机号分为一个子网号和一个主机号。
  • 从InterNIC获得某类IP网络号以后,就由当地的管理员进行分配,一般采用自然的划分方式,对于B类地址来说,把留给主机号的16 bit中的8 bit分配给子网地址,剩下的8 bit作为主机号。
  • 子网对于外部路由器来说隐藏了内部网络结构的细节。但是子网对于子网内部的路由器是不透明的。
  • 与30个C类地址相比,用1个包含30个子网的B类地址的好处是:缩小了Internet路由表的规模。即子网划分缩短了路由表的规模。

3.5 子网掩码

  • 主机在引导过程中通过子网掩码确定有多少比特分配给子网号,有多少比特用于主机号。
  • 子网掩码经常用十六进制表示,特别是当界限不是一个字节(8 bit)时,因为子网掩码是一个比特掩码。
    给定IP地址和子网掩码之后,主机能够确定IP数据报的目的是:
  • (1)本子网上的主机
  • (2)本网络中其他子网的主机
  • (3)其他网络中的主机。
  • 知道IP地址之后,可以根据它的高位得知它是A类或者B类或者C类地址。也就是子网号和网络号的分界线
  • 知道子网掩码之后,可以知道子网号和主机号之间的分界线。
  • 子网掩码是一个32 bit的值,其中值为1的bit留给网络号和子网号,值为0的bit留给主机号。

做个这样的比方:
有很多人住在很多不同的小区里面,小区类比于子网,人类比于主机,比如说我们要找到幸福小区的陈某某同学,那么我们找的顺序是:先找到幸福小区,再找到陈某某同学。
小区有大有小,那么这通过小区的户口来决定,小区的户口类比于子网掩码。

举典型的例子:
IP 中前 24 位代表子网号,后 8 位代表主机号。
所以子网掩码就是 24 个 1(代表前 24 位是子网部分),加 8 个 0(后 8 位是主机部分)。
如果沿用 IP 的标识方式,就是 255.255.255.0 。
每一个 255 对应 8 个二进制 1,最后一个 0 对应 8 个二进制 0。
该子网可以容纳最多 256 台主机,也就是主机号从 0 到 255。

2016/7/24

原文地址:https://www.cnblogs.com/qq952693358/p/5694425.html