系列文章目录
什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层——多路复用和多路分用
传输层——UDP简介
传输层——可靠数据传输原理之Rdt协议
传输层——可靠数据传输之流水线机制与滑动窗口协议
传输层——TCP特点与段结构
传输层——TCP的可靠数据传输
TCP连接管理(图解三次握手和四次挥手)
传输层——拥塞控制原理与解决方法
TCP的拥塞控制机制
网络层服务与核心功能
网络层服务模型——虚电路网络
网络层服务模型——数据报网络
- 系列文章目录
- Internet网络的网络层
- IP协议
- IP数据报(分组)结构
Internet网络的网络层
先来概括性地来看一些Internet网络层的主要内容:
Internet网络是一个数据报网络,它实现的主要功能是路由转发。主机或路由器这些网络设备根据路由协议或算法进行路径的选择,然后将这些路径信息存储在转发表(路由表),这个表就供IP协议去处理和转发分组。在处理的过程中难免会出现一些差错,这个时候,就涉及到把一些差错信息传输给一些路由器或主机,这时就需要另外一个非常重要的协议,即ICMP协议,它主要用于伴随IP协议的运行,提供一些差错报告或在路由器、主机之间提供一些“信令”信息的传输。所以ICMP协议从一定程度上可以看作是IP协议的伴随协议。也就是说一般实现IP协议的同时也要实现ICMP协议。
IP协议
IP数据报(分组)结构
IP数据报也称为IP分组。从结构上来说,主要包括两部分。分别是首部/头部和数据部分。数据是IP协议封装的上层的或其它层协议的数据分组,比如说TCP段。
将IP数据报展开来看,头部包括很多域或者说字段。作为头部,又可以分为两部分,一部分是固定部分,另一部分是可变部分。固定部分就是说这部分在所有IP数据报中的大小都是固定的。这个固定的部分总共是20个字节(一行32位即4字节,固定部分占了5行,就是5*4=20字节)。可变部分的长度是不确定的。可以是0,个,也可以是多个。
下面来逐一看看一个IP数据报每个字段的主要含义:
- 版本号字段占用4个比特位,标识IP协议的版本。如果是IPv4,就是4,如果是IPv6,就是6
- 首部长度字段占4位,给出整个IP分组的首部长度。计算的时候以4字节为单位,也可以理解为一行(因为一行32位,就是4字节)。如果这个字段的值为5,那么需要乘以4才能得到IP分组首部长度的字节数,也就是20字节
- 服务类型(TOS)字段占8位:最初的目的是这个IP分组在网络传输过程中期望获得哪种类型的服务
- 1998 年这个字段改名为区分服务,也就是让网络能够区别对待不同的IP数据报,并且提供不同类型的服务。比如某些数据报优先转发,某些数据报之后转发
- 这个字段只有在网络提供区分服务(DiffServ)时才有效
- 在目前IPv4网络中,一般情况下不使用该字段,通常IP分组的该字段(第2字节)的值为00H
- 总长度字段占16位:IP分组的总字节数(首部+数据)。注意它是以字节为单位的。
- 因为字段长度是16位,所以所能表示的最大IP分组的总长度是65535B。去掉最小的头部长度也就是20B,那么IP分组可以封装的最大数据:65535-20=65515B。当然这只是理论上,在实际中不会有这么大的分组
- 标识、标志位、片偏移与IP分组的分片有关,后面介绍
- 生存时间(TTL,Time To Live,也叫做存活时间)字段占8位,用来标识IP分组在网络中最多可以通过的路由器数(或跳步数)
- 路由器转发一次分组,TTL减1,如果TTL=0,路由器则丢弃该IP分组,这时会向源主机发送一个ICMP报文
- 协议字段占8位:指示IP分组封装的是哪个协议的数据包
- 实现复用/分解
- 比如, 6为TCP,表示封装的为TCP段;17为UDP,表示封装的是 UDP数据报
- 首部校验和字段占16位:实现对IP分组首部的差错检测
- 计算校验和时,该字段置全0
- 运算算法与前面讲的UDP校验和的计算算法是一样的,采用反码算数运算求和,和的反码作为首部校验和字段
- 首部校验和在每一次转发也就是一跳的时候都要重新计算,重新校验。因此首部校验和是逐跳计算、逐跳校验的
- 源IP地址、目的IP地址字段各占32位:分别标识发送分组 的源主机/路由器(网络接口)和接收分组的目的主机/路由器 (网络接口)的IP地址
- 选项字段占长度可变,范围在1~40B之间:携带安全、源 选路径、时间戳和路由记录等内容
- 实际上很少被使用,也就是0
- 填充字段占长度可变,范围在0~3B之间:目的是补齐整个 首部,符合32位对齐,即保证首部长度是4字节的倍数