IP
IP基础知识
IP基本认识
IP处于网络层,网络层的主要作用是:实现主机与主机之间的通信,也就是点对点通信。
- 网络层与数据链路层
- 数据链路层(MAC)是实现 直连的两个设备之间通信。
- ip负责没有直连的两个网络之间进行通信传输。
- 可以看到网络中传输数据包,源IP地址和目标IP地址在传输过程中是不会变化的,只有源MAC地址和目标MAC地址一直变化。
IP地址的基础知识
IP地址由32位整数来表示,计算机中是以二进制的方式处理的,人类为了记忆方便采用点分十进制,即将32位分为4组,每组以点隔开,再将每组转换为十进制。
IP地址的分类
分为5类:A,B,C,D,E类
- A,B,C类:主要有两个部分,分别是网络号和主机号。
- 最大主机个数如何计算:
- 主要看主机号的个数,最大主机数为2的主机号个数的幂次方减2.
- 为什么要减2
- 因为有两个IP地址是特殊的,分别是全1和全0地址,全1地址指定某个网络下所有主机,用于广播,全0指定某个网络。
- 广播地址用于什么
- 用于在同一链路中相互连接的主机之间发送数据包。
- 广播地址分为本地广播(在本网络内广播)和直接广播(不同网络之间广播)
- 最大主机个数如何计算:
- D,E 类地址,没有主机号,不可用于主机ip,D类常被用于多播,E类是预留的分类暂时未使用。
- 多播地址用于什么:
- 将包发送给特定组内的所有主机,不用广播用多播是因为多播可以穿透路由。
- 前四位1110表示多播地址,剩下28位是多播的组编号。
- 多播地址用于什么:
- IP分类的优点:
- 简单明了,选路(基于网络地址)简单
- IP分类的缺点
- 同一网络下没有地址层次
- 不能很好的与现实匹配,C类地址下主机数量太少,而B类地址主机数量又过多。
无分类地址CIDR
无分类地址中,IP地址前面是网络号,后面是主机号。
- 怎么划分网络号和主机号
- a.b.c.d/x ,其中/x表示前x位属于网络号,范围是0~32
- 子网掩码划分网络号与主机号,掩码就是将主机号掩掉,剩下的就是网络号。除此之外还有划分子网的功能。
将子网掩码和IP地址按位计算AND,就可以得到网络号。
- 为什么要分离网络号和主机号
- 两台计算机要通信,首先要判断是否处于同一个广播域内,即网络地址是否相同。
- 怎样进行子网划分
- 子网划分实际上是将主机地址划分为两个部分,子网网络地址和子网主机地址。
- 以C类为例,C类地址中前24位是网络号,最后8位是主机号,可从8位中选取前几位作为子网号进行子网划分。取两位可划分4个。
- 公有IP地址与私有IP地址
- ABC类分类地址中,实际上分为公有IP地址和私有IP地址,私有IP地址可以重复,允许自己管理,自己分配。
- 公有IP地址由内部IT人员管理。
IP地址与路由控制
IP地址中的网络地址是用于进行路由控制的,路由控制表中记录着网络地址与下一步应该发送至路由器的地址。
环回地址是不会流向网络,因为环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址,它是一个
特殊的ip地址,127.0.0.1作为环回地址。
IP分片与重组
每种数据链路的最大传输单元MTU是不相同的,当IP数据包大于MTU时,就要分片。
IPV6基本认识
ipv4地址是32位,在2011年就已经分配完了。 ipv6地址是128位,可分配地址特别多。
- ipv6亮点
- 可自定配置,服务器可以实现自动分配IP地址
- 包头包首部长度缩减,大大提高传输的性能
- 有应对伪造IP地址的网络安全功能,大大提升安全性。
- ipv6地址的标识方法
- ipv4地址长度128位,每16为一组,16进制表示,每组用冒号隔开
- ipv6地址结构
- 单播地址:划分为三类
- 链路本地单播地址(在同一链路单播通信,不经过路由器)
- 在内网单播通信,可以使用唯一本地地址
- 在互联网通信,可以使用全局单播地址
- 组播地址
- 任播地址:用于通信最近的节点,最近的节点是由路由协议决定
- 没有广播地址
- 单播地址:划分为三类
- ipv4 和ipv6首部对比,IPV6的改进有
- 取消了首部校验和字段,数据链路层和传输层都会校验。
- 取消了分片/重新组装相关字段。
- 取消选项字段,合并到了首部
IP协议相关技术
DNS域名解析
将通常上网使用的域名改写为IP地址,靠DNS域名解析实现
- 域名层级关系
- 以www.server.com为例,越靠右层级越高。各域名的层级关系类似一个树状结构
- 解析过程大概可以概述为先在本地找缓存,没有就找根域名服务器询问该向谁询问。
ARP
通过ARP协议求得下一跳MAC地址。
- ARP如何知道对方MAC地址
- 借助ARP请求 与 ARP响应,主机广播发送APR请求,拆开请求后对应设备会将自己的mac地址赛到arp响应包返回给主机。
- RARP协议
- 与ARP协议相反,它为已知MAC地址求IP地址。
DHCP
用于获取IP地址,步骤为:
但是全程都使用UDP广播通信,如果服务端和客户端不在同一个局域网内,就出现问题了
为了解决这一问题,出现了DHCP中继代理,有了中继代理,对不同网段的IP地址分配也可以是由一个DHCP服务器统一进行管理。
NAT
为了缓解ipv4地址紧缺问题,提出了一种网络地址转换NAT的方法,及就是将私有IP地址转换为公有地址。
当然只是这样的转化不足够缓解地址紧缺,于是提到了NAPT技术;
NAPT技术是将IP地址和端口号一起进行转换,这样就用一个全球IP地址就可以了,原来不同的私有IP地址现在转化为公有地址,但是以不同端口号作为区分。
- NAT的潜在问题
- NAPT无转换记录
- 转换表的生成与转换操作由性能开销
- 通信过程中,路由器重启,所有TCP连接都将会被重置。
- 解决方法:
- 改用IPV6:因为IPv6范围大
- NAT穿透技术:客户端主动从NAT中获取公有IP地址。
ICMP
(互联网控制报文协议)
- ICMP功能有啥
- 确认IP包是否成功送达目标地址
- 报告发送过程中IP包被废弃的原因和改善网络设置
- 分类:
- 查询报文类型:用于诊断查询消息
- 差错报文类型:用于通知出错原因的错误消息
IGMP
是因特网组管理协议,工作在主机(组播成员)和最后一跳路由之间
- 工作机制
- 常规查询与响应工作机制:周期性发送查询报文,主机收到并发送成员关系报告,路由器再记录组播成员关系到IGMP路由表。
- 离开组播组工作机制:主机1离开时,发送给路由器离开报文,路由器查询该组还有没有其他成员,有则主机返回成员关系报告,无则删除该组。
ping的工作原理
ICMP协议
全称是互联网控制报文协议,通过传输所遇问题的消息,达到控制的目的
- ICMP的功能有啥
- 确认ip包是否成功送达目的地址、报告发送过程中IP包被废弃的原因和改善网络配置等。
- ICMP的包头格式
- ICMP报文是封装在IP包里面的,工作在网络层、是ip协议的助手。
- ICMP包头的类型
- 查询报文类型
- 回送请求(8)
- 回送应答(0)
- 差错报文类型
- 目标不可达消息(3)
- 主机不可达
- 协议不可达
- 端口不可达
- 需要进行分片但是设置了不分片
- 原点抑制消息(4)
- 为了缓和低速广域线路下连WAN的路由器可能会遇到网络拥堵的问题,遇到时给主机发送原点抑制消息。
- 重定向消息(5)
- 超时消息(11)
- 目标不可达消息(3)
- 查询报文类型
PING 查询报文类型使用
traceroute 差错报文类型的使用
- 作用1
- 故意设置特殊的TTL,追踪去往目的地时沿途经过的路由器
- 作用2
- 故意设置不分片,从而确定路径的MTU
断网了,还能ping通127.0.0.1吗
- 127.0.0.1是回环地址,localhost是域名,但是默认等于127.0.0.1。而且ipv4中,127开头的都属于回环地址
- ping回环地址和ping本机地址是一样的路径,都是通过lo0假网卡经过网络层和数据链路层后一个大转弯, 将数据插入一个链表后就软中断,并
通知KSOFTIRQD来进行收数据的逻辑。 - 服务器listen的是0.0.0.0,那么此时用127.0.0.1和本机地址都可以访问到服务。0.0.0.0本身是一个无效地址。