【网络】网络层协议:IP(待更新)

文章目录

  • IP 协议
      • 1. 基本概念
      • 2. IP 报头解析
  • IP 的 网段划分:

IP 协议

IP 不是面向字节流的,而是发送接收一个个的数据包


1. 基本概念

主机:配有 IP 地址的设备
路由器:配有单个或多个 IP 地址,且能进行路由节点控制
节点:主机和路由器的统称


2. IP 报头解析

【网络】网络层协议:IP(待更新)_第1张图片
4 位版本号(version)

  • 指定 IP 协议的版本。对于 IPv4 来说,就是 4(用 4 个字节,32 个比特位,标识全球互联网唯一的主机)。

    公用网络协议中,极少使用 IPv6
    

4 位头部长度(header length)

  • 表示该 IP 头部有多少个 32 位 bit(有多少个 4 字节); 所以 IP 头部最大长度是 15 * 4 = 60 个字节

8 位服务类型(Type Of Service)

  • 3 位优先权字段(已经弃用),4 位 TOS 字段,和 1 位保留字段(必须置为0)。
  • 4 位 TOS 分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突, 只能选择一个。
  • 对于 ssh / telnet 这样的应用程序,最小延时比较重要;对于 ftp 这样的程序,最大吞吐量比较重要。

16 位总长度(total length)

  • IP 数据报整体占多少个字节。

16 位标识(id)

  • 唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个 id 都是相同的。

3 位标志字段

  • 第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。
  • 第二位置为 1 表示禁止分片,这时候如果报文长度超过 MTU,IP 模块就会丢弃报文。
  • 第三位表示 “更多分片”,如果分片了的话,最后一个分片置为 1,其他是 0。类似于一个结束标记。

13 位分片偏移(framegament offset)

  • 是分片相对于原始 IP 报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是 8 的整数倍(否则报文就不连续了)。

8 位生存时间(Time To Live, TTL)

  • 数据报到达目的地的最大报文跳数。一般是 64,每次经过一个路由,TTL -= 1,一直减到 0 还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。

8 位协议

  • 表示上层协议的类型,即有效载荷是什么报文。

16 位头部校验和

  • 使用 CRC 进行校验,来鉴别头部是否损坏。

32 位源地址和 32 位目标地址

  • 表示发送端和接收端。

选项字段(不定长, 最多 40 字节):略


IP 的 网段划分:

过去曾经提出一种划分网络号和主机号的方案,把所有 IP 地址分为五类。
【网络】网络层协议:IP(待更新)_第2张图片

A类 0.0.0.0到127.255.255.255 
B类 128.0.0.0到191.255.255.255 
C类 192.0.0.0到223.255.255.255 
D类 224.0.0.0到239.255.255.255 
E类 240.0.0.0到247.255.255.255

但这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址,导致B类地址很快就分配完了,而A类却浪费了大量地址。

针对这种情况提出了新的划分方案,称为 CIDR(Classless Interdomain Routing)

  • 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号

  • 子网掩码也是一个 32 位的正整数,通常用一串 “0” 来结尾

    子网掩码格式:左半部分全 1,右半部分全 0。
    
    1 的部分就是网络号的占位,0 的部分就可以用来进行子网划分,
    如此相比分类网段,就更加灵活了。
    
  • 将 IP 地址和子网掩码进行 “按位与” 操作,得到的结果就是网络号

  • 网络号和主机号的划分与这个 IP 地址是 A 类、B 类还是 C 类无关

你可能感兴趣的:(网络,网络,tcp/ip,网络协议)