目录
IP基本认识:
IP 在 TCP/IP 参考模型中处于第三层,也就是网络层。
网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。
IP的作用:
在复杂网络环境中,将数据包发送给最终目的的主机。
IP和MAC的区别:
IP处于网络层,MAC处于数据链路层。IP的作用是主机之间通信,MAC是实现直连的两个设备之间通信,IP负责在两个没有直连的两个网络之间进行通信。
IP地址基本知识:
IP地址定义:
TCP/IP网络通信时,为了保证正常通信,每个设备都需要配置正确的IP地址。
IP 地址(IPv4 地址)由 32
位正整数来表示,IP 地址在计算机是以二进制的方式处理,采用点分十进制的标记方式。
最大允许43亿台计算机连接到网络,IP地址根据网卡数据配置的,服务器、路由器是由2个以上的网卡,也就是说会有两个以上的IP地址。
43亿IP是不够用的,引入NAT技术,使得连接最大数可以超过43亿。
IP地址分类:
A、B、C类地址主要分为两个部分,分别是网络号和主机号。
(最大主机数计算方法:2的主机号次方-2:去掉全为0和全为1的两个地址号)
全为0:指定某一个网络,全为1:指定某个网络下的所有主机,用于广播。
广播:
同一个链路中相互连接的主机之间发送数据包。(主机部分全部改成1)
本地广播(在本网络内广播):广播地址的IP包会被路由器屏蔽。 192.168.0.0/24
直接广播(不同网络之间的广播):192.168.0.0/24 to 192.168.1.255/24 发IP包,192.168.1.0/24会收到转发,然后转发给192.168.1.1-255/24 所有主机。存在一定安全问题。
D、E类地址:没有主机号,不可用于主机IP,D类用于多播,E类是预留的分类。
多播:多播用于将包发送给特定组内的所有主机。前四位是 1110
就表示是多播地址。可穿透路由器。
地址分类方便分类网络地址、主机地址。
无分类IP地址
解决,不能很好的与现实网络匹配(c类地址包含最大主机数量太少254,b类地址太多),缺少选地址灵活性。
CIDR没有分类地址概念,32biteIP地址被分成两部分,前面是网络号,后面是主机号。
子网掩码:掩盖掉主机号,用于划分网络号和主机号 。
还可以子网划分,将主机地址分为两个部分:子网网络地址和子网主机地址。
网络号和主机号为什么要分离?
两个计算机通信,首先判断网络号是否相同,如果相同说明在同一个网络上,可以把数据包直接发送到目标主机。路由器寻址工作,也是通过找到网络号,进而把数据包转发给对应网络。
路由器只要一看到IP地址的网络号就可以转发。
公有 IP 地址与私有 IP 地址
A、B、C分类地址,有公有IP和私有IP地址,私有IP允许组织内部IT人员自己管理,自己分配且可重复,公有 IP 地址是有个组织统一分配的,由ICANN
组织管理,中国是由 CNNIC 的机构进行管理。
IP 地址与路由控制
IP地址的网络地址这一部分是用于进行路由控制。
路由控制表记录着网络地址与下一步应该发送至路由器的地址。在主机和路由器上都有各自的路由器控制表。
发送IP包,首先确定IP包首部中的目标地址,再由路由器表中找到与该地址具有相同网络地址的记录,根据该记录将IP包发给相应的下一个路由器。
IP 分片与重组
常见数据链路以太网,其链路最大传输单元MTU是1500字节。
IP数据包大于MTU时,IP数据包就会被分片。路由器不重组,只会在目标主机上重组。
IPv6 基本认识
IPV4是32位,大概42亿个IP地址;IPV6是128位,地址更多。相比于IPV4有更好的安全性和扩展性,可以带来更好的网络体验。
IPV4 和 IPV6不能兼容。
IPV6优点:
没有DHCP也可以实现自动分配IP地址,非常便捷,即插即用。
去掉了包头检验,简化了首部结构,提高了传输新能。
应对IP伪造网络安全功能以及防止线路窃听,提升了安全性。
IPV6标识方法:
IPv4 地址长度共 32 位,是以每 8 位作为一组,并用点分十进制的表示方式。
IPv6 地址长度是 128 位,是以每 16 位作为一组,每组用冒号 「:」 隔开。
IPV6地址的结构:
通过 IP 地址的前几位标识 IP 地址的种类。单播、组播、任播。
- 在同一链路单播通信,不经过路由器,可以使用链路本地单播地址,IPv4 没有此类型
- 在内网里单播通信,可以使用唯一本地地址,相当于 IPv4 的私有 IP
- 在互联网通信,可以使用全局单播地址,相当于 IPv4 的公有 IP
IPv4 首部与 IPv6 首部区别
取消了首部校验和字段:因为在数据链路层和传输层都会检验,IPV6直接取消了
取消了分片/重新组装相关字段: 分片和重组操作由IPv4协议的中间路由器执行,IPV6不允许中间路由器执行分片与重组,这种操作只能在源主机和目标主机下,大大提高了路由器转发速度,但是IPV6的最大传输单元大MTU
取消选项字段:
IP 协议相关技术
DNS
域名网址自动转换为具体的 IP 地址,用句点来分隔的,比如 www.server.com
,这里的句点代表了不同层次之间的界限,越靠右的位置表示其层级越高。
域名解析工作流程:
- 客户端首先查看本地缓存:输入网址www.server.com之后,浏览器首先查看本地缓存是否有该域名对应IP地址,有则直接返回。没有则查询本地DNS服务器。
- 客户端查询本地DNS服务器:客户端发送DNS请求给本地DNS服务器(也就是客户端的TCP/IP设置中填写的 DNS服务器地址)。本地DNS服务器收到请求后,查询缓存里是否有 www.server.com,有则直接返回 IP 地址。如果没有,本地 DNS服务器会向根域名服务器发送DNS请求。
- 本地DNS服务器发送请求给根DNS服务器:根域DNS服务器是最高层次的,不直接用于域名解析,但可以查询顶级域DNS服务器IP地址。根 DNS 收到来自本地 DNS 的请求后,发现后置是 .com,返回 .com 顶级域名服务器IP地址。
- 本地DNS服务器发送请求给顶级域DNS服务器:本地 DNS 收到顶级域名服务器的地址后,给顶级域DNS服务器发起请求查询 www.server.com 的 IP 地址,顶级域名服务器返回负责 www.server.com 区域的权威域 DNS 服务器的IP地址。
- 本地DNS服务器发送请求给权威域DNS服务器:本地 DNS 发送请求给权威 DNS 服务器,权威域DNS服务器返回www.server.com 的 IP 地址。
- 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。
DNS查询方式:迭代和递归(一般是迭代轻松)
ARP
ARP 协议,Address Resolution Protocol,地址解析协议,它是用于实现 IP 地址到 MAC 地址的映射。
传输一个IP数据报的时候,确定了源IP地址和目标IP后,就会通过主机的路由表确定IP数据包的下一跳,网络层的下一层是数据链路层,还要知道下一跳的MAC地址。
由于主机路由表中可以找到下一跳的IP地址,ARP是用来找下一跳的MAC地址。
- 首先,每台主机都会在自己的 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协议
MAC地址转IP地址,打印机等小型嵌入式设备接入到网络。
通常这需要架设一台 RARP
服务器,在这个服务器上注册设备的 MAC 地址及其 IP 地址。然后再将这个设备接入到网络,接着:
- 该设备会发送一条「我的 MAC 地址是XXXX,请告诉我,我的IP地址应该是什么」的请求信息。
- RARP 服务器接到这个消息后返回「MAC地址为 XXXX 的设备,IP地址为 XXXX」的信息给这个设备。
DHCP协议
电脑通常都是通过 DHCP 动态获取 IP 地址,大大省去了配 IP 信息繁琐的过程。
DHCP 客户端进程监听的是 68 端口号,DHCP 服务端进程监听的是 67 端口号。
DHCP工作的四个步骤:
1. 客户端首先发起DHCP发现报文的IP数据报,客户端没有IP地址,所以使用的是UDP的广播通信,广播目的地址是255.255.255.255(端口67)并且使用0.0.0.0(端口68)作为源IP地址。DHCP 客户端将该 IP 数据报传递给链路层,链路层然后将帧广播到所有的网络中设备。
2. DHCP服务器收到DHCP发现报文时,用DHCP提供报文向客户端做出响应。该报文任然使用IP广播地址255.255.255.255,该报文信息携带服务器提供可租约的IP地址、子网掩码、默认网关、DNS服务器以及IP地址租用期。
3. 客户端收到一个或多个服务器的DHCP提供报文后,从中选择一个服务器,并向选中的服务器发送DHCP请求报文进行响应,回显配置信息的参数。
4. 服务端用DHCP ACK报文对DHCP请求报文进行响应,应答所要求的参数。
一旦客户端收到 DHCP ACK 后,交互便完成了,并且客户端能够在租用期内使用 DHCP 服务器分配的 IP 地址。
NAT协议
(网络地址转换Network Address Translation)将本地地址转换成全球IP地址,缓解IPV4地址耗尽的问题。
NAT就是同个公司、家庭、教室内的主机对外部通信时,把私有IP地址转换成公有IP地址。可以把IP地址+端口号一起进行转换。这样,就用一个全球IP地址就可以了,这种转换技术叫网络地址与端口转换NAPT。
例子:两个客户端 192.168.1.10 和 192.168.1.11 同时与服务器 183.232.231.172 进行通信,并且这两个客户端的本地端口都是 1025。此时,两个私有 IP 地址都转换 IP 地址为公有地址 120.229.175.121,但是以不同的端口号作为区分。生成一个 NAPT 路由器的转换表,就可以正确地转换地址跟端口的组合,令客户端 A、B 能同时与服务器之间进行通信。
转换表会在NAT路由器上自动生成,在TCP的情况下,建立TCP连接首次握手时的SYN包一经发出,就会生成这个表。而后又随着收到关闭连接时发车FIN包的确认应答从表中被删除。
NAT缺点:
- 外部无法主动与 NAT 内部服务器建立连接,因为 NAPT 转换表没有转换记录。
- 转换表的生成与转换操作都会产生性能开销。
- 通信过程中,如果 NAT 路由器重启了,所有的 TCP 连接都将被重置。
解决:
第一种就是改用 IPv6
第二种 NAT 穿透技术
ICMP
(Internet Control Message Protocol) ,网际控制报文协议,介于IP层和TCP层之间的协议,一般认为属于IP层协议。
ICMP
主要的功能包括:确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等。
在IP通信中,如果某个IP包因为某种原因未能到达目标地址,那么这个具体的原因将由ICMP负责通知。
ICMP分类:
1. 用于诊断的查询消息,也就是查询报文类型;
2. 通知出错原阴的错误消息,差错报文类型。
IGMP
IGMP 是因特网组管理协议,工作在主机(组播成员)和最后一跳路由之间
IGMP报文向路由器申请加入和退出组播组,默认情况下由路由器是不回转发组播包到连接中的主机,除非通过IGMP加入到组播组,主机申请加入到组播组时,路由器就会记录IGMP路由器表,路由器表后续会转发组播到对应主机。
- IGMP 报文采用 IP 封装,IP 头部的协议号为 2,而且 TTL 字段值通常为 1,因为 IGMP 是工作在主机与连接的路由器之间。