学习笔记——网络参考模型——TCP/IP模型(网络层)

三、TCP/IP模型-网络层

1、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报头的头部

2、IP地址

(1)IP地址介绍

IP地址在网络中用于标识一个节点(或者网络设备的接口)用于IP报文在网络中的寻址。

IP 地址: 全局定位的作用 [工作在每一个需要网络层的设备上]

MAC **地址:**工作在链路上[工作在数据链路层环境下,实现在一个链路中定位某一个设备]

IP地址的作用 **:**是唯一标识网络中的一个节点,可以通过IP地址进行不同网段的数据访问。

在IP网络上,如果用户要将一台计算机连接到Internet上,就需要申请一个IP地址。IP地址就像现实中的地址,可以标识网络中的一个节点,数据就是通过它来找到目的地的。即我们通过IP地址实现全球范围内的网络通信。

IP地址是网络设备接口的属性,不是网络设备本身的属性。当我们说给某台设备分配一个IP地址时,实质上是指给这台设备的某个接口分配一个IP地址。如果设备有多个接口,通常每个接口都至少需要一个IP地址。

**注∶**需要使用IP地址的接口,通常是路由器和计算机的接口。

(2)IP地址表示

一个IPv4地址有32位二进制组成。IPv4地址通常采用"点分十进制"表示。

**点分十进制表示法:**IP地址表现形式能够帮助我们更好的使用和配置网络,但通信设备在对IP地址进行计算时使用的是二进制的操作方式,因此掌握十进制、二进制的转换运算非常有必要。

**IPv4地址范围:**00000000.00000000.00000000.00000000~11111111.11111111.11111111.1111111

即0.0.0.0~255.255.255.255。

进制 ,即表述数据的方法。**进制类型:**10进制、2进制、16进制

**10进制:**即组成数据的基本单元,包含了0-9。 主要是让人看的。

**2进制:**即组成数据基本单元,包含了0和1。 主要是让设备看的。

**16进制:**即组成数据基本单元,包含了0-9,a,b,c,d,e,f。 通常是用在"抓包软件"中,用于分析协议的数据包内容。

10进制的表示方法

127=1*10^2+2*10^1+7*10^0

2进制的表示方法

10101110=1*2^7+0*2^6+1*2^5+0*2^4+1*2^3+1*2^2+1*2^1+0*2^0

3、IP地址计算

2进制转换为10进制

常见应用场景:"IP地址"的识别和表示。

**例如:**IP地址的表示格式为:11000000.10101000.00000001.->192.168.1.1

2进制转换为10进制的核心精髓:

牢记2^n的结果,n=0~7

1,2,4,8,16,32,64,128:10进制转换为2进制

常见应用场景:"IP地址"的识别、表示和判断。判断IP地址是否同网段。

**例如:**判断PC1(192.168.1.1/24)和(192.168.1.130/24)是否为同一个网段

10进制转换为2进制的核心精髓

通过将10进制数除以2,将最终的"余数"组合在一起,变成8个2进制,不足8位的用0补全。

计算机=二进制 010101011 方便计算机处理 "逻辑集成电路" 通=1 断=0

十进制=192.168.1.111 4组十进制数 点分十进制 共4组成

1组十进制=8位二进制 4组=4*8=32位,每一组十进制数都可以用8个二进制数来表达。

如果某一位无法表达当前的数值时,则触发进位进制;进位时,原来的位数要置为0。

**位数:**每一个数在不同的位表达的含义不一致的,自后向前表达,自后是小值,向前为大值。

**规则:**二进制的0/1 在不同的位表达的含义不一致,0永远代表不取值,1则表达的信息要具体与不同位进行对应。

1111=8+4+2+1=15

11111=16+8+4+2+1=31

111111=32+31=63

1111111=64+63=127

11111111=128+64+32+16+8+4+2+1=255

255.255.255.255

**最大:**所有可变的二进制位都置为1。

1111=8+4+2+1=15

11111=16+8+4+2+1=31

111111=32+31=63

1111111=64+63=127

11111111=128+64+32+16+8+4+2+1=255

**最小:**所有可变的二进制位都置为0。

0000 0000=0 0.0.0.0

**例∶**172.16.10.1/16这个B类地址的网络地址、广播地址以及可用地址数分别是

网络地址∶ 将IP地址的主机位全设为0,所得结果是该IP地址所在网络的网络地址。

广播地址∶ 将IP地址的主机位全设为1,所得结果是该IP地址所在网络的广播地址。

**IP地址数∶**2",n为主机位位数。

**可用IP地址数∶**2"-2,n为主机位位数。

179 划分10次方

1*10的3-1次方 1*100=100

7*10的2-1次方 7*10=70

9*10的1-1次方 9*1=9

100+70+9=179

179 十进抽划分二进制

179 128 51 32 19 16 2 1

10110011

二进制和 十进制转换

二进制:用0和1,单位是:bit

|-----|----------|---------|--------|-------|------|-----|----|---|
| 十进制 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| 二进制 | 10000000 | 1000000 | 100000 | 10000 | 1000 | 100 | 10 | 1 |

(1)累加法

3=11

6=110

10=1010

12=1100

20=10100

128=10000000

192=11000000

224=11100000

calc-----计算器---查看 程序员型

(2)凑数法

将每一组用8位二进制数表达出来,最终按照先后顺序,依次进行排列,得到最终的结果。

192.168.1.111

1100 0000. 1010 1000. 0000 0001. 0110 1111 === 192.168.1.111 //2进制 10进制

二进制转换成十进制

101=5

1100=12

1001=9

10010=18

128 64 32 16 8 4 2 1

3=11

7=111

15=1111

31=11111

63=111111

127=1111111

**奇数:**最后一个bit 一定是1 7=111 5=101

**偶数:**最后一个bit 一定是0 6=110 12=1100

一个网段可用地址数量计算∶

一个网段的主机位为n位,则P地址数为∶2",可用IP地址数为∶2"-2(减去网络地址0 -和广播地址)。

一个子网包含的可用的主机ip数量(一个网段有多少个ip 地址)

192.168.1.0 /24 254=2^m-2 (m代表主机位的个数)

192.168.1 .xxxxxxxx 后8bit主机位192.168.6.0 255.255.248.0 /21

可用IP地址数量 = 2^11-2=2046

192.168.1.0 255.255.255.252 可用IP地址数量 = 2^2-2=2

|------------------|----------|
| 192.168.1.000000 | 00 主机位全0 |
| 192.168.1.000000 | 01 |
| 192.168.1.000000 | 10 |
| 192.168.1.000000 | 11 主机位全1 |

**注意:**主机位全0 或者全1 不能配置在任何PC或者路由器上面(即非法的主机ip)

**主机位全0:**网络地址代表整个网段 子网

**主机位全1:**广播地址 子网广播地址

**例如:**192.168.1.128 255.255.255.128 /25 非法192.168.1.1 0000000

前25bit网络位 后面7bit主机位

**例如:**192.168.1.255 255.255.255.0 非法

**例如:**192.168.1.0 255.255.255.0 非法

**例如:**192.168.1.0 255.255.128.0 合法

4、IP地址分类

IP地址分为有类和无类。

**有类(主类)IP地址:**主要分为A、B、C类,每种类型固定的掩码。

**无类IP地址:**无论哪种类型的IP地址都没有固定掩码。

A类 1-126 例如:8.200.1.1 默认掩码: 255.0.0.0 1700W个

++第一个8位组的第一位 一定取值0。++ /8 == 255.0.0.0

00000000.xxxxxxx....... 01111111.1111111......

最小: 0.0.0.0 **最大:**127.255.255.255

B类 128-191 例如:172.16.1.1 默认掩码: 255.255.0.0 65536个

++第一个8位组的前两位 一定取值10。++ /16 == 255.255.0.0

10000000.xxxxxxx....... 10111111.1111111......

最小: 128.0.0.0 **最大:**191.255.255.255

C类 192-223 例如:192.168.1.1 默认掩码: 255.255.255.0 256个

++第一个8位组的前三位 一定取值110。++ /24 == 255.255.255.0

11000000.xxxxxxx....... 11011111.1111111......

最小: 192.0.0.0 **最大:**223.255.255.255

D类 224-239 例如:224.5.5.5 组播地址

第一个8位组的前四位 一定取值1110。 //组播地址 //逻辑地址

11100000.xxxxxxx....... 11101111.1111111......

最小: 224.0.0.0 **最大:**239.255.255.255

E类 剩下 实验地址

第一个8位组的前四位 一定取值1111。 //军事 保留地址

11110000.xxxxxxx....... 11111111.1111111......

最小: 240.0.0.0 **最大:**255.255.255.255

**注意:**A B C类地址属于单播地址,可以配置在PC上面。D E类无法配置在PC上面。

为了方便IP地址的管理及组网,IP地址分成五类∶

A、B、C、D、E类的类别字段分别是二进制数0、10、110、1110、1111,通过网络号码字段的前几个比特就可以判断IP地址属于哪一类,这是区分各类地址最简单的方法。

A、B、C三类地址是++单播++IP地址(除一些特殊地址外),只有这三类地址才能分配给主机接口使用。

D类地址属于++组播++IP地址。只能作为逻辑地址存在,不能配置在设备接口上。

E类地址专门用于特殊的实验目的。

A、B、C类地址比较∶

**1)**使用A类地址的网络称为A类网络;使用B类地址的网络称为B类网络;使用C类地址的网络称为C类网络。

**2)**A类网络的网络号为8 bit,个数很少,但所允许的主机接口的个数很多;首位恒定为0,地址空间为∶0.0.0.0~127.255.255.255。

**3)**B类网络的网络号为16 bit,介于A类和C类网络之间;首两位恒定为10,地址空间为∶128.0.0.0~191.255.255.255。

**4)**C类网络的网络号为24 bit,个数很多,但所允许的主机接口的个数就很少;首三位恒定为110,地址空间为∶192.0.0.0~223.255.255.255。

**注∶主机(Host),通常指路由器和计算机的统称。**并且常把主机的某个接口的IP地址简称为主机IP地址。

**组播地址∶**组播能实现一对多传递消息。

我们通常把一个网络号所定义的网络范围称为一个网段

**网络地址:**网络号为X,主机号的每个比特都为0。不能分配给具体的主机接口使用。

**广播地址:**网络号为X,主机号的每个比特都为1。不能分配给具体的主机接口使用。

**可用地址:**又称主机地址,可用分配给具体的主机接口使用。

**一个网段可用地址数量计算:**一个网段的主机位为n位,则IP地址数为:2",可用IP地址数为:2"-2 (减去网络地址和广播地址)。

5、私网地址和公网地址

(1)私网IP地址

私网 **IP地址:**任何人都可以使用的地址,一般用于局域网(内网),私网地址无法在公网上(运营商)被路由(传输)。

实际上一些网络不需要连接到Internet,比如一个大学的封闭实验室内的网络,只要同一网络中的网络设备的IP地址不冲突即可。在IP地址空间里,A、B、C三类地址中各预留了一些地址专门用于上述情况称为私网IP地址

**例如:**192.168.1.3 >7.7.7.7 202.1.1.1------>7.7.7.7

私有地址范围

A类 10.0.0.0 /8 10.0 0.0~10.255.255.255

B类 172.16.0.0 /12 172.16 0.0~172.31.255.255

C类 192.168.0.0 /16 192.168.0.0~192.168.255.255

(2)公网IP地址

公网IP地址:IP地址是由IANA统一分配的,以保证任何一个IP地址在Internet上的唯一性,这里的IP地址是指公网IP地址。全球独一无二 ,可以在公网上被路由。

为了解决IP地址短缺的问题,提出了私有地址的概念。私有地址是指内部网络或主机地址,这些地址只能用于某个内部网络,不能用于公共网络。

**公网IP地址∶**连接到Internet的网络设备必须具有由ICANN分配的公网IP地址。

**私网IP地址∶**私网IP地址的使用使得网络可以得到更为自由地扩展,因为同一个私网IP地址是可以在不同的私有网络中重复使用的。

**私有网络连接到Internet∶**私有网络由于使用了私网IP地址,是不允许连接到Internet的。后来在实际需求的驱动下,许多私有网络也希望能够连接到Internet上,从而实现私网与Internet之间的通信,以及通过Internet实现私网与私网之间的通信。私网与Internet的互联,必须使用网络地址转换(NAT)技术实现。

**注∶**NAT(Network Address Translation)网络地址转换,其基本作用是实现私网IP地址与公网IP地址之间的转换。

IANA(Internet Assigned Numbers Authority),因特网地址分配组织。

(3)特殊IP地址

(A)127.0.0.0 ~ 127.255.255.255 本地环回,代表自己,用于设备内部的协议栈测试使用。

**IP协议规定:**如果数据的目的IP地址为127,该网络则无法发送出本设备的接口。

IP地址空间中,有一些特殊的IP地址,这些IP地址有特殊的含义和作用,举例如下。

255.255.255 这个地址称为有限广播地址,它可以作为一个IP报文的目的IP地址使用。

路由器接收到目的IP地址为有限广播地址的IP报文后,会停止对该IP报文的转发。

(B)0.0.0.0 //不可用 0.0.0.0--0.255.255.255

(1)如果把这个地址作为网络地址,它的意思就是"任何网络"的网络地址;

(2)如果把这个地址作为主机接口地址,它的意思就是"这个网络上主机接口"的IP地址。

0.0.0.0的作用:

1.未指定的地址

2.路由层面:全网所有的地址

**例如∶**当一个主机接口在启动过程中尚未获得自己的IP地址时,就可以向网络发送目的IP地址为有限广播地址、源IP地址为0.0.0.0的DHCP请求报文,希望DHCP服务器在收到自己的请求后,能够给自己分配一个可用的IP地址。

127.0.0.0/8这个地址为环回地址,它可以作为一个IP报文的目的IP地址使用。其作用是测试设备自身的软件系统。

一个设备产生的目的IP地址为环回地址的IP报文是不可能离开这个设备本身的。

169.254.0.0/16 如果一个网络设备获取IP地址的方式被设置成了自动获取方式,但是该设备在网络上又没有找到可用的DHCP服务器,那么该设备就会使用169.254.0.0/16网段的某个地址来进行临时通信。

注∶ DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,用于动态分配网络配置参数,如IP地址。

广播分为:

全向广播 255.255.255.255 针对发送者而言

定向广播

0.0.0.0所有 代表任何网段255.255.255.255 广播169.254.x.x 没获取到地址特殊mac地址

全F 的MAC地址 广播MAC

01-00-5e-xx-xx-xx 组播mac

6、IP地址构成

结构上分为网络位和主机位两部分∶

网络位,代表IP地址所属的网段。网络位一致的ip地址和掩码的组合称为同一个网段。

主机位,代表网段上的某个节点。由子网掩码决定分界点。

相同网段:前面的网络位相同!!

**例如:**192.168.1.1 255.255.255.0 ===/24

11000000.10101000.00000001. 00000001 前24个bit 是网络位,后8个bit是主机位。

IP地址是以网络号和主机号来标示网络上的主机的,我们把网络号相同的主机称之为本地网络。网络号不相同的主机称之为远程网络主机,本地网络中的主机可以直接相互通信;远程网络中的主机要相互通信必须通过本地网关(Gateway)来传递转发数据。

**网络地址:**代表了本网段的所有地址,出现在路由表。

**广播地址:**用于本网络内所有的主机通信的。


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

相关推荐
新手上路狂踩坑42 分钟前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
xserver21 小时前
ensp 基于端口安全的财务部网络组建
网络·安全
一个不秃头的 程序员2 小时前
服务器上加入SFTP------(小白篇 1)
运维·服务器
fnd_LN2 小时前
Linux文件目录 --- 复制命令CP、递归复制目录、软连接、硬链接
linux·运维·服务器
MorleyOlsen2 小时前
【Trick】解决服务器cuda报错——RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
运维·服务器·深度学习
周周的奇妙编程2 小时前
基于鲲鹏服务器的打砖块小游戏部署
运维·服务器
OopspoO2 小时前
Linux查看键鼠输入
linux
从后端到QT2 小时前
boost asio 异步服务器
服务器·网络·tcp/ip
Blankspace学2 小时前
Wireshark软件下载安装及基础
网络·学习·测试工具·网络安全·wireshark
墨水\\3 小时前
Ansible部署及基础模块
服务器·网络·ansible