文章目录
网络层的作用主要有(1)路径规划(路由选择)。(2)地址管理。
在网络层中IP协议
独自占了大壁江山。所以介绍网络层其实就是在介绍IP协议
。
基本概念:
-
主机:配有 IP 地址,但是不进行路由控制的设备。
-
路由器:即配有 IP 地址,又能进行路由控制。
-
节点:主机和路由器的统称。
一、IP 协议的格式
下图为 IPv4 协议的格式。
4 位版本号(version):指定 IP 协议的版本,对于 IPv4 来说,就是 4,对于 IPv6 来说,就是 6。
4 位首部长度(header length):IP 头部的长度单位是 4 个字节,也就是length * 4 的字节数。4 bit 表示最大的数字是 15,因此 IP 头部最大长度是 60 字节,根据上图可知 IP 头部最短长度是 20 字节。
8 位服务类型(Type Of Service):3 位优先权字段(已经弃用),4 位
TOS
字段,和 1 位保留字段(必须置为 0)。4 位TOS
分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。 对于 ssh / telnet 这样的应用程序,最小延时比较重要,对于 ftp 这样的程序,最大吞吐量比较重要。16 位总长度(total length):IP 数据报整体占多少个字节。 总长度去掉 IP 首部长度,剩下的就是 TCP / UDP 数据包的总长度。如果是 TCP ,去掉 TCP 报头长度,剩下的就是载荷长度(TCP 报头中算不出载荷长度,所以要用这种方法)。
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 位协议:表示上层协议的类型(载荷部分是 TCP 还是 UDP 还是其他的协议)。
16 位首部校验和:使用 CRC 进行校验,来鉴别头部是否损坏。
32 位源 IP 地址和 32 位目的 IP 地址:表示发送端和接收端。为了让我们方便观察,把 32 位的整数通常表示成 “点分十进制”的方式。例如 192.168.2.103。
选项字段(不定长,