IP基本认识
数据链路层:MAC实现直连的两个设备之间的通信; 网络层:IP负责没有直连的两个网络之间的通信。
因此,源IP地址和目标IP地址在传输过程中是不会变化的; 源MAC地址和目标MAC地址一直在变化。
IP地址
IP地址是以网卡来配置的; 服务器,路由器等设备都是有2个以上的网卡; 一块网卡也可以设置2个以上的IP。
IP地址的分类
其中,
- 主机号全为0,指定某个网络。
- 主机号全为1,指定某个网络下的所有主机,用于广播;
广播地址分为本地广播和直接广播。
- 在本网络内广播的叫做本地广播;
- 在不同网络之间的广播叫做直接广播。(有一定的安全问题,路由器不转发)
组播地址用于什么?
组播用于将包发送给特定组内的所有主机。 广播无法穿透路由,组播可以穿透路由。
组播地址划分为三类:
- 预留的组播地址。只能在局域网中,路由器不转发;
- 用户可用的组播地址。可以用于Internet上。
- 本地管理组播地址。供内部网使用。
IP分类的缺点
- 同一网络下没有地址层次;
- 不能很好的与现实情况匹配。
无分类地址CIDR
两台计算机要通讯,首先判断是否处于同一广播域内,即网络地址是否相同; 若相同,则可以把数据包直接发送到目标主机。
路由器寻址工作,也是根据IP地址的网络号进行转发。
怎么进行子网划分?
公有IP地址与私有IP地址
IP地址与路由控制
在路由控制表中找到与目标地址具有相同网络地址的记录; 若存在多条,则选择相同位数最多的网络地址。(最长匹配)
若不存在,则转发到默认路由。
环回地址是同一台计算机上的程序之间进行网络通信的默认地址:127.0.0.1(localhost)。数据包不会流向网络。
IP分片与重组
在分片传输中,一旦分片丢失,会造成整个IP数据报作废。 (IP层若无法重组成一个完整的TCP/UDP报文,不会交付于传输层)。
所以,TCP引入了MSS; 对于UDP,我们尽量不要发送一个大于MTU的报文。
IPv6基本认识
IPv6地址长度是128位,每16位为一组。
若出现连续的0时可以省略,并用两个::隔开(只允许出现一次)。
- 单播地址,用于一对一的通信
- 组播地址,用于一对多的通信
- 任播地址,用于通信最近的节点,最近的节点由路由协议决定
- 没有广播地址
IPv6单播地址类型
- 同一链路单播通信,不经过路由器,可以使用链路本地单播地址;
- 在内网里单播通信,可以使用唯一本地地址,相当于Ipv4的私有IP
- 在互联网通信,可以使用全局单播地址,相当于IPv4的公有IP
IPv4首部与IPv6首部
- 取消了首部校验和字段。
- 取消了分片/重新组装相关字段。
- 取消了选项字段。删除选项字段使得IPv6首部成为固定长度的40字节。
IP协议
DNS
ARP
ARP是借助 ARP请求 与 ARP响应 确定MAC地址的。
RARP
DHCP
我们的电脑通常都是通过DHCP动态获取IP。
- DHCP交互中,全程都是使用UDP广播通信。
因为路由器不会转发广播包,为了解决这一问题,就出现了DHCP中继代理。
- DHCP客户端向DHCP中继代理发送DCHP请求包;而DHCP中继代理在收到这个广播包后,再以单播形式发给DHCP服务器。
- 服务器收到该包后,再以单播形式向DHCP中继代理返回应答,并由DHCP中继代理将此包广播给DHCP客户端。
NAT
为了缓解IPv4地址耗尽的问题,提出了NAT。
可以把IP+端口号一起转换:NAPT。
NAT穿透技术: 客户端主动从NAT服务器获取公有IP地址,然后自己建立端口映射条目,就不需要NAT设备来进行转化了。
ICMP
ICMP类型
IGMP
组播地址不是用于机器IP地址; 因为组播地址没有网络号和主机号。 组播地址用于UDP协议; 机器发送UDP组播数据时,目标地址填的是组播地址,那么组播组内的机器都能收到数据包。
常规查询与响应工作机制
- 路由器周期性发送目的地址为 224.0.0.1(表示同一网段内所有主机和路由器) IGMP常规查询报文。
- 主机1和主机3收到这个查询,随后启动计时器,在计时器超时后发送IGMP成员关系报告报文(目的IP地址为组播地址);若在超时前收到同一组内的成员关系报告报文,则自己不再发送。
- 路由器收到成员关系报文后,就会在IGMP路由表中加入该组播组;后续网络中一旦该组播地址的数据到达路由器,它会把数据包转发出去。
离开组播组工作机制
情况一,网段中仍有该组播组:
- 224.0.0.2(表示发向网段内的所有路由器)
情况二,网段中没有该组播组:
ping的工作原理
ICMP
ICMP包头格式
ICMP封装在IP包里,工作在网络层。
查询报文类型
会送消息--类型0和8
- 在选项数据中,ping还会存放发送请求的时间值,来计算往返时间。
差错报文类型
目标不可达消息
原点抑制消息
当路由器向低速线路发送数据时,发送队列缓存为0而无法发送出去时,可以向IP包的源地址发送ICMP原点抑制消息。
表示遇到了网络拥堵的问题。
可能会引起不公平的网络通信,一般不被使用。
重定向消息
路由器发现发送端主机使用了非最优路径发送数据,那么它会返回一个ICMP报文。该报文中包含了最合适的路由信息和源数据。
超时消息
IP包中有一个字段叫做TTL,每经过一次路由器-1;
TTL为0时,IP包被丢弃; 路由器发送一个ICMP超时消息给发送端主机。
解决循环状况。
ping——查询报文
发送过程:
traceroute——差错报文
作用一
故意设置特殊的TTL,来追踪去往目的地时沿途经过的路由器。
原理:生存期限从1开始顺序递增的同时发送UDP包。
发送方如何知道发送的UDP包到达了目的主机?
发送UDP包时,填入一个不可能的端口号; 当差错报文类型是端口不可达时,说明发送方发出的UDP包到达了目的主机。
作用二
故意设置不分片,从而确定路径的MTU。