学习笔记——IP地址网络协议——网络层(IP)协议

一、网络层(IP)协议

**网络层(被称为IP层)**但网络层协议并不只是IP协议,还包括ICMP(Internet Control Message Protocol)协议、IPX(Internet Packet Exchange)协议等。

1、IP协议

IP(Internet Protocol)本身是一个协议文件的名称,该协议文件的内容非常少,主要是定义并阐述了IP报文的格式。

经常被提及的IP,一般不是特指IP(Internet Protocol)这个协议文件本身,而是泛指直接或间接与IP协议相关的任何内容。

网络层位于数据链路层与传输层之间。网络层中包含了许多协议,其中最为重要的协议就是IP协议。网络层提供了IP路由功能。理解IP路由除了要熟悉IP协议的工作机制之外,还必须理解IP编址以及如何合理地使用IP地址来设计网络。

**IP协议有版本之分,分别是IPv4和IPv6。**目前,Internet上的IP报文主要都是IPv4报文,但是逐步在向IPv6过渡。若无特别声明,本章所提及的IP均指IPv4。

Type=0x0800 代表IPV4报头。可变报头,最小是20B ,最大:60B

**IPv4(Internet Protocol Version 4)**协议族是TCP/IP协议族中最为核心的协议族。它工作在TCP/IP协议栈的网络层,该层与OSI参考模型的网络层相对应。

IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng

(IP Next Generation)。它是Internet工程任务组IETF(Internet Engineering Task Force)设计的一套规范,是IPv4(Internet Protocol Version 4)的升级版本。

总结:

IP 协议:[定位地址=寻址转发]

实现部分的QOS功能

实现上层数据的分片功能

实现IP头部的校验

基于TTL实现网络中的防环

2、数据封装

应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该

层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。

如上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段);数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包);数据包被传递到数据链路层,封装数据链路层报头和尾部得到的PDU被称为Frame(数据帧);最后,帧被转换为比特,通过网络介质传输。这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装

本章节我们主要讨论数据在网络层的封装,如果封装为IP协议,则被称为IP Packet(IP数据包)。

4、IPV4报头

(1)IPV4报文格式

IP Packet(IP数据包),其包头主要内容如下∶

**Version版本∶**4 bit,4∶表示为IPv4; 6∶表示为IPv6。

**Header Length首部长度∶**4 bit,代表IP报头的长度(首部长度),如果不带Option字段,则为20,最长为60。

**DS Field:**定义优先级

**DSCP:**区分服务 后期结合QOS使用的 [不在QOS场景下 字段无意义]

**Type of Service∶**8 bit,服务类型。优先级,越高越先处理。只有在有QoS差分服务要求时,这个字段才起作用。

**Total Length∶**16 bit,总长度,整个IP数据包的长度(IP报头+上层数据 [总长度-IP报头长度=上层数据] )。

Identification∶ 16 bit,标识,分片重组时会用到该字段。

Flags∶ 3 bit,标志位。

**Fragment Offset∶**12 bit,片偏移,分片重组时会用到该字段。

**TTL(Time to Live)****∶**8 bit,生存时间。

**Protocol∶**8 bit,协议∶下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理。

常见值∶

1: ICMP, Internet Control Message; 2: IGMP, Internet Group Management;

6: TCP , Transmission Control Protocol; 17: UDP, User Datagram Protocol。

Header Checksum**∶**16 bit,首部检验和。

Source IP Address**∶**32 bit,源IP地址。

Destination IP Address**∶**32 bit,目的IP地址。

**Options∶**可变,选项字段。

**Padding∶**可变,填充字段,全填0。

(2)数据包分片

当数据包比链路MTU大时,将报文分割成多个片段的过程叫做分片

网络中转发的IP报文的长度可以不同,但如果报文长度超过了数据链路所支持的最大长度,则报文就需要分割成若干个较小的片段才能够在链路上传输。

**Identification∶**16 bit,发送主机赋予的标识,分片重组时会用到该字段。

**Flags∶**3 bit,标志位(标识)

DF**:Dont't fragment:**不分片位[应用开发,本身制定了]

DF=0 代表该数据可以进行分片。保留段位∶0,保留。

DF=1 代表该数据不可以分片,数据大于MTU 单DF=1,则无法分片,数据丢弃。

**不分段位∶**1表示"不能分片"; 0表示"能分片"。

**MF:**更多分片

MF=1,表示"后面还有分片";

MF=0,表示"代表后方没有分片了,接受者可以重组"

**Fragment Offset∶**12 bit,片偏移,分片重组时会用到该字段。指出较长的分组在分片后,

该片在原分组中的相对位置,与更多段位组合,帮助接收方组合分段的报文。

>分片后,子分片会保留和原始分片相同的IP报头。

>分片后,除原始分片之外,其他的子分片都不会携带上层的协议报头[icmp-传输层][一般指最后一个]

(3)协议号(Protocol)

IP报文头中的协议号字段标识了将会继续处理该报文的协议。即指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上报给哪个进程处理。

目的端的网络层在接收并处理报文以后,需要决定下一步对报文如何处理。IP报文头中的协议字段标识了将会继续处理报文的协议。

该字段可以标识网络层协议,也可以标识上层协议,

  • ICMP (Internet Control Message Protocol,因特网控制报文协议,对应值0x01)1=ICMP

  • TCP (Transmission Control Protocol,传输控制协议,对应值0x06) 6=TCP

  • UDP (User Datagram Protocol,用户数据包协议,对应值0x11) 17=UDP

  • OSPF (Open Shortest Path First,开放式最短路径优先,对应值) 89=OSPF

(4)生存时间(Time to Live , TTL)

TTL字段设置了数据包可以经过的路由器数目(三层设备)[自带防环手断]。

防止IP数据包在网络内无休止的传输,一旦经过一个路由器(三层设备),TTL值就会减1,当该字段值为0时,数据包将被丢弃。

**防环:**规定特定数值255、128、64[不同的厂商不一样] 当TTL减为1后,数据会丢弃,并且向源端发送一个TTL超时。

**破环:**无法消除环路 -->结合 工程师在配置时合理化的配置

利用TTL特性,可以实现路由跟踪技术,排错的重要方法之一!

Ping -i 或 Tracert:

**Time to Live∶**8 bit,生存时间。可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。

报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞。

为避免环路导致的网络拥塞,IP报文头中包含一个生存时间TTL(Time To Live)字段。报文每经过一台三层设备,TTL值减1。初始TTL值由源端设备设置。当报文中的TTL 降为0时,报文会被丢弃。同时,丢弃报文的设备会根据报文头中的源IP地址向源端发送ICMP错误消息。(注意∶网络设备也可被配置为不向源端发送ICMP错误消息。)

Head checksum **:**头部校验和 [E2=FCS] [类似]

**FCS:**所有 **Check-sum:**校验IP报头的头部


整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun 暗号:CSDN】

相关推荐
行云流水剑26 分钟前
【学习记录】Element UI导入报错 * element-ui/lib/theme-chalk/index.css in ./src/main.js
css·学习·ui
爱意随风起风止意难平2 小时前
003 flutter初始文件讲解(2)
学习·flutter
东京老树根3 小时前
SAP学习笔记 - 开发18 - 前端Fiori开发 应用描述符(manifest.json)的用途
笔记·学习
hgdlip3 小时前
电脑的ip地址会自动变怎么办?原因解析和解决方法
运维·网络·tcp/ip·电脑
虾球xz3 小时前
CppCon 2014 学习:C++ Memory Model Meets High-Update-Rate Data Structures
java·开发语言·c++·学习
m0_678693333 小时前
深度学习笔记25-RNN心脏病预测(Pytorch)
笔记·rnn·深度学习
水水沝淼㵘3 小时前
嵌入式开发学习日志(linux系统编程--系统编程之 进程间通信IPC)Day32
linux·运维·学习
我的golang之路果然有问题3 小时前
快速了解GO+ElasticSearch
开发语言·经验分享·笔记·后端·elasticsearch·golang
凤年徐3 小时前
【数据结构初阶】顺序表的应用
c语言·开发语言·数据结构·c++·笔记·算法·顺序表
半导体守望者5 小时前
英福康INFICON VGC501, VGC502, VGC503 单通道、双通道和三通道测量装置
经验分享·笔记·功能测试·自动化·制造