IP协议 DNS host文件
网络IP的知识
概念
IP协议的功能:
- 补充:IP协议的主要功能是提供在不同主机之间传递数据的能力。它负责根据 IP 地址找到合适的路径,将数据包从源主机传递到目标主机 —— 即路径选择。IP 协议是无连接的,并且不保证数据包的顺序或可靠传递。
其他协议(如 TCP):
补充:在 IP 协议之上,其他协议如 TCP提供了更高级别的功能。
- 如TCP 负责确保数据的可靠性、顺序性和完整性。它通过建立连接、序列号、确认应答、重传机制等手段来确保数据从源到目的地的可靠传输。
为什么要使用IP地址?网络是由一个一个局域网连接构成的,当数据传递的时候,我们根据IP信息就可以淘汰绝大多数局域网,而找到特定局域网内的特定主机,提高了数据传输的效率。
IP协议
- IP地址包含网络号和主机号。
IP协议
位于网络层
IP协议头格式
4位版本号: 指定IP协议的版本,对于IPv4来说,就是
4
。4位头部长度: 指定IP头部的长度是多少个32位(4字节)。该长度乘以4即为IP头部的字节数。由于4位长度字段最大值为15,所以IP头部的最大长度是60字节。
- 头部长度: IP头部的最小长度为20字节(不包含选项字段)。
8位服务类型: 包含3位优先权字段(已弃用)、4位TOS字段和1位保留字段(必须置为0)。4位TOS字段用于指示数据报的传输优先级:
- 最小延时
- 最大吞吐量
- 最高可靠性
- 最小成本
这四个选项相互冲突,只能选择一个。例如,ssh/telnet
等程序注重最小延时,而ftp
则注重最大吞吐量。
**16位总长度 **: 表示整个IP数据报文的总长度,以字节为单位。
- 结合
首部长度
和20字节
的报头部最小长度(不包含选项),我们可以做到报头和有效载荷的分离。
- 结合
**16位标识 **: 唯一标识主机发送的报文。如果IP数据报在数据链路层被分片,则每个片的ID都相同。
- 因为数据链路层的传输大小是有最大限度的,当大小超过限度时,就会对IP进行分片
3位标志字段:
- 第一位保留(未使用)。
- 第二位表示禁止分片(DF, Don’t Fragment)。如果设置此位,当报文超过MTU(最大传输单元)时,IP模块会丢弃报文。
- 第三位表示更多分片(MF, More Fragments)。如果报文被分片,则最后一个分片的该位为0,其他分片该位为1。
13位分片偏移 (Fragment Offset): 表示当前分片在原始IP数据报中的偏移位置。偏移量以8字节为单位,因此除最后一个分片外,其他分片的长度必须是8的整数倍。
8位生存时间 (Time To Live, TTL): 指定数据报在网络中的最大跳数(即经过的路由器数量)。每经过一个路由器,TTL值减1。如果TTL减到0且未到达目的地,数据报将被丢弃。此字段用于防止数据报在网络中无限循环。
8位协议 (Protocol): 指定上层协议的类型(如TCP、UDP等)。
- 代表我们要将
IP
交给哪一个上层的协议。实现了将有效载荷向上交付。
- 代表我们要将
16位头部校验和: 用于校验IP头部的完整性,采用CRC校验。
32位源地址和32位目标地址: 分别表示数据报的发送端和接收端IP地址。
- 这也就是为什么在应用层中,我们需要将点分十进制的IP转化为
uint32 IP
。
- 这也就是为什么在应用层中,我们需要将点分十进制的IP转化为
选项字段 (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解析通常分为以下几个步骤:
用户输入域名:用户在浏览器中输入域名,如”www.example.com"。
查询缓存:系统首先检查本地缓存中是否有该域名的IP地址记录。如果有,直接返回结果。如果没有,继续下一步。
递归查询:DNS解析器(通常由ISP提供)向根DNS服务器发送查询请求,根DNS服务器会返回顶级域(如.com)的DNS服务器地址。
查询结果:解析器向权威DNS服务器查询该域名的IP地址,并将结果返回给用户。
返回结果:浏览器使用获得的IP地址与目标服务器建立连接,从而访问网站或其他资源。
缓存结果:系统通常会将查询结果缓存一段时间,以加速后续的相同请求。
hosts
文件
- 一个本地配置文件,用于在操作系统中将域名映射到IP地址。它的作用类似于DNS(Domain Name System),但工作在本地计算机上。可以在没有DNS服务器的环境中提供名称解析功能。
hosts
注意事项
优先级:
hosts
文件的名称解析优先级高于DNS解析。因此,如果hosts
文件中有条目,系统会优先使用这些条目,而忽略DNS服务器的解析结果。全局影响:
hosts
文件的更改会影响整个系统的域名解析,所有用户和应用程序都会受到影响。
其他相关概念
- A记录:将域名映射到IPv4地址。
- AAAA记录:将域名映射到IPv6地址。
- CNAME记录:将一个域名映射到另一个域名。
- MX记录:用于定义邮件服务器的DNS记录。
有意义的IP字段记录
名称 | 描述 |
---|---|
本地环回地址127.0.0.1 |
通常用来本地进行客户端和服务器的测试 |
0.0.0.0 |
默认路由或者当本地主机上绑定 0.0.0.0 作为其 IP 地址时,它表示服务器将监听所有可用的网络接口上的所有 IP 地址。 |