Android网络优化-02:网络基础(下)

原文地址:https://juejin.im/post/5ebb3db16fb9a0438e2396af

8. 网络层

8.1 网络层主要功能

数据路由。

8.2 IP协议

8.2.1 IP协议拆解

虚拟互联网络

  • 1、实际的计算机网络是错综复杂的。
  • 2、物理设备通过使用IP协议,屏蔽了物理网络之间的差异。
  • 3、当网络中的主机IP协议连接时,则无需关心网络细节,

计算机A与B之间的数据通信可以认为是通过一个虚拟的互联网络进行传输的。

IP协议的作用

  • 1、IP协议使得复杂的实际网络变成一个虚拟的互联网络。
  • 2、IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发。
  • 3、IP协议解决了在虚拟网络中数据报传输路径的问题。

IP地址

每一个唯一的网络设备都有一个唯一的IP地址。不同于MAC地址是不可改变的,IP地址会根据当前设备所连接的网络环境的变化而变化。

特点

  • IP地址长度为32位,常分为4个8位。
  • IP地址常使用点分十进制来表示,即0255.0255.0~255。
  • IP地址最多有2 ^ 32 = 4294961296 => 42 亿

IP数据报 = IP首部 + IP数据报的数据,IP数据报的报文格式如下:

版本

占4位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4和6,即IPv4,也有IPv6。

首部位长度

占4位,最大数值为15,表示的是IP首部的长度,单位是32位字(4个字节)。所以IP首部的最大长度为 15 * 4 = 60 字节

服务类型(TOS)

表示当前的数据包是高优先级的,还是低优先级的。数据包是按照TOS被分配到三个波段(band0、band1、band2)里面的。

总长度

占16位,最大数值为65535,表示的是IP数据报的总长度(IP首部 + IP数据)。

注意,数据在数据链路层中的传输受最大传输单元MTU的限制,而MTU一般为1500个字节,如果IP数据报的长度高于MTU,数据链路层会把IP数据报进行分片,即拆分成多个数据帧进行传输

标识

协议内部自身使用,不需关注。

标志

占3位,目前只有两位有意思,标识是否进行分片

片偏移

占13位,如果发生了分片,这里将会记录当前的数据帧保存的是第几个偏移的IP数据

TTL

  • 占8位,表名IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL = 0时,网络设备必须丢弃该报文。
  • 当IP报文在网络中找不到终点的时候,避免IP数据在网络中无限进行传输,消耗带宽。

协议

占8位,表明IP数据所携带的具体数据是什么协议的。。如:TCP、UDP等。

协议
ICMP(Internet Control Message Protocol)Internet控制报文协议 1
IGMP(Internet Group Management Protocol)Internet组管理协议 2
IP(Internet Protocol)网络互连协议 4
TCP(Transmission Control Protocol)传输控制协议 6
UDP(User Datagram Protocol)用户数据报协议 17
OSPF(Open Shortest Path First)开放式最短路径优先,是一个内部网关协议(Interior Gateway Protocol) 89

首部校验和

占16位,校验IP首部是否有错,接收方在接收了IP数据报文之后会进行头部的校验,如果出错会进行丢弃。

源IP地址

发送IP数据报文的IP地址。

目的IP地址

数据报到达的IP的地址。

8.2.2 IP协议的转发流程

逐跳(hop-by-hop)

数据是从目的设备传输到下一个网络1, 又从下一个网络1传输到路由器的,又从路由器跳到下一个网络2,所以是一跳一跳的,即hop-by-hop。

路由表

  • 1、不同于MAC地址表是由一组一组的MAC地址与硬件接口组成的,路由表是由一组一组的目的IP地址与吓一跳的IP地址组成。
  • 2、计算机或者路由器都拥有路由表。

转发流程

  • 1、A发出的目的为C的IP数据报,查询路由表发现吓一跳为E。
  • 2、A将IP数据报交给数据链路层,并告知目的MAC地址为E。
  • 3、数据链路层填充源MAC地址A和目的MAC地址E。
  • 4、数据链路层通过物理层将数据发送给E。
  • 5、E的数据链路层接收到数据帧,把数据帧交给网络层。
  • 6、E查询路由表,发现吓一跳为F。
  • 7、E把数据报交给数据链路层,并告知目的MAC地址为F。
  • 8、E的数据链路层封装数据帧并发送。
  • 9、F的数据链路层收到数据帧,把数据帧交给网络层。
  • 10、F查询路由表,发现吓一跳为C。
  • 11、F把数据报交给路由链路层,并告知目的MAC地址为C。
  • 12、F的数据链路层封装数据帧并发送。

MAC地址与IP地址的最大区别

  • 1、数据帧每一跳的MAC地址都在变化,而IP数据报的每一跳的IP地址始终不变。
  • 2、IP地址具有远程定位功能,而MAC地址更像是身份证号,它的唯一性是为了组网时可以不用担心不同的网卡在一个网络里会产生冲突,从硬件角度保证不同的网卡有不同的标识。
  • 3、相比于IP地址,MAC地址的通信范围比较小,局限在一个子网内。如:从192.168.0.1/24访问192.168.0.9/24是可以用MAC地址的。

8.2.3 IP地址的子网划分

为什么要对IP地址进行划分?

因为规划和分配IP地址非常麻烦。

分类的IP地址

组成形式:网络号 + 主机号

通常有如下三种类型的IP地址:

  • A类:首位为0,网络号为8位,主机号为24位。
  • B类:首位为10,网络号为16位,主机号为16位。
  • C类:首位为110,网络号为24位,主机号为8位。

特殊的网络号

  • A类地址网络段全0(00000000),表示特殊网络
  • A类地址网络后7位全1(01111111:127),表示回环地址
  • B类地址网络段(10000000.00000000:128.0),是不可使用的
  • C类地址网络段(192.0.0),是不可用的

特殊的主机号

  • 主机号全0,表示当前网络段不可分配特定的主机。例如:1.0.0.0。
  • 主机号全1,表示广播地址向当前网络段所有主机发消息。例如:0.1.11.111。

本地回环地址(Loopback Address):127.0.0.1,不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所有默认被看作是永久不会废弃的接口。在Windows操作系统中也有相似的定义,所有一般在安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
C:\Users\AHXIUWU_RJ_LY>ping 127.0.0.1

正在 Ping 127.0.0.1 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

127.0.0.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms

分类地址的补充

  • D类地址:1110……
  • E类地址:1111……

他们仅做特殊用途。

划分子网

1
某公司有256台计算机,该申请哪种网路段?

分配B类地址,但是一个B类地址所能容纳的主机数量为2^16-2,这会造成极大的浪费。为了解决这个问题,需要划分子网。

例如:将193.10.10.0这个IP划分为193.10.10.0193.10.10.127与193.10.10.128193.10.10.255。

子网掩码

1
子网这么多,如何判断某个IP的网络号?

快速的判断某个IP属于哪一个子网号,通过IP & 子网掩码 = 该IP对应的子网号。子网掩码的组成特点如下:

  • 与IP地址一样,都是32位。
  • 由连续的1和连续的0组成。
  • 某一个子网掩码具备网络号位数个连续的1。

例如,A、B、C类的子网掩码:

  • A类:255.0.0.0
  • B类:255.255.0.0
  • B类:255.255.255.0

无分类编址CIDR(Classless Inter-Domain Routing,无类别域间路由)

  • 1、CIDR中没有A、B、C类网络号和子网划分的概念
  • 2、CIDR将网络前缀相同的IP地址称为一个CIDR地址块
  • 3、网络前缀是任意位数的
  • 4、相比原来子网划分更加灵活

CIDR使用了斜线记法,例如:193.10.10.129/25 表示网络号为25位,主机号为7位。一般家里都是使用 /24 的CIDR,此时整个网络里面的一个地址为192.168.0.1,往往就是私网的出口地址。例如:家里面的电脑连接WIFI,WIFI路由器的地址就是192.168.0.1,而192.168.0.255就是广播的地址。

1
loopback是什么?

回环接口,通常会被分配到127.0.0.1这个地址,它用于本机内部通信,经过内核处理后直接返回,不会再任何网络中出现。

1
某公司有200台电脑,需要拆分成两个部分,每个部分使用一个小型网络,如何进行CIDR进行划分?

可以使用一个 /24 作为一个中型网络(在CIDR中被称为超网),旗下有两个 /25 作为一个小型网络(在CIDR中被称为子网)。

8.3 ARP协议与RARP协议

1
在IP数据的转发过程中,A将IP数据报交给了数据链路层,并告知其目的MAC地址是E。这里A是如何知道目的MAC地址是E呢?

8.3.1 ARP(Address Resolution Protocol)地址解析协议

ARP协议将网络层IP 32位地址转换为数据链路层MAC 48位地址。

ARP缓存池

缓存了IP地址到硬件地址之间的映射关系。有缓存时直接从缓存中取出即可,没有缓存时则会和MAC地址表获取地址时使用的广播形式类似,即

  • 1、E检查MAC地址表,发现没有C的信息。
  • 2、E将广播A的数据包到除A以外的端口。
  • 3、E将收到来自B、C的回应,并将地址记录。

ARP缓存时ARP协议和RARP协议运行的关键。此外,ARP缓存表中的记录并不是永久有效的,有一定的期限。

查看ARP缓存表

使用arp -a命令,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
C:\Users\AHXIUWU_RJ_LY>arp -a

接口: 192.168.137.1 --- 0xa
Internet 地址 物理地址 类型
192.168.137.255 ff-ff-ff-ff-ff-ff 静态
224.0.0.2 01-00-5e-00-00-02 静态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
224.0.0.252 01-00-5e-00-00-fc 静态
239.11.20.1 01-00-5e-0b-14-01 静态
239.255.255.250 01-00-5e-7f-ff-fa 静态
255.255.255.255 ff-ff-ff-ff-ff-ff 静态

接口: 192.168.1.200 --- 0x12
Internet 地址 物理地址 类型
192.168.1.1 30-b4-9e-57-63-45 动态
192.168.1.202 48-3f-e9-66-03-09 动态
192.168.1.205 b4-c4-fc-43-b0-4f 动态
192.168.1.211 7c-67-a2-94-4d-82 动态
192.168.1.239 7c-67-a2-bd-96-e7 动态
192.168.1.255 ff-ff-ff-ff-ff-ff 静态
224.0.0.2 01-00-5e-00-00-02 静态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
224.0.0.252 01-00-5e-00-00-fc 静态
239.11.20.1 01-00-5e-0b-14-01 静态
239.255.255.250 01-00-5e-7f-ff-fa 静态
255.255.255.255 ff-ff-ff-ff-ff-ff 静态

ARP协议

ARP协议是被直接封装在了数据链路层中的数据帧里面。

1
既然ARP协议是直接被封装在数据链路层中的数据帧里面,那么为什么它属于网络层的内容?

主要是因为ARP协议使用到了网络层的IP地址。

ARP协议内容

8.3.2 RARP(Reverse Address Resolution Protocol)逆地址解析协议

  • 将数据链路层MAC 48位地址转换为网络层IP 32位地址。
  • 除了类型8035标识为RARP协议,其他内容与ARP协议类似。

8.3.3 小结

  • RARP协议与ARP协议是TCP/IP协议栈里面的基础协议,它们的操作对程序员是透明的。
  • 理解它们有助于里面网络分层的细节。
  • 它们是协调数据链路层和网络层配合工作的重要协议。

8.4 网络地址转换NAT(Network Address Translation)技术

不改变IP地址的网关,称为转发网关;改变IP地址的网关,称为NAT网关

1
为什么要使用NAT?
  • 1、IPv4最多只有40+亿个IP地址。
  • 2、早期IP地址的不合理规划导致IP号浪费。

8.4.1 内网地址

特点

  • 内部机构使用
  • 避免与外网地址重复

三类内网地址

  • A类:10.0.0.0 ~ 10.255.255.255,支持千万数据量级设备
  • B类:172.16.0.0 ~ 172.31.255.255,支持百万数据量级设备
  • C类:192.168.0.0 ~ 193.168.255.255,支持万数据量级设备

对于公司,它可以在外部使用全球唯一的外网IP地址,通常在内部使用一个B类内网地址即可。

对于家庭,可以在外部使用全球唯一的外网IP地址,在内部使用一个C类内网地址即可。

1
问题:内网的多个设备使用同一外网IP地址请求外网服务,外部是怎么知道时候哪一个内网设备请求的呢?

使用NAT,它用于多个主机通过一个公有IP访问互联网的私有网络,并减缓了IP地址的消耗,但是增加了网络通信的复杂度。

8.4.2 外网地址

  • 全球范围使用
  • 全球公网唯一

8.4.3 端口映射

如下两个NAT转换过程:发送数据时,A设备内网地址和端口号 => 外网地址与端口号:192.168.2.11:6666 => 173.21.59.10:16666,B设备内网地址和端口号 => 外网地址和端口号:192.168.2.10:7777 => 173.21.59.10:17777。

由于同时转换了Port,即进行了端口映射,NAT也可称为NA(P)T。

  • Copyrights © 2019-2020 Tyler Liu

请我喝杯咖啡吧~

支付宝
微信