本文为计算机网络学习系列读书笔记
网络层分组被称为数据报。
网际协议(Internet Protocol)是TCP/IP体系中最主要的协议之一。IP协议有两个主要的版本:IPv4和 IPv6.
有关IP协议最重要的文档就是互联网标准FRC791:https://www.ietf.org/rfc/rfc791.txt
IPv4的数据报格式
IPv4数据报中包含如下字段信息
-
版本(Version)(4比特):IP协议的版本号。路由器根据此版本号确定如何解释IP数据报的剩余部分。
-
首部长度(Internet Header Length )(4比特):Internet报头的有效长度。
-
服务类型(8比特):表明所想要的服务质量的一种抽象表示,以便使不同类型的数据报相互区分开来。比如实时数据报(如IP电话应用)和非实时流量(如FTP)区分开来。根据Low Delay,High Reliablibity,High Throughput三个指标区分服务类型。
Bits 0-2: Precedence. Bit 3: 0 = Normal Delay, 1 = Low Delay. Bits 4: 0 = Normal Throughput, 1 = High Throughput. Bits 5: 0 = Normal Relibility, 1 = High Relibility. Bit 6-7: Reserved for Future Use. 0 1 2 3 4 5 6 7 +-----+-----+-----+-----+-----+-----+-----+-----+ | | | | | | | | PRECEDENCE | D | T | R | 0 | 0 | | | | | | | | +-----+-----+-----+-----+-----+-----+-----+-----+ Precedence 111 - Network Control 110 - Internetwork Control 101 - CRITIC/ECP 100 - Flash Override 011 - Flash 010 - Immediate 001 - Priority 000 - Routine
-
数据报长度(Total Length)(字节)(16比特):这是IP数据报的总长度(首部20字节+数据N字节)(单位:字节)。因为该字段占16比特,最大长度2^16-1 (65535字节),但实际数据报很少有超过1500字节的,这是因为以太网帧承载的数据不能超过1500字节。而且某些广域网链路的帧可承载的不超过576字节的数据。根据木桶原理,当IP数据报总长度超过整条链路中最小的数据量时(即MTU,Max Transmission Unit),就会出现IP分片。
-
16比特标识(Identification):IP数据报分片时,有发送方指定的一个值,用于帮助组装数据报的各个片段。
-
标志(Flags)(3比特):指明IP数据报是否有分片,以及分片是否是最后一个
Various Control Flags.Bit 0: reserved, must be zero Bit 1: (DF) 0 = May Fragment, 1 = Don't Fragment. Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments. 0 1 2 +---+---+---+ | | D | M | | 0 | F | F | +---+---+---+
-
片偏移量(Fragment Offset)(13比特):指明IP数据报分片的片在整个分片的哪个位置
Identification、flags、fragment offset这三个字段与IP分片有关。 -
寿命(Time to Live)(8比特):表明数据片段在网络中可存在的最长时间,该数据段每转发一次,该值就减1。当减为0时,该数据片段将会被立即丢弃。能有效避免数据报片段在网络无限转发下去。
-
上层协议(Protocol)(8比特):该字段通常仅当一个IP数据报到达其最终目的地时才会有用。该字段值指示了 IP数据报的数据部分应交给哪个特定的运输层协议。例如,值为6表明数据部分要交给TCP,而值为17表明数据要交给UDP。对于所有可能值的列表,参见[IANA Protocol Numbers 2016 ] °
-
首部校验和(Header Checksum)(4比特):用于路由器检测收到的IP数据报中的比特错误
-
源IP地址(Source Address)(32比特):IP数据报源地址
-
目的地址(Destination Address)(32比特):IP数据报目的地址