前置知识:
什么是IP协议:
IP协议是一种网络层协议,负责将数据可靠的从源主机跨网络找到目的主机传输过去
1.ARP和RAPR分别是什么?有什么区别?
答:
都是地址解析协议,两者都是数据链路层上的协议
ARP把ip地址转为mac地址
RARP把mac地址转为ip地址
由于网络通讯时,只知道对方ip和端口,不知道对方mac地址
数据包需要首先被网卡收到,如果收到数据包的硬件地址与本机不符,直接丢弃,因为必须获取对方的mac地址
获取到对方的mac地址再封装成数据帧-》数据链路层的传输单位
发送数据时,先查缓存表有没有ip<-->mac映射关系,没有就通过ARP广播获取对方mac地址
RARP则是反向的,从mac到ip的转换
2.为什么要需要ARP协议?
答:
当数据在同一局域网传输时,底层物理设备只认识MAC地址,不认识IP地址
因此,只知道目标IP也必须要通过MAC地址把数据帧准确发送到目标设备
并且ARP还有缓存机制,第一次获取到对方的MAC地址后,会把IP地址和MAC的映射关系存入本地缓存表,后续直接从缓存中读取,无需重复广播,但是不会永久存储
3.为什么仅靠IP地址无法通信?
答:
注意:如果跨网段,获得的MAC地址是下一站的MAC地址 不是目的设备MAC,一层一层找到
局域网内的设备、网卡等只处理数据链路层的帧、而帧的头部需要目标MAC地址才能转发
如果没有MAC地址,无法确定该数据是要发给哪个设备的(相当于只知道对方身份证,但是不知道在哪个房间)
IP地址无法直接用于物理层传输,IP地址是逻辑地址,依赖网络层协议解析,物理层是网线、信号等传输的是数据帧,帧的格式由数据链路层定义,必须包含MAC地址才能被物理设备识别和转发
跨网段通信也依赖于MAC地址,即使目标设备在其他网段(需要路由器转发),你的设备也需要通过ARP先获取本地路由器接口的MAC地址,才能将数据发送到路由器,再由路由器转发到目标
网络
4.IP报文字段有哪些?
答:
32位源地址IP
32位目的地址IP
16位校验和
16位字节总长度 表示报文总长度
4位首部长度 表示报头长度
4位版本 表示IPV4还是IPV6
8位协议 表示TCP还是UDP
8位生存时间TTL 防止目标主机一直找不到,一直在网络里转发,就是一个计数器,过一个路由器减1,=0就不转发了,可以理解为这种
8位服务类型TOS 3位启用了,4位TOS字段,和一位保留字段(必须为0),4位TOS分别表示 最小延迟、最大吞吐量、最高可靠性,这四者冲突,只可以选择一位,根据情况选择,例如对于ssh/telnet这样的应用程序,延迟低重要,对于ftp这样的程序 吞吐量重要
16位标识 用来标识哪个报文 区分分片的原始报文包用的
13位片偏移 用来组装报文
3位标志 判断是否是分片
选项 除选项外报头长度固定20字节
5.关于分片的相关知识(MTU MSS)
答:
每个数据链路层的完整报文大小不能超过MTU最大传送单元 1500字节
IP层报文除了选项报头固定20字节,所以IP层最大有效载荷1500-20=1480字节
TCP层报文除了选项报头也是固定20字节,所以TCP层最大有效载荷1480-20=1460字节
所以 1460就是MSS 最大传输量/最大段尺寸 应用层传输数据就是这个大小了,传给TCP的
因为数据链路层最大每次传输一个MTU单元1500字节,所以如果上层的单次数据量超过这个
会进行分片(也就是分多次进行发送同一个报文,分开来发)
所以就产生了分片这个概念
6.分片的坏处?
答:
任何一个分片丢失,都会导致整个报文丢失(如果一个完整的报文分成多份来发送,一个丢了,整个就不完整了,判定为整个丢包了)
所以分片会大大增加丢包的概率,丢包就需要重传,也就是在TCP层增加了拥塞控制过于保守的情况,每次从1开始扩大拥塞窗口
滑动窗口一段一段的发也是为了减少分片,尽量不要一次超量发
TCP在建立连接的过程中,通信双方会进行MSS协商,最理想的情况 MSS的值正好就是不会被分片的长度,双方在发送SYN的时候会在TCP报头选项里面写入自己能支持的MSS值,然后双方得知对方的MSS值后,选择较小的作为最终MSS
7.如何分片组装呢?
答:
看16位标识符判断是哪个原始报文包
再看3位标识,第一位保留位不用看,看第二位和第三位
第二位为1代表禁止分片,超过MTU就丢弃报文
第三位为1代表后面还有一个分片,为0而且13位偏移量大于0代表也是分片
没有分片的话就是第三位是0,且片偏移量也是0
IP网络层通过16位标识符找到属于哪个原始报文,通过片偏移量标识在该原始报文的第几个位置开始,接受方将同一原始报文的所有分片放入一个临时缓冲区,等待组装完传给上层
8.什么时候分片,什么时候组装?
答:
都是在IP网络层进行的
有时候路由器的IP层从也能负责分片,但是路由器禁止组装(提供路由效率,避免分片太多),只能目的设备IP层组装
如果数据报大小超过了下一站网络的MTU,路由器的IP层会进行分片
9.你对IP的理解,为什么要分类?
答:
分五类网络 通过网络号+主机号定位一个IP
为了满足不同规模的网络需求,方便硬件快速查表,判断网段在哪里
10.为什么要子网划分、子网掩码?
答:
IP分类虽然解决了早期的地址分配问题,但是有明显缺陷,如果有人申请B类网络,但是用不完这么多主机号,造成浪费
于是提出了子网划分+子网掩码,将大网络拆分成子网络,提高地址利用率,优化网络性能
然后通过子网掩码,将一个大网络拆分成多个子网,每个子网仅分配需要用的主机号数,例如将一个B类网络分成256个C类大小的子网
缩小了广播域,在ARP协议中,可以广播整个网络,但是通过子网划分,缩小了广播范围,提高了性能
11.IPV4和IPV6有什么区别?
答:
IPV4 4字节 点分制 靠DHCP配置网关ip 发送端和路由器均可分片
IPV6 16字节 冒号分割制 靠SLAAC自动配置 仅发送端可以分片
IPV4 地址可能变化(NAT) IPV6可能保持一个地址
12.既然IP层会分片,为什么TCP还需要MSS
答:
TCP可以用MSS最大段尺寸把数据长度限制住,限制在MTU内,减少分片
因为分片缺点大,本身是被迫才创立的分片机制,能不分片尽量不分片
分片增大了ip头部,增大了丢包概率,ip还需组装分片,不分片可以提供吞吐量
13.NAT的作用是什么?
答:
网络地址转换
将内网私有地址端口映射到公网地址端口
节约了IPV4地址,因此了内网结构,提供端口转发
地址复用:让大量私有IP主机共用一个公网IP
静态NAT:一对一 内网IP永久对应一个公网IP
动态NAT:内网拨出时,从公网IP池分配一个,用完放回
14.什么是MAC地址?
答:
6字节,网卡的唯一标识,相当于车牌号,用于在网络中投递帧,同一局域网根据MAC地址交付到主机
ARP映射 IP->MAC 完成ip包->以太网帧的封装
15.你对DNS的理解?
答:
用于域名解析
16.如何获取客户端真实IP
答:
直接建立连接,从请求上下文拿取
17.什么时候用MAC,什么时候用MAC
答:
MAC地址用于局域网内的直接数据传输,工作在数据链路层,标识一个唯一设备
IP地址用于标识对方地址,工作在网络层
18.数据链路层看到IP却不用IP而是用MAC?
答:
注意点:如果跨网段ARP获得的MAC地址是下一条的MAC地址 不是目的MAC地址
如果需要跨网段,则MAC地址在别的网段会失效,路由器需要剥离MAC头部,解析出IP数据包,拿到对方的IP地址,根据路由表找到下一站路由器的IP
然后重新封装成新的帧,用下一条路由器的MAC地址作为目的MAC地址
19.DNS劫持是什么?如何应对?
答:
DNS劫持是攻击者篡改域名解析流程,返回了伪造的IP,导向了恶意站点
常见有钓鱼诈骗,广告注入,恶意软件分发,流量控制
可以通过加密传输来应对、或者删除本地Host缓存文件(木马可能篡改本地文件),清除DNS缓存
20.什么是网段划分
答:
网段划分是将IP地址划分为网络号和主机号,相同网段内的网络号可以相同,主机号不同,通过IP地址和子网掩码按位与获得网络号
21.WAN口IP和LAN口IP的作用
答:
路由器LAN口IP连接的主机 都从属于当前这个路由器的子网中
WAN口IP就是一个公网IP,上级子网给自己分配的,子网内的主机需要和外网通信时路由器把子网主机IP替换为WAN口IP
22.为什么DNS域名解析用UDP协议?
答:
因为UDP快,DNS协议只需要一个请求一个应答就行
而TCP需要三次握手 四次挥手
而且一般返回内容不超过512字节,UDP正好不能传输超过512的
23.为什么区域传送用TCP协议?
答:
因为TCP可靠性高,并且TCP传输内容大
24.DNS负载均衡是什么策略?
答:
为同一个域名配置多个IP地址,选择合适的IP地址返回,选择就近的或者根据负载量决定
25.额外补充
为了应对IP地址不足,提出了子网划分和子网掩码,最大化利用了IP地址
但是IP地址终究会数量不够,最大化利用也没用
所以又提出了
DHCP动态分配IP地址,入网才给地址,否则不给
NAT技术 公网和子网映射
IPV6
私有IP和公有IP 私有IP可以重复 公有IP不可以重复 (私有IP不可以出现公网中)





