三、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】