1. 基础知识
1.1 IP地址
上一节内容已经介绍了IP地址用来定位网络中唯一的一台主机,它是一个32位的二进制数,通常用“点分十进制”来表示即a.b.c.d表示(a,b,c,d为0~255之间的数),那么它是怎样定位一台主机呢?
IP地址的组成
网络号:标识网段,保证相互连接的两个网段具有不同标识
主机号:标识主机,同一网段内,不同的主机具有相同的网络号,但是主机号必须不同
主机号和网络号的划分
通过合理的设置网络号和主机号,就可以保证在相互连接的网络中,每台主机的IP地址都是唯一的,那么主机号和网络号是如何划分的呢?
有一种划分网络号和主机号的方案,把IP地址分为五类,但是常用的为以下三类:
各类地址的表示范围:
分类 | 范围 | 适用网络 | 网络数量 | 主机最大连接数 |
A类 | 0.0.0.0~127.255.255.255 | 大型网络 | 126 | 2^24-2 |
B类 | 128.0.0.0~191.255.255.255 | 中等规模网络 | 16384 | 2^16-2=65534 |
C类 | 192.0.0.0~223.255.255.255 | 小型网络 | 约209万 | 2^8-2=254 |
说明:最大主机连接数减去2是因为减去了两个特殊的IP地址
特殊的IP地址
IP地址全为0,成了网络号,代表这个局域网
IP地址全为1,成了广播地址,用于给同一个链路中相互连接的所有主机发送数据报
127.*用于本机环回测试,通常是127.0.0.1,本机环回测试主要用于本机到本机的网络通信
1.2 子网掩码
子网掩码的格式 :
子网掩码的格式和IP地址的格式类似,也是一个32位的二进制数,通常用“点十进制”表示,左边位网络位,用二进制数1表示,1的数目等于网络位的长度,右边为主机位,用二进制数0表示,0的个数为主机位的长度
子网掩码的作用
划分ABC三类IP地址的子网
例:一个B类IP地址为191.110.0.0,使用子网掩码255.255.128.0来划分子网
进行网络通信时,子网掩码结合IP地址可以计算出网络号和主机号(网络号和主机号都为划分子网后的),一般用于判断目的IP与本机IP是否为一个网段
划分子网后网络号和主机号的计算方式:
IP地址与子网掩码按位与,得到的就是网络号
子网掩码按位取反,再与IP地址按位与,得到的就是主机号
例:
1.3 MAC地址
MAC地址的概念
MAC地址(Media Access Control Address),用于标识网络硬件设备的物理地址
主机具有一个或多个网卡,路由器具有两个或两个以上网卡,其中每个网卡都有唯一的MAC地址
网络通信即网络数据传输,本质是网络硬件设备将数据发送到网卡上,或以网卡来接收数据
网卡出厂时,MAC地址就已经确定了不能修改
MAC地址的格式:长度为48位,一般用16进制数字加冒号的形式表示,如:08:00:27:03:fb:19
特殊的MAC地址
发送一个广播数据报,表示对同网段所有主机发送数据报,广播数据报的MAC地址:FF:FF:FF:FF:FF:FF
一跳一跳的网络传输
以下为主机B传输数据到主机C经过的网络设备:
上述经过的网络设备:
主机:配有IP地址,但是不进行路由控制
路由器:配有IP地址,又可以进行路由选择
注意:集线器和二层交换机不会对数据报封装和分用,不算在下一跳设备
IP地址与MAC地址的区别
IP地址描述的是数据传输的起点和终点,即从源主机到目的主机
MAC地址描述的是路途上的每一个区间的起点和终点,即每一跳的起点和终点
比如:唐僧西天取经,IP地址为长安和西天,MAC地址为中途的五指山,女儿国等
1.4 网络传输遇到的设备
1.4.1 集线器
集线器工作在物理层,发送到集线器的数据,集线器将数据复制并转发到其他所有端口
端口:分为物理端口和逻辑端口,物理端口指硬件设备如集线器,交换机,路由器等的物理端口,逻辑端口指进程绑定的端口,属于操作系统虚拟的一个0~65535的数字
1.4.2 交换机
交换机如何工作
交换机工作在数据链路层,交换机内部维护了一张MAC地址转换表:
MAC地址转换表主要记录MAC地址与端口之间的映射(端口指交换机后边的物理端口)
主机连接到交换机,主机发送数据的时候,交换机可以记录该主机的MAC地址与端口信息
发送到交换机的数据(此时数据中包含了目的MAC),根据MAC地址转换表,通过目的主机的MAC地址查找到对应端口,交换机只需要将数据转发到对应端口即可
根据MAC地址找不到端口怎么办?
但是通过目的主机MAC找对应端口可能存在找不到的情况,如果找不到,交换机设置数据报目的MAC为为广播地址FF:FF:FF:FF:FF:FF,发送到其他所有端口,(因为数据中有目的IP,目的IP的主机返回返回自己的MAC地址),待目的主机返回响应后,交换机再记录该主机MAC与端口的映射信息
这个发广播数据报的过程类似在群里喊话:
a:张三在吗?这里有你的快递
张三:在的呢,在x楼xxx房间
这样就能将快递正确的交给张三
1.4.3 主机
在发送数据时,发送端主机都会先根据网络分层对数据进行封装
源主机与目的主机是否在同一个网段对应下一跳设备也有所不同:
当源主机与目的主机在同一个网段时,下一跳设备就是目的主机
当源主机与目的主机不在同一个网段时,发送端主机是无法知道目的主机在哪(不知道目的主机的MAC,所以喊话的方式也没有用了),此时会设置下一跳设备为网关设备,后续参考下面ARP寻址和路由器内容
关于网关设备,这里简单理解为不同网段的网络互联时,需要使用网关设备,通常网关设备为路由器
从上到下封装时,封装到数据链路层,下一跳设备的IP都能获取到,但是MAC地址可能不知道,此时就需要使用ARP寻址
ARP寻址
ARP协议介于数据链路层和网络层,ARP协议建立了IP地址与MAC地址的映射关系,在数据链路层,寻找下一跳MAC地址的过程称为ARP寻址
ARP寻址的过程 :
主机和路由器中都保存了一张ARP缓存表,通过IP地址可以找到MAC地址,如果找不到MAC地址,则发送ARP广播数据报,目的MAC为广播地址,询问下一跳设备的MAC地址,过程类似如下喊话:
1.4.5 路由器
路由器的介绍
路由器作为网关,可以划分公网和局域网,某些路由器还可以将局域网划分为多个子网(不同网段),公网端口为WAN口,为单独的网卡,具有公网IP地址和公网MAC地址,多个子网由局域网端口LAN口划分,每个端口都有单独的网卡,具有该网段IP地址和MAC地址
说明:企业级的路由器才能划分子网,家用的路由器不可以划分
路由器功能概述
局域网划分的多个子网,可直接通过ARP寻址找到局域网任意的一台主机
局域网内的主机发送数据到公网主机时,需要基于NAPT协议将局域网主机的IP地址和端口号转换为路由器公网的IP和端口号(指路由器中运行程序的端口)
路由器的路由功能能在复杂的网络结构中找出一条通往终点的路线,类似规划路线,找到更快到达目的的路线
路由器的功能总结
可以将局域网划分为多个子网
具有ARP缓存表,记录局域网所有主机的IP和MAC,根据IP地址能找到MAC地址
具有WAN口,绑定公网IP,如果目的主机不在局域网内,需要使用NAPT协议将局域网主机的IP和端口转换为公网的IP和端口
路由功能,在复杂的网络结构中,找到最快通往目的路线
1.5 冲突域
主机之间通过网络设备的物理端口,网线相连时,两个主机在同一时刻发送数据报,如果存在冲突,则该网络范围就为一个冲突域
集线器的冲突域
集线器的所有端口为一个冲突域,因为集线器是将数据转发到所有端口,如果有两个数据要同时转发,就会出现冲突
交换机的冲突域
交换机的一个端口为一个冲突域,因为交换机是将数据转发到对应的端口,两个数据转发到不同端口不存在冲突,但是转发到同一个端口就存在冲突
1.6 广播域
广播指某个网络中的主机向其他所有主机发送数据(IP,MAC地址设置为广播地址),这个数据所能传播到的范围称为广播域
集线器的广播域
集线器接收到广播数据报,转发到所有端口,集线器的所有端口为一个广播域
交换机的广播域
交换机接收到广播数据报,会转发到其他所有的端口
路由器的广播域
路由器可以隔离广播域,路由器某个LAN口网卡接收到广播域,如果发现是同网段,则丢弃,即广播数据不会扩散到路由器以外
2. 局域网数据传输流程
2.1 集线器相连
集线器相连的网络数据传输流程:
发送端主机发送数据时,首先要根据协议分层从上到下对数据进行封装
封装到数据链路层时,可能不知道目的主机MAC,所以要先进行ARP寻址
发送端主机在本机的ARP转换表中根根据目的IP查找对应的MAC地址
若找到了,则在以太网帧头中设置目的MAC,并发送数据
若没有找到目的MAC,则将发送ARP广播请求,让目的主机告诉它的MAC地址是多少
知道目的MAC后,发送端主机更新ARP缓存表
在以太网帧头中设置目的MAC,并发送数据
集线器将数据转发到所有端口
所有收到数据的主机看是否是给自己发的,若不是则直接丢弃,若是则从下到上进行分用,最后返回响应数据
返回的流程与发送的流程相同,只是源IP目的IP更换,源端口目的端口更换
2.2 交换机相连
交换机相连的网络数据传输流程:
发送端主机发送数据时,首先要根据协议分层从上到下对数据进行封装
封装到数据链路层时,可能不知道目的主机MAC,所以要先进行ARP寻址
发送端主机在本机的ARP转换表中根根据目的IP查找对应的MAC地址
若找到了,则在以太网帧头中设置目的MAC,并发送数据
若没有找到目的MAC,则将发送ARP广播请求,让目的主机告诉它的MAC地址是多少
知道目的MAC后,发送端主机更新ARP缓存表
在以太网帧头中设置目的MAC,并发送数据
交换机内部维护了MAC地址转换表,根据目的MAC找对应端口
若找到了,将数据转发到对应端口
若没有找到,则发送广播数据报,待目的主机返回响应后记录目的主机MAC与端口的信息转发到目的MAC地址对应端口
目的主机接收到数据后,从下到上进行分用返回响应数据
返回的流程与发送的流程相同,只是源IP目的IP更换,源端口目的端口更换
2.3 交换机与路由器相连
交换机与路由器相连的网络数据传输流程:
源主机发送数据时从上到下对数据进行封装,在封装的时候先通过子网掩码计算源主机和目的主机是否在同一个网段
若在同一个网段,数据传输流程与上述交换机的传输流程相同
若不在同一个网段,下一跳的设备就为网关
找到与源主机相连的网关设备IP,进行ARP寻址,找到对应网关的MAC地址,将目的MAC设置为网关MAC地址,再发送数据
交换机根据MAC地址转换表查找网关MAC对应的端口,并向该端口发送数据
网关设备也就是路由器对数据从下到上进行分用,先获取到目的主机IP,通过ARP寻址找到IP对应MAC地址
路由器对数据进行封装,与源主机封装数据不同的是,源MAC修改为路由器MAC,目的MAC为目的主机MAC,然后发送数据
待目的主机接收到数据后,从下到上进行分用,然后返回响应数据
返回的流程与发送的流程相同,只是源IP目的IP更换,源端口目的端口更换
3. 广域网数据传输流程(重点)
广域网数据传输流程:这里以在浏览器地址栏输入www.baidu.com后数据的传输流程为例说明
www.baidu.com为域名,通过DNS协议将该域名转化为IP地址
源主机从上到下进行封装数据,首先通过子网掩码计算源主机和目的主机是否在同一个网段
在同一个网段,下一跳设备就是目的主机,在不同网段,下一跳设备就是网关设备即路由器
通过源主机的ARP缓存表,找到网关IP对应的MAC,将目的MAC设置为网关MAC,再发送数据
交换机接收到数据,基于MAC转换表通过网关MAC找到对应的端口,往该端口发送数据
网关即路由器接收到数据, 先从下到上分用,再基于NAPT协议将源IP和源端口转化为路由器公网的IP和端口
基于路由功能,根据目的IP,计算出下一跳是哪个设备距离目的主机最近,获取到IP
根据路由器ARP缓存表,找到下一跳设备IP对应的MAC地址
路由器从上到下封装,修改源IP为公网IP,源端口为公网端口,源MAC为路由器MAC,目的MAC为下一个设备的MAC
途中经过的设备从下到上分用,基于路由技术计算路线,获取下一跳设备的IP,通过ARP寻址找到IP对应的MAC,封装数据发送下一个设备
目的主机接收到,从下到上分用,返回响应数据
返回的流程与发送的流程相同,只是源IP目的IP更换,源端口目的端口更换
文章知识点与官方知识档案匹配,可进一步学习相关知识