网际协议 -- IP

2016-01-01 22:23:20   最后更新: 2016-01-02 21:18:48   访问数量:561




之前的介绍中,我们看到,IP 是 TCP/IP 协议族中最为核心的协议,所有的 TCP、UDP、ICMP、IGMP 数据都以 IP 数据报的格式传输

TCP/IP 协议族简介

 

IP 是一个不可靠、无连接的数据报传输的网络层协议,他不能保证 IP 数据报的成功传输,如果发生错误,则丢弃该数据报,并发送 ICMP 消息给发出端

IP 并不维护任何关于后续数据报的状态信息,每个数据报都是相互独立的,因此,IP 数据报可以不按发送顺序接收

 

IP 首部在之前的博客中有介绍:

TCP/IP 协议族简介

 

 

 

图中,每个 32 位都被拆成了若干部分,这些部分的次序在具体的主机中的存储实现是各不相同的,每个实现都被成为主机序,而协议中规定的标准顺序被称为网络序

 

  • TOS

8 位的 TOS 代表服务类型,依次是:

  1. 3bit 的优先级子字段(已被忽略)
  2. 4bit 的 TOS 子字段(包含最小时延、最大吞吐量、最高可靠性和最小费用),在 4bit 的 TOS 子字段中,只能有 1bit 被置为 1,如果 4bit 均为 0,则为一般服务,大多数 TCP/IP 实现都不支持 TOS 特性
  3. 1bit 未用位必须置为 0

 

  • TTL

8 位的 TTL 字段表示生存时间,他设置了数据报可以经过的最多路由器数,源主机设置他的初始值,没经过一个路由器就会将该值减 1,直到他减为 0 则会将该数据报丢弃

 

  • 选项

在 20 字节首部外的选项字段是可变长的,是一个可选的信息字段,一般很少使用,也不是所有主机和路由器都支持这些选项,一般长度为 32bit 的整数倍

 

IP 路由选择是很简单的,如果目的主机与源主机直接相连如点对点链路,或都在一个共享网络上,如以太网或令牌环网,那么 IP 数据报会被直接送到目的主机上,否则,主机把数据发送到一个默认路由器上,由路由器来转发该数据报

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

路由表包含以下信息:

  1. 目的 IP 地址
  2. 下一站路由器的 IP 地址或直接连接的网络 IP 地址
  3. 标志,用来指明目的 IP 地址是网络地址还是主机地址,下一站是路由器还是直接相连的接口
  4. 数据报传输接口

 

如果数据报的目的地址是本机的 IP 地址或者 IP 广播地址,则直接发送到由 IP 首部协议字段所指定的协议模块进行处理,否则进行判断:如果 IP 层被设置为路由器的功能,那么久对数据报进行转发,否则丢弃数据报

路由表有一个默认表项,如果全部匹配失败则会按照默认表项发往默认的路由器

 

32 位的 IP 地址根据拆分方式不同划分为五类:

 

 

现在所有的主机都要求支持子网编址,他们将 A 类和 B 类地址中的主机号拆分成子网号和主机号两部分,如通常对于一个 B 类地址的 16 位主机号拆分成 8 位子网号 + 8 位主机号的形式,这样每个子网可以拥有 254 台主机,这样,对于点分十进制的表示,可以快速找到子网号,而实现中,子网号就是子网 IP 地址,这样在得到 IP 地址后,可以立即获得子网的 IP 地址

使用子网的好处是他可以缩小 Internet 路由表的规模,路由表只需要保存目标地址的前 16 位即可

用于子网寻址的路由器被称为 gateway,也就是网关,他根据目的 IP 地址找到子网号及对应的实际接口

 

由于对地址中的主机号的划分是依赖于实现的(虽然绝大部分实现是将 B 类地址的 16bit 主机号拆分成 8bit 子网号 + 8bit 主机号,但这并不绝对),因此主机需要知道哪些比特位被用作子网号,哪些比特位被用作主机号,因此子网掩码应运而生

子网掩码是一个 32bit 的值,为 0 则意味着 IP 地址中的相应比特位被用于主机号,为 1 则意味着 IP 地址中的相应比特位被用于网络号及子网号

上面说的将 B 类地址的 16bit 主机号拆分成 8bit 子网号 + 8bit 主机号的实现对应的子网掩码为:255.255.255.0

 






技术帖      ip      技术分享      ip地址      子网      子网掩码      gateway      网关      默认网关      路由器      路由      ifconfig      netstat      子网寻址     


京ICP备15018585号