IP协议 DNS host文件

网络IP的知识

概念

  • IP协议的功能

    • 补充:IP协议的主要功能是提供在不同主机之间传递数据的能力。它负责根据 IP 地址找到合适的路径,将数据包从源主机传递到目标主机 —— 即路径选择。IP 协议是无连接的,并且不保证数据包的顺序或可靠传递。
  • 其他协议(如 TCP)

    • 补充:在 IP 协议之上,其他协议如 TCP提供了更高级别的功能。

      • 如TCP 负责确保数据的可靠性、顺序性和完整性。它通过建立连接、序列号、确认应答、重传机制等手段来确保数据从源到目的地的可靠传输。
  • 为什么要使用IP地址?网络是由一个一个局域网连接构成的,当数据传递的时候,我们根据IP信息就可以淘汰绝大多数局域网,而找到特定局域网内的特定主机,提高了数据传输的效率。

IP协议

IP报文格式

  • IP地址包含网络号主机号
  • IP协议位于网络层

IP协议头格式

  1. 4位版本号: 指定IP协议的版本,对于IPv4来说,就是4

  2. 4位头部长度: 指定IP头部的长度是多少个32位(4字节)。该长度乘以4即为IP头部的字节数。由于4位长度字段最大值为15,所以IP头部的最大长度是60字节。

    • 头部长度: IP头部的最小长度为20字节(不包含选项字段)。
  3. 8位服务类型: 包含3位优先权字段(已弃用)、4位TOS字段和1位保留字段(必须置为0)。4位TOS字段用于指示数据报的传输优先级:

    • 最小延时
    • 最大吞吐量
    • 最高可靠性
    • 最小成本
      这四个选项相互冲突,只能选择一个。例如,ssh/telnet等程序注重最小延时,而ftp则注重最大吞吐量。
  4. **16位总长度 **: 表示整个IP数据报文的总长度,以字节为单位。

    • 结合首部长度20字节的报头部最小长度(不包含选项),我们可以做到报头和有效载荷的分离。
  5. **16位标识 **: 唯一标识主机发送的报文。如果IP数据报在数据链路层被分片,则每个片的ID都相同。

    • 因为数据链路层的传输大小是有最大限度的,当大小超过限度时,就会对IP进行分片
  6. 3位标志字段:

    • 第一位保留(未使用)。
    • 第二位表示禁止分片(DF, Don’t Fragment)。如果设置此位,当报文超过MTU(最大传输单元)时,IP模块会丢弃报文。
    • 第三位表示更多分片(MF, More Fragments)。如果报文被分片,则最后一个分片的该位为0,其他分片该位为1。
  7. 13位分片偏移 (Fragment Offset): 表示当前分片在原始IP数据报中的偏移位置。偏移量以8字节为单位,因此除最后一个分片外,其他分片的长度必须是8的整数倍。

  8. 8位生存时间 (Time To Live, TTL): 指定数据报在网络中的最大跳数(即经过的路由器数量)。每经过一个路由器,TTL值减1。如果TTL减到0且未到达目的地,数据报将被丢弃。此字段用于防止数据报在网络中无限循环。

  9. 8位协议 (Protocol): 指定上层协议的类型(如TCP、UDP等)。

    • 代表我们要将IP交给哪一个上层的协议。实现了将有效载荷向上交付。
  10. 16位头部校验和: 用于校验IP头部的完整性,采用CRC校验。

  11. 32位源地址和32位目标地址: 分别表示数据报的发送端和接收端IP地址。

    • 这也就是为什么在应用层中,我们需要将点分十进制的IP转化为uint32 IP
  12. 选项字段 (Options, 可变长,最多40字节): 用于指定特殊的控制功能,如时间戳、记录路由、严格源路由等。

因为IP具有自己的总长度,我们在转发时也是一个一个发送的,因此我们称它为IP报文

  • 因此字节流是传输层的概念。

IP的划分

通过合理设置主机号和网络号,可以确保在互联的网络中,每台主机的IP地址都是唯一的。然而,手动管理子网内的IP地址是相当麻烦的事情。

  • 为了解决这一问题,出现了一种叫做 DHCP (Dynamic Host Configuration Protocol) 的技术,能够自动为子网内的新主机分配IP地址,避免了手动管理IP的不便。通常,路由器都具备DHCP功能,因此路由器也可以视为一个DHCP服务器。

过去曾提出过一种根据IP地址的前几位来划分网络号和主机号的方案,将所有IP地址分为五类:

  • A类: 0.0.0.0 到 127.255.255.255
  • B类: 128.0.0.0 到 191.255.255.255
  • C类: 192.0.0.0 到 223.255.255.255
  • D类: 224.0.0.0 到 239.255.255.255 (多播地址)
  • E类: 240.0.0.0 到 255.255.255.255 (保留地址,通常用于实验目的)

然而,随着互联网的快速发展,这种划分方案的局限性很快显现出来。由于大多数组织都申请B类网络地址,导致B类地址很快就被分配完,而A类却浪费了大量的地址。例如,一个B类地址理论上可以支持多达65,534个主机,而A类地址可以支持更多的主机。然而,在实际的网络部署中,通常不会有一个子网内包含如此多的主机,因此大量的IP地址被浪费。

  • 为了解决这一问题,引入了 CIDR (Classless Inter-Domain Routing, 无类别域间路由) 的方案。CIDR 不再根据固定的A、B、C类来划分网络号和主机号,而是引入了一个额外的子网掩码(subnet mask)来区分网络号和主机号。

子网掩码是一个32位的整数,通常是以一串连续的”1”开头,后面跟着一串”0”。通过将IP地址与子网掩码进行“按位与”操作,可以得到网络号。CIDR的灵活性在于网络号和主机号的划分不再依赖于固定的A、B、C类,而是可以根据实际需要自定义子网掩码的长度,从而更高效地利用IP地址资源。

  • 子网掩码可以对IP地址进行任意划分子网。例如:122.133.144.155/24 表示子网掩码的前24位为1,后8位为0

例如:

字段
IP地址 140.252.20.68
子网掩码 255.255.255.240
网络号(IP&掩码) 140.252.20.64
子网地址范围(后面四个0全为1时,加15 140.252.20.64 - 140.252.20.79
十六进制 IP 8C FC 14 44
十六进制子网掩码 FF FF FF F0
十六进制网络号 8C FC 14 40

特殊的主机号

  • 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网。

  • 将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包。

  • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1。

IP不足的问题

CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用. 这时候有三种方式来解决:

  • 动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的;

  • NAT技术(Network Address Translation,网络地址转换):是一种用于在私有网络和公有网络之间转换IP地址的技术。它主要用于解决IP地址不足的问题,提升网络安全性,并允许多台设备通过一个公有IP地址访问互联网。

  • IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址。

    • 但是目前IPv6还没有普及。

端口号的消失

  • 在网络通信中,TCP层和UDP层属于传输层,负责为应用层提供端到端的通信服务。在传输层,端口号用于标识主机上的特定应用进程,以便将数据传递给正确的应用程序。因此,端口号是在传输层才有的概念,用于区分主机上的不同服务或进程。

设备

  • 主机: 配有IP地址,但不进行路由控制的设备。

  • 路由器: 既配有IP地址,又能进行路由控制的设备。

    • 路由器本质也是一个特定子网的主机,也要配置IP。

    • 路由器至少要连接两个子网,路由器也就相当于同时在两个子网中。

    • 路由器一般是一个子网中的第一台设备,一般它的IP地址都是:网络号.1

    • 路由器不仅可以进行IP报文的转发,还可以进行子网的构建。

  • 节点: 主机和路由器的统称。


DNS解析

DNS解析(Domain Name System Resolution)是将人类易于记忆的域名转换为计算机可理解的IP地址的过程。

  • DNS解析的作用是让用户能够通过域名访问网站、服务器或其他互联网资源,而不必记住复杂的IP地址。

DNS解析的工作原理

DNS解析通常分为以下几个步骤:

  1. 用户输入域名:用户在浏览器中输入域名,如”www.example.com"。

  2. 查询缓存:系统首先检查本地缓存中是否有该域名的IP地址记录。如果有,直接返回结果。如果没有,继续下一步。

  3. 递归查询:DNS解析器(通常由ISP提供)向根DNS服务器发送查询请求,根DNS服务器会返回顶级域(如.com)的DNS服务器地址。

  4. 查询结果:解析器向权威DNS服务器查询该域名的IP地址,并将结果返回给用户。

  5. 返回结果:浏览器使用获得的IP地址与目标服务器建立连接,从而访问网站或其他资源。

  6. 缓存结果:系统通常会将查询结果缓存一段时间,以加速后续的相同请求。

hosts 文件

  • 一个本地配置文件,用于在操作系统中将域名映射到IP地址。它的作用类似于DNS(Domain Name System),但工作在本地计算机上。可以在没有DNS服务器的环境中提供名称解析功能。

hosts 注意事项

  1. 优先级hosts 文件的名称解析优先级高于DNS解析。因此,如果hosts 文件中有条目,系统会优先使用这些条目,而忽略DNS服务器的解析结果。

  2. 全局影响hosts 文件的更改会影响整个系统的域名解析,所有用户和应用程序都会受到影响。

其他相关概念

  • A记录:将域名映射到IPv4地址。
  • AAAA记录:将域名映射到IPv6地址。
  • CNAME记录:将一个域名映射到另一个域名。
  • MX记录:用于定义邮件服务器的DNS记录。

有意义的IP字段记录

名称 描述
本地环回地址127.0.0.1 通常用来本地进行客户端和服务器的测试
0.0.0.0 默认路由或者当本地主机上绑定 0.0.0.0 作为其 IP 地址时,它表示服务器将监听所有可用的网络接口上的所有 IP 地址。

IP协议 DNS host文件
https://weihehe.top/2024/08/14/IP/
作者
weihehe
发布于
2024年8月14日
许可协议