四、IP篇
⽹络层的主要作⽤是:实现主机与主机之间的通信,也叫点对点(end to end)通信
IP的作用是在复杂的网络环境中将数据包发送给最终目的主机
1. IPv4
(1)IP的基本知识
ipv4:32位;点分十进制
IP地址的最大值:2^32 = 4294967296
IP地址个数不是主机个数决定,而是网卡个数决定
像服务器、路由器等设备都是有2个以上的网卡,也就是有2个以上的IP地址
ipv6:128位
(2)IP层如何分片?
1. 以太网规定了最大传输单元MTU是1500字节,也就是单次传输的最大IP包大小。 2. 当网络包超过MTU的大小,就会在网络层分片,以确保分片后的IP包不会超过MTU大小。 如果MTU越小,需要的分包就越多,那么网络吞吐能力就越差;相反的,如果MTU越大,需要的分包就越少,那么网络吞吐能力就越好。
(3)IP地址的分类
IP地址 = 网络号 + 主机号
ABC类地址:
DE类:
ABC类地址最大主机个数是如何计算的?
最大主机个数,就是要看主机号的位数。 如C类地址的主机号占8位,那么C类地址的最大主机个数:2^8 - 2 = 254 为什么减2? 有两个特殊的IP地址,全1和全0 主机号全为1指定某个网络下的所有主机,用于广播 广播地址 主机号全0指定某个网络 网络地址
问:广播地址用于什么? 答:用于在同一个链路中相互连接的主机之前发送数据包。 学校班级中就有⼴播的例⼦,在准备上课的时候,通常班⻓会喊:“上课, 全体起⽴!”,班⾥的同学听到这句话是不是全部都站起来了?这个句话就有⼴播的含义。 广播地址可以分为本地广播和直接广播两种
问:多播地址用于干什么? 答:用于将包发送给特定组内的所有主机 还是举班级的栗⼦,⽼师说:“最后⼀排的同学,上来做这道数学题。”,⽼师指定的是最后⼀排的同学,也就是多播的含义了。 由于⼴播⽆法穿透路由,若想给其他⽹段发送同样的包,就可以使⽤可以穿透路由的多播。
多播使⽤的D类地址,其前四位是1110就表示是多播地址,⽽剩下的28位是多播的组编号。 从 224.0.0.0 ~ 239.255.255.255 都是多播的可⽤范围,其划分为以下三类: * 224.0.0.0 ~ 224.0.0.255 为预留的组播地址,只能在局域⽹中,路由器是不会进⾏转发的。 * 224.0.1.0 ~ 238.255.255.255 为⽤户可⽤的组播地址,可以⽤于Internet上。 * 239.0.0.0 ~ 239.255.255.255 为本地管理组播地址,可供内部⽹在内部使⽤,仅在特定的本地范围内有效。
问:IP地址分类优缺点 优点:划分简介明了 缺点:ABC类有个尴尬处境,就是不能很好的与显示网络匹配 C类地址能包含的最大主机数量太少(254个),一个网吧都不够用 B类地址能包含的又太多,一般企业基本达不到这个规模
(4)怎么计算网络号?
还有另⼀种划分⽹络号与主机号形式,那就是⼦⽹掩码
,掩码的意思就是掩盖掉主机号,剩余的就是⽹络号
问:为什么要分离网络号和主机号? 答:因为两台计算机要通讯,首先要判断是否处于同一个广播域内,即网络地址是否相同。如果网络地址相同,表明接收方在本网络上,那么可以把数据包直接发送到目标主机。
路由器寻址⼯作中,也就是通过这样的⽅式来找到对应的⽹络号的,进⽽把数据包转发给对应的⽹络内。
(5)IPv4地址不够怎么解决?NAT是什么?
怎么解决? 1. 其实我们平时上网,电脑的IP地址都是属于私有地址,我无法出网关,我们的数据都是通过网关中转的,这个其实就是NAT协议,可以用来暂缓IPv4地址不够。 2. IPv6作为接替IPv4的下一代互联网协议,其可以实现2^128个地址。这个数量级足够为地球上每一颗沙子分配一个IP地址。
NAT:Network Address Translation,网络地址转换协议 用于全球IP(外网)和私有IP(内网)的转换,(网关)。 1. 对于全球IP,显然每个IP都是唯一的,而对于私有IP,同一个局域网内,也得是唯一的,但在两个不同的局域网中,是可以有相同的私有IP的。 2. 局域网内主机之间的通信,是不需要进行地址转换的,而如果需要访问外网,才需要进行地址转换。 实际上,我们也可以把这种地址转换称之为一种代理。网关就相当于一个代理,把局域网内的主机的一些信息都给隐藏了起来。
2. IPv6
(1)IPv6亮点
IPv6地址长度:128位
1. IPv6可⾃动配置,即使没有DHCP服务器也可以实现⾃动分配IP地址(即插即⽤)。 2. IPv6包头包⾸部⻓度采⽤固定的值40字节,去掉了包头校验和,简化了⾸部结构,减轻了路由器负荷,⼤⼤提⾼了传输的性能。 3. IPv6有应对伪造IP地址的⽹络安全功能以及防⽌线路窃听的功能,⼤⼤提升了安全性。 ...
(2)IPv6地址结构
IPv6没有了广播地址
(3)IPv4首部 VS IPv6首部
* 取消了⾸部校验和字段。 因为在数据链路层和传输层都会校验,因此IPv6直接取消了IP的校验。 * 取消了分⽚/重新组装相关字段。 分⽚与分组是耗时的过程,IPv6不允许在中间路由器进⾏分⽚与重组,这种操作只能在源与⽬标主机,这将⼤⼤提⾼了路由器转发的速度。 * 取消选项字段。 选项字段不再是标准IP⾸部的⼀部分了,但它并没有消失,⽽是可能出现在IPv6⾸部中的「下⼀个⾸部」指出的位置上。删除该选项字段使的IPv6的⾸部成为固定⻓度的40字节。
IPv4首部:20字节 IPv6首部:40字节 IPv4地址长度:32位 IPv6地址长度:128位
3. 一些协议
(1)DHCP
我们平时上网的电脑的IP是如何来的?--两种方式: 1. 手动配置 2. 自动配置,通过DHCP服务器获取ip
客户端请求ip 客户端发送一个广播到局域网内的所有其他主机上。平时广播的ip是255.255.255.255,目的端口是68。为了让别人只知道它是来请求一个ip的,客户端把0.0.0.0作为自己的源ip,源端口号为67。 这个请求ip的报文称为discover报文。(discover报文包含了发送方的MAC地址)
DHCP响应 当DHCP服务器收到这个报文后,看源地址0.0.0.0知道是请求ip的报文,就会提供一个ip,包括ip地址,子网源码,网关、ip的有效期等信息。 把DHCP提供的ip地址的报文称为offer报文。
客户端挑选ip地址 有可能不止一台DHCP服务器收到了discover请求报文,所以我们的主机会收到多个offer报文,主机会在其中选择一个心仪的offer报文来作为自己的ip,一般是选择最先收到的offer报文。选择好后,会给对应的DHCP服务器发送一个request报文。 DHCP收到request报文之后,会给它回复一个ACK报文,并且把这个分配出去的ip进行登记(标记已被使用)。
(2)ARP
问:什么是ARP协议? Address Resolution Protocol,地址解析协议,是根据IP地址获取MAC地址的协议。 问:ARP工作原理? 网络层的ARP协议完成了IP地址与物理地址的映射。首先,每台主机都会在自己的ARP缓冲区建立一个ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包发送到目的主机时,会首先检查自己的ARP列表中是否存在该IP地址对应的MAC地址:如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。 此ARP请求数据包里面包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表,如果ARP表中已经存在该IP信息,则覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查询的MAC地址;源主机收到这个ARP响应数据包后,将得到目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。 如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
问:RARP协议? 反地址解析协议,Reverse Address Resolution Protocol,已知MAC地址求IP地址 通常这需要架设⼀台RARP服务器,在这个服务器上注册设备的MAC地址及其IP地址。然后再将这个设备接⼊到⽹络,接着: 1. 该设备会发送⼀条「我的MAC地址是XXXX,请告诉我,我的IP地址应该是什么」的请求信息。 2. RARP服务器接到这个消息后返回「MAC地址为XXXX的设备,IP地址为XXXX」的信息给这个设备。
(3)DNS
(1)DNS是什么?
Domain Name System;域名系统 DNS可以将域名网址自动转换为具体的IP地址 DNS的域名都是用`句点`来分隔的,比如www.server.com,这里的句点代表了不同层次之间的界限。 在域名中,越靠右的位置表示其层次越高;域名的层次关系类似一个树状结构: * 根DNS服务器 * * 顶级域DNS服务器(com) * * * 权威DNS服务器(server.com)
(2)域名解析的工作流程
浏览器首先看一下自己的缓存里面有没有 没有再查看操作系统的缓存 还没有就检查本机域名解析文件hosts 如果还没有,就会向DNS服务器进行查询,查看的过程如下:(分级查询) 1. 客户端首先会发出一个DNS请求,问www.server.com的IP是啥,并发给本地DNS服务器 2. 本地域名服务器收到客户端的请求后,如果缓存里的表格能找到www.serverr.com,则它直接返回IP地址。 如果没有,本地DNS会问它的根域名服务器 3. 根DNS收到来自本地DNS的请求后,发现后置是.com,会返回.com顶级域名服务器地址 4. 本地DNS服务器再询问顶级域名服务器,返回权威域名服务器地址 5. 本地DNS服务器再询问权威服务器,得到IP
(3)谈谈你对域名缓存的了解?
(4)DNS为什么用UDP?
(5)简单说下怎么实现DNS劫持
DNS劫持即域名劫持,是通过将原域名对应的IP地址进行替换从而使用户访问到错误的网站或者使得用户无法正常访问网站的一种攻击方式。域名劫持往往只能在特定的网络范围内进行,范围外的DNS服务器能够返回正常的IP地址。攻击者可以冒充原域名所属机构,通过电子邮件的方式修改组织机构的域名注册信息,或者将域名转让给其他组织,并将新的域名信息保存在所指定的DNS服务器中,从而使得用户无法通过对原域名进行解析来访问目的网站。
(4)ICMP
ICMP:Internet Control Message Protocol;互联网控制报文协议
ICMP主要功能:确认IP包是否成功送达目标地址、报告发送过程中IP包被废弃的原因、改善网络设置等。
ICMP报文是封装在IP包里面的,它工作在在网络层,是IP协议的助手。
1. ICMP包头格式
ICMP报文是封装在IP包里面的,它工作在在网络层,是IP协议的助手。
2. ICMP类型
1. 一类是用于诊断的查询消息,也就是 查询报文类型 2. 一类是通知出错原因的错误消息,也就是 差错报文类型
查询报文类型:类型0和8 回送消息用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息,ping命令就是利用这个消息实现的。
3. ICMP有哪些应用?
(5)IGMP
IGMP:Internet Group Management Protocol;因特网组管理协议
和ICMP没有关系,就好像周杰和周杰伦的区别
组播地址,也就是D类地址,既然是组播,那就说明是只有⼀组的主机能收到数据包,不在⼀组的主机不能收到数组包,
怎么管理是否是在⼀组呢?那么,就需要IGMP协议了。
IGMP工作在主机(组播成员)和最后一条路由之间
* IGMP报文向路由器申请加入和退出组播组,默认情况下路由器是不会转发组播包到连接中的主机,除非主机通过IGMP加入到组播组。 主机申请加入到组播组时,路由器就会记录IGMP路由器表,路由器后续就会转发组播包到对应的主机了。 * IGMP报文采用IP封装,IP头部的协议号为2,而且TTL字段值通常为1,因为IGMP是工作在主机与连接的路由器之间。
4. IP详解
(1)IP层怎么区分UDP报文还是TCP报文
根据端口区分:看IP头中的协议标识字段,17是UDP,6是TCP
(2)网络层到数据链路层的交互过程
* 网络层到数据链路层使用MAC地址作为通信目标,数据包到达网络准备往数据链路层发送的时候,首先会去自己的ARP缓存表(存放ip-mac对应关系)去查找该目标IP的MAC地址,如果查到了,就将目标IP的MAC地址封装到链路层数据包的包头。 * 如果缓存中没有找到,会发起一个广播:who is ipXXX tell ipXXX,所有收到的广播的机器看这个IP是不是自己的,如果是自己的,则以单播的形式将自己的MAC地址恢复给请求方。
(3)无分类地址CIDR
正因为IP分类的许多缺陷,提出了无分类地址的方案,即CIDR
怎么划分网络号和主机号?
表示形式:a.b.c.d/x /x表示前x位属于网络号 x的范围为0~32 使得IP地址更加灵活
(4)怎么进行子网划分?
(5)IP地址与路由控制
IP地址的网络地址这一部分是用于进行路由控制
路由控制表中记录着网络地址与下一步应该发送至路由器的地址。
在主机和路由器上都会有各自的路由器控制表。
在发送IP包时,首先要确定IP包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就是最长匹配。
(6)环回地址是不会流向网络
环回地址时在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。
计算机使用一个特殊的IP地址127.0.0.1
作为环回地址。与该地址具有相同意义的是一个叫做localhost
的主机名。
使用这个IP或主机名时,数据包不会流向网络。
(7)分片与重组
(8)MAC是什么?与IP的区别?
问:MAC地址是什么? Media Access Control Address,媒体存取控制地址,也称为局域网地址、以太网地址、物理地址。长48位。 连入网络的每一个计算机都会有网卡接口,每一个网卡都会有唯一的地址,这个地址就是MAC地址。计算机之间的数据传送,就是通过MAC地址来唯一寻找、传送的。MAC地址由48个二进制位构成,在网卡生产时就被唯一标识。
问:MAC和IP地址的区别? 1. MAC地址是一个硬件地址,用来定义网络设备的位置,主要由数据链路层负责。 2. IP地址是IP协议提供的一种统一的地址格式,为互联网的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。 MAC的作用是实现直连的两个设备之间通信;IP负责在没有直连的两个网络之间进行通信传输。 简单来说,IP地址主要用来网络寻址用的,就是大概定位你在哪里;而MAC地址则是主机身份的唯一象征,通过MAC来唯一确认这个人是不是你,MAC地址不具备寻址的功能。
(9)广播