目录
MAC地址
前言
含义:也称物理地址或硬件地址,由网络制造商生产时写在硬件的内部,其写在电脑的网卡里面。
mac地址由48个二进制/12个16进制数字组成(6字节);前3个字节OUI组织唯一标识符(由IEEE的注册管理机构分配给厂商) ;后三个字节网络接口标识符(由厂商自行分配)
注意:
- mac地址具有全球唯一性,其固化在了网卡的ROM中,由IEEE802标准规定
- 当mac地址48位全为1时,代表广播地址(FF-FF-FF-FF-FF-FF)
- 当不知道对方主机的mac地址时,可以通过发送arp广播获取对方的mac地址,获取成功后,会缓存IP地址、mac地址的映射信息,俗称arp缓存
- 通过arp广播获取的mac地址属于动态缓存,存储时间较段(默认是2分钟)过期了自动删除
相关命令
查询mac地址:ipconfig/all
查询arp缓存:arp -a [主机地址]
删除arp缓存:arp -d [主机地址]
增加静态arp缓存:arp -s 主机地址 MAC地址
IP地址
含义:电子设备(计算机)在互联网中的唯一标识,也称逻辑地址。(网络号+主机号)
IPV4与IPV6
- IPV4:IPV4地址表示点分十进制格式,32位地址分成4个8位分组,每个8位以10进制显示,中间用点来分割。
- IPV6:IPV6采用16进制格式,即128位地址采用每16位为一个分组(共8组),每个16位分组写成4个16进制数,中间用冒号来分16进制格式。
IPV6出现的原因:IPV4地址枯竭,同时它也在其他方面对于IPV4有所改进
IPV6注意事项
- 每组前面连续的0可以省略
- 可以用"::"表示一组或多组连续的0,但只能出现1次
- ::1(0:0:0:0:0:0:0:1)是本地环回地址
IPV4
IPV4的10进制形式转化为2进制
使用方法:
eg:255.255.255.132
因为255=128+64+32+16+8+4+2+1
132=128+0+0+0+0+4+0+0
推算:11111111.11111111.11111111.10000100
IP地址的组成
- 网络部分:用于标识网络的范围(网络id)
- 主机部分:用于标识网络范围中的一个节点(主机id)
网段:两个IP地址的网络号相同就说明他们处于同一个网段。
子网掩码
含义:ip地址由网络位和主机位组成,子网掩码主要用于区分网络位与主机位。
使用IP地址和子网掩码进行按位&运算得出网络位(1&1=1)
使用子网掩码来得出网络部分与主机部分,在本网络的第一个地址就是网络地址,本网络的最后一个地址就是广播地址
网络地址与广播地址
- 网络地址(网段):其是主机地址全为0的地址,是编码中比较特殊的一部分,它用来表明一个网段,不能分配给主机
- 广播地址:其是主机地址全为1的地址,其是专门用来向特定网段发送广播的地址,也不能分配给主机;当发出一个目标地址为10.1.1.255(广播地址)的分组封包时,他将被分发给该网段上所有的计算机
子网掩码的CIDR的表示方法
CIDR(classless inter-domain routing):无类别域间路由
例子
- 192.168.1.100/24,代表子网掩码有24个1,也就是255.255.255.0
- 123.210.100.200/16,代表子网掩码有16个1,也就是255.255.0.0
子网掩码的使用
eg:192.168.0.2/30 (说明前面30位二进制数为网络位)
因此子网掩码为:255.255.255.252
网络地址为:192.168.0.0
广播地址为:192.168.0.3
注意:
- 同一网段的计算机,网络id相同
- 可以通过子网掩码来计算出网络id
- 子网掩码越长代表网络部分越长,网络范围越小,反之网络范围越大
- 网络地址代表一个范围,不能给主机使用
- 广播地址代表本网段的所有地址,也是不能够给主机使用
- 当一台计算机ping另外一个计算机的IP地址时,会拿自己的子网掩码按位&来计算对方网段,然后对比和自己是否属于同一个网段
IP地址的分类(IPV4为例)
前言:IP地址分为A、B、C、D、E五类
A类:确定前8位为网络位(默认),后24位为主机位并且以0开头(子网掩码:255.0.0.0)
注意:第一个8位组范围:0——127,由于0代表本地网络,127开头的地址一般用于回路检测,最终范围:0——126(ping 127.0.0.1相当于ping自己的主机)
B类:确定前16位为网络位(默认),后16位为主机位,并且以10开头(子网掩码:255.255.0.0)
C类:确定前24位为网络位(默认),后面8位为主机位,并且以110开头(子网掩码:255.255.255.0)
D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户 。(没有子网掩码)
E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。
注意:
- 只有A、B、C类地址可以分配给主机
- 地址的类别与子网掩码无关,主要看的是前8位组的范围来划分
公有地址与私有地址
前言:
- 在Internet上的路由器中只有到达公网的路由表,没有到达私网的路由表
- 公网IP由因特网信息中心(inter NIC)统一分配和管理
- ISP需要向Inter NIC申请公网IP
- 除去私有IP范围的地址就是公有IP范围的地址
在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:
- A类地址:10.0.0.0~10.255.255.255
- B类地址:172.16.0.0~172.31.255.255
- C类地址:192.168.0.0~192.168.255.255
网络数据的传输方式
- 单播:一种向单个目标地址传送数据的方式,也就是单独的一对一的通信方式,发送端会将数据封装成数据包以目标地址(通常是一个单独的IP地址)为目的地进行传输。单播是最常见的网络传输方式,它可以使用TCP、UDP协议
- 组播:其是指向一个组中发送数据包的方式。在组播中,数据包被发送到特定的IP地址,该IP地址同时也是该组中所有设备的组ID,这样,组内的所有设备都能够接收同一数据包。
- 广播:其为一种向本地网络中的所有设备发送数据的方式。在广播中发送端并不指定特定的接收方,而是将数据包发送到该网络的所有设备。
- 任播:其为将一个数据包发送到一个指定的设备集合(通常是距离发送端最近的设备),而不指定任何目的地址。
子网划分
前言:为了方便进行网络管理,这时候就需要将一个大的网络分割成多个小网络
含义:借用主机位作为子网位,划分多个子网
子网划分的原因
- 从公网层面来讲A类地址总共有126个网络,假设一个A类网络给某一个企业或者一个机构使用,由于A类地址在主机部分范围比较广,造成这个企业或机构无法全部用完,造成IP地址的浪费(节省IP地址)
- 实现网络的层次性
- 满足不同网络对IP地址的需求
子网划分分类
- 等长子网划分:将一个网段分成多个子网,每个子网的可用ip地址数量是一样的
- 变长子网划分:将一个网段分成多个子网,每个子网的可用ip地址数量是不一样的
理解:
等长子网划分:191.100.0.0/16分为2个相等的191.100.0.0/17和191.100.128.0/17
变长子网划分:191.100.0.0/16分为191.100.0.0/17和191.100.128.0/18和191.100.192.0/18
总结:变长子网划分相对于等长子网划分,就是他划分的子网可以不等长。
需求案例
若需要让100台主机在同一网段内,那么就分配一个C类网段,比如192.168.0.0/24
分配100台——能用256-2=254(浪费!)
192.168.0.0/24分为
192.168.0.0/25和192.168.0.128/25两个网段
这样每个网段能用的主机数为128-2=126台
超网
含义:跟子网反过来,他是将多个连续的网段合并成一个更大的网段
需求案例
原有200台计算机使用192.168.0.0/24网段,现在希望增加200台设备到同一个网段(前提有192.168.0.0和192.168.1.0)
因为总共需要400台主机位,我们可以将200台放在192.168.0.0/24网段,200台放在192.168.1.0/24网段,我们可以将这两个网段合成一个超网192.168.0.0/23(子网掩码左移一位)
合并网段的规律
注意:一定要清楚网段的含义
ARP协议
前言
含义:(address resolution protocol)地址解析协议,IP地址与MAC地址相比,只是个抽象的产物,将复杂的MAC地址进行了封装,让你以为实际是使用IP地址直接转发的。所以与DNS一样,还需要将IP地址转换为MAC地址来实现转发。这个协议就是ARP协议。
注意:
- ARP协议是一个三层协议,但是工作在二层。
- ARP作用是将一个已知的IP地址解析成MAC地址
- 在计算机网络中发送信息,我们只需要填写内容和对方的ip地址操作系统会根据目标ip自动查询arp表来获取对方的mac地址补齐IP包,从网卡发出。
执行过程
当计算机A想向计算机B发送消息时,操作系统并不会立即发出,其会先看自身ARP缓存是否有对应IP的MAC地址,若没有,则会发送一包arp广播报文出去,询问此IP地址的mac地址是多少此时该网段中的所有设备都收到了这个请求报文除了此ip地址以外的设备都会丢弃这个报文只有此ip的设备会回复自己的mac地址是多少,计算机B收到计算机A的mac地址后会先将计算机A的mac地址缓存到arp表(mac地址与ip地址的映射表)中,以便下次使用其后会将这封信补全从网卡发送出去,交换机根据目标mac地址找到计算机B所在的端口从此端口发送出去,计算机B便收到了数据。
注意:
- 在计算机中维护着一个IP地址和MAC地址映射的表,这个表叫做ARP表。
- ARP缓存在电脑关机后就消失了。
- 计算机a和计算机b通信,若计算机a和b都在同一网段,那么计算机a就通过arp协议获得计算机b的mac地址,若计算机a和b不在同一网段,那么计算机a就通过arp协议获得自己的网关mac发出。
ARP协议报文格式
理解:
- 硬件类型:硬件地址不只有以太网一种,是以太网类型时此值为1
- 上层协议类型:表示要映射的上层协议类型,IPV4则为0x0800
- MAC地址长度:就MAC地址的长度,为6
- IP地址长度:就IP地址长度,为4
- 操作类型:表示这个报文的类型,arp请求为1,arp响应为2,RARP请求为3,RARP响应为4
数据流动
- 广播请求:计算机a向计算机b发送arp报文(源mac:计算机amac,目标mac:广播mac;源ip:计算机aip,目标ip:计算机bip;数据:谁是计算机b的ip地址,将mac地址告诉计算机a的IP地址)
- 单播响应:计算机b向计算机a发送arp响应(源mac:计算机bmac,目标mac:计算机amac;源ip:计算机bip,目标ip:计算机aip;数据:ip为计算机bip的计算机mac地址为计算机b的mac地址)
网络层IP协议
前言:
- 网络层传输的数据为数据包(Packet),数据包由首部、数据两部分组成
- 网络层的数据一般都是由传输层传递下来的数据段
- 网络层数据的首部至少是20字节(因为有可选项,可选项最长40字节)、最长60字节,整个数据包大小不超过65535字节
数据包的理解:
- 版本:占4位,网络版本(IPV4/IPV6)用来告诉上层自己协议的版本,以便上层进行对应的操作
- 首部长度:数据包首部所占用的空间,占4位,二进制最终乘4才是最终长度(决定了首部最长60字节)因为固定首部20字节,所以可以告诉接收端是否启用了可选项
- 区分服务:占8位,其可以提高网络的服务质量;其中前3bit代表优先级,中4bit代表服务类型,最后1bit未被使用
- 总长度:占16位(2字节)代表数据包整体的长度,最大长度为2^16=65535字节;通过总长度和首部长度可以算出数据长度
- 标识:占16位, 数据包的id,当数据包过大进行分片时,同一个数据包所有的片标识都是一样的(有一个计数器专门管理数据包的id,每发出一个数据包,id就加1;一旦数据包超过2^16那么id又会从0开始算起)
- 标志:占3位,第一位(保留位)第二位(是否允许分片,0代表IP包进行了分片,1代表IP包没进行分片)第三位(1代表不是最后一片,0代表最后一片)
- 片偏移:占13位(片偏移×8就等于字节偏移——每一片的长度一定是8字节的整数倍),字节偏移就是分片后数据头部的起始位置
- 生存时间:占8位,每个路由器在转发之前会将TTL减1,一旦发现TTL减去后为0,路由器就会显示错误报告
- 协议:占8位,表明所封装的数据使用了什么协议(封装所用的协议以数字进行表示)其用来识别上层协议,决定数据走向(走向那个协议)
- 首部检验和:占16位,将网络包首部进行一个计算,计算出一个值,用来查看首部在传输过程中IP首部是否出现差错,若出错,则该包被丢弃。
理解片偏移
前言:因为网络层的数据需要传递给数据链路层,数据链路层的数据需要转换成以太网帧,而帧的数据部分不能超过1500字节,而数据包的最大长度为65535字节,已经超过1500字节;此时就需要将数据包进行分片,并且将分片好的数据传递给数据链路层,每片数据都是一个独立的以太网帧,都有自己的网络层首部,总长度都不会超过1500字节
注意:分片是对IP包的数据部分进行分片(不包括IP首部)
例子:ping ke.qq.com -l 4000
注意:通过分片的标识可以知道那些帧都共同属于之前的网络包,通过片偏移可以知道每个帧都属于之前网络包的那个位置,通过标志位可以判断该分片是否为最后一个分片。
生存时间存在的意义
我们的路由器都有路由表,用来决定路由器之间的传递规则,很多路由器都会设置默认路由(就是目标地址不确定就会走默认路由器),若发的数据包在所选的路由器都不可达,那么数据包就有可能在默认路由器之间来回穿梭,这样就长时间占用了带宽,设置了TTL就会防止数据包在信道中无穷无尽的传递
注意:
- 我们给别人发包时,发给别人的每个IP包文上都会有一个值,这个值叫初始TTL值,若TTL值为0,路由器就会把该包丢弃。
- TTL作用:防止一个数据包在互联网上无限的循环下去,占用网络资源
- 由于不同操作系统的默认TTL不一样所以,观察使用ping命令后的TTL,能够推测出对方的操作系统、中间经过了多少个路由器
ICMP协议
前言
含义:internet控制报文协议,用于在IP主机、路由器之间传递控制消息,控制消息指网络通不通,主机是否可达,路由是否可用等等。
注意:
- ICMP协议没有端口号(只有应用层协议才有端口号)
- ICMP协议主要是通过ping这个工具实现的
ICMP协议作用
- 网络探测:ping网络检测
- 路由跟踪:(windows:tracert IP地址)(linux/路由:traceroute IP地址)
- 错误反馈:只要是发生错误,任何一台设备有义务向别人发送ICMP回馈(通过抓包软件获取)
ICMP报文
注意:
- 探测报文的头部用来表明是那种探测,或者是那种回馈机制。
- 探测报文的数据由ICMP协议生成,往往是一个填充报文,仅仅作为一个普通意义的通信,没有具体意义(只是为了让对方收到这样一个数据证明对方收到数据了,然后再回馈我们)
头字段
type字段
前言:type字段主要表示操作类型。
- 8:ping请求
- 0:ping应答
- 3:目标不可达
- 11:超时(传输期间生存时间为0)
- 5:重定向
code字段
前言:code字段表示设备类型(其与type字段一起使用)
- 1:表示与主机相关的操作
- 3:表示与端口相关的操作
- 2:表示与协议相关的操作
具体案例
类型 | 代码 | 说明 |
8 | 0 | 请求 |
0 | 0 | 回显应答(比较正常的应答) |
3 | 1 | 目标不可达(主机不可达) |
11 | 0 | 超时(传输期间生存时间为0) |
3 | 3 | 目标不可达(端口不可达) |
3 | 2 | 协议不可达 |
5 | 0 | 重定向(网络重定向) |
5 | 1 | 主机重定向 |
注意:通过type与code的相互配合,我们可以精确的完成故障定位。