深入解析网络通信关键要素:IP 协议、DNS 及相关技术

简介: 本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。

1. IP 协议报头结构

4 位版本:表示 IPv4 / IPv6

4 位首部长度:表示 IP 报头的长度,以 4 字节为单位

8 位服务类型:包括 3 位优先权字段(已弃用),4 位 TOS 字段和 1 位保留字段(必须置为 0),4 位 TOS 字段分别表示:最小延时(数据从 A 到 B 消耗时间短),最大吞吐量(数据从 A 到 B单位时间内传输数量多),最高可靠性,最小成本(设备上消耗的资源少),这四个相互冲突,只能选择一个

16 位总长度:IP 数据报的长度

虽然说设置了数据报的长度,但是并不是只能传 64KB 的数据,IP 协议中内置了拆包组包机制,单个 IP 数据报确实不能超过范围,不过 IP 协议会自动把大的数据包拆成多个 IP 数据报携带传输,在接收方再进行拼接

同一个载荷被拆成多份,交给多个 IP 数据报来携带,这些数据报的 16 位标识是相同的,13 位片偏移决定组包的时候数据包的位置,3 位标志中只有两个有效,一个表示当前包是否需要组包,另一个表示当前包是不是组包的最后一个单位。

8 位生存时间(TTL):一个数据包在网络中最大存活时间。TTL 的单位是次数,发送一个 IP 数据报的时候,会有一个初始的 TTL 值(32,64,128...)数据报每经过一个路由器转发,TTL 的值就会 -1(经过交换机不减),一旦减到 0,此时这个数据包就会被当前的路由器直接丢弃掉。

8 位协议:描述了 IP 数据报中携带的载荷是哪种传输层协议的数据报,以此来确定接下来由哪种协议解析数据

16 位首部检验和:验证数据在传输中是否出错(只是针对首部,IP 报头),载荷部分 TCP/UDP 已经有自己的校验和了

IP 地址也就是用来标识互联网设备的,但是 32 位 IP 放在今天就不够用了,为了解决这个问题,有以下三种方法:

  1. 动态分配 IP 地址:如果当前设备上网就分配 IP ,不上网就不分配,但是这种方面明显不能解决问题,只能说是有所缓解
  2. NAT 网络地址切换:一个设备在进行上网的时候,IP 数据报中的 IP 地址就会被 NAT 设备(通常就是路路由器)进行自动修改。用一个 IP 代表一大波 IP,把 IP 分为了两类:内网(私网)和外网(公网),要求公网 IP 必须是唯一的,但是私网 IP 是可以重复的(在不同的局域网中)

在同一个局域网内,主机 A 访问主机 B 不会涉及到 NAT 机制

公网上的设备 A 访问公网上的设备 B 不会涉及到 NAT

一个局域网中的主机 A 访问另一个局域网的主机 B 在 NAT 机制中是不允许的

NAT 机制主要是针对局域网内部的设备 A ,访问公网上的设备 B 这种情况设置的

当发送方的数据报发送到运营商路由器后就会修改源 IP 为运行商具有的公网 IP( 修改 IP 时会记录相应的映射关系,以便传输回来的时候可以找到原来局域网的 IP )目标公网服务器收到的也是这个 IP ,同时 NAT 不仅可以转换 IP 地址,也可以转换端口号,通过这个方式,多个设备就可以共享一个公有 IP 地址同时访问网络

NAT 虽然可以解决 IP 不够用的问题,但是机制过于复杂,每一次转发都要记录并查询相应的映射关系,所以有了第三种方式:

  1. IPv6。从根本上解决问题,IPv6使用 128 位 16 个字节来表示 IP 地址。

2. IP 地址中的网段划分

IP 地址由网络号和主机号两部分组成,左半部分是网络号,右半部分是主机号,需要通过子网掩码来区分出哪里是网络号,哪里是主机号,子网掩码也是 32 位整数,左半部分都是 1,右半部分都是 0,例如,子网掩码 255.255.255.0 表示前 24 位是网络号,后 8 位是主机号,IP 地址 192.168.1.100 和子网掩码 255.255.255.0 进行逻辑与运算后得到网络地址 192.168.1.0,这就确定了该 IP 地址所在的网段。

在网络中规定,同一个局域网中的设备,网络号必须相同,主机号必须不同,两个相邻的局域网的网络号必须不同

在一个局域网中,如果某个设备的网络号不相同或者和别的主机重复都无法上网

3. 特殊的 IP 地址

  1. 主机号全为 0,此时这个 IP 就是表示当前网段(相当于网络号),因此给局域网中的某个设备分配 IP 地址的时候,不能把主机号全设为 0。
  2. 主机号为全 1,比如子网掩码是 255.255.255.0,IP 就是 192.168.0.255,称为广播 IP,往这个 IP 上发送数据包,就相当于给整个局域网中所有的设备都发送了一次数据包,但其实很多“业务上的广播”都是通过应用层编写代码来实现的,而不是借助广播 IP。用到广播 IP 的例子可以是手机投屏这种,可以知道局域网中有多少个设别允许投屏,在投屏时往对应的广播 IP 上发送一个数据包(UDP,TCP 不支持广播)如果有投屏功能就会返回一个响应
  3. 127.*(环回 IP),往这个 IP 上发一个数据,设备就会从这个 IP 中再收到同一个数据,一般都使用 127.0.0.1,环回 IP 一般用于测试客户端和服务器之间能否正常交互

4. 路由选择的大致流程

由于网络是一个非常复杂的网状结构,一台设备发送大另一台设备可能会存在多条路线

  1. 当源设备有数据要发送时,它会将数据封装成数据包,数据包中包含源 IP 地址、目的 IP 地址、数据内容等信息。
  2. 源设备首先查询自己的路由表(路由器内部维护的重要的数据结构),以确定如何将数据包发送到目的地址。路由表中包含了不同目的网络的信息以及到达这些网络的下一跳地址。如果在路由表中找到与目的 IP 地址匹配的条目,源设备将根据该条目确定下一跳地址,并将数据包发送给该地址,如果没有查到路由表就会有一个默认的表项(指向更高级层路由器)

接下来看数据链路层的协议

目的地址和源地址:这里的地址存储的是 MAC 地址,并不是之前的 IP 地址,

关于 MAC 地址和 IP 地址:在网络通信中,MAC 地址和 IP 地址相互配合,共同完成数据的传输。当一个设备要发送数据时,它会首先使用目标设备的 IP 地址来确定数据包的传输路径。然后,它会将自己的 MAC 地址作为源地址添加到数据包中,并将目标设备的 MAC 地址作为目的地址添加到数据包中。

  1. MAC 地址使用 6 个字节表示,一般一个网卡在出厂的时候,MAC 地址就被分好了,并且不能修改,MAC 地址可以作为设备的身份标识
  2. MAC 地址使用在数据链路层,用来实现相邻设备之间的数据转发,IP 地址使用在网络层,立足于整个转发流程,进行路径规划

以太网数据帧里面的 MAC 地址随着转发的过程,时刻都在变化(每经过一个交换机/路由器都会发生上述变化)

MTU(最大传输单元)和硬件直接相关,不同的硬件设备,对应到了不同的数据链路层协议,也对应了不同的 MTU,以太网的 MTU是非常短的,只有 1500 字节,此处 MTU 的限制就会对上层协议(例如 IP 协议)产生直接影响,当一个 IP 数据包达到 1500 字节以上,就会自动拆包了

类型:表示以太网帧格式中的帧格式类型

这里是十六进制的表示,ARP 数据报 / 协议,可以视为是让当前设备获取到周围设备 IP 地址和 MAC 地址之间的映射关系,在 IP 协议路由转发的过程中,是根据 IP 地址来进行查路由表的,得到的是“网络接口”,具体点就是传输给哪个 MAC 地址的设备,这个环节就涉及到了 IP 到 MAC 地址的转换,ARP 协议就是用来建立上述的映射关系的,当前设备接入网络的时候,就会往广播地址发送 ARP 报文,收到 ARP 请求的设备就会返回响应,响应中告知自己的 IP 和 MAC 地址

5. DNS 协议

DNS 是应用层的协议,也可以理解为一套系统(域名解析系统),主要负责将易于人类理解的域名(如 www.aaa.com)转换为计算机可识别的 IP 地址(如 192.168.1.1),域名和 IP 地址存在对应关系,一般是一个域名对应一个或多个 IP,也可能多个域名对应一个 IP。

早期的域名解析系统非常简单,通过一个 hosts 文件来实现,记录了 IP 地址和域名的对应关系(现在这种方式已经不用了,网站和域名太多了,IP 地址也多,靠文件来维护不方便),为了解决这个问题,搭建了 DNS 服务器,把 hosts 文件放到 DNS 服务器中,当某个电脑需要进行域名解析,直接访问 DNS 服务器即可,但是一台服务器肯定不够用,所以就又有了许多镜像服务器,每个人上网时就会就近访问 DNS 服务器,如果有数据变更,针对这种变更,需要约定某个服务器(根服务器)的数据为基准,一旦有变更,就修改这个基准的服务器,其他服务器从基准的服务器同步数据。

相关文章
|
10月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
人工智能 监控 安全
NTP网络子钟的技术架构与行业应用解析
在数字化与智能化时代,时间同步精度至关重要。西安同步电子科技有限公司专注时间频率领域,以“同步天下”品牌提供可靠解决方案。其明星产品SYN6109型NTP网络子钟基于网络时间协议,实现高精度时间同步,广泛应用于考场、医院、智慧场景等领域。公司坚持技术创新,产品通过权威认证,未来将结合5G、物联网等技术推动行业进步,引领精准时间管理新时代。
|
11月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
850 11
|
11月前
|
安全 网络性能优化 网络虚拟化
网络交换机分类与功能解析
接入交换机(ASW)连接终端设备,提供高密度端口与基础安全策略;二层交换机(LSW)基于MAC地址转发数据,构成局域网基础;汇聚交换机(DSW)聚合流量并实施VLAN路由、QoS等高级策略;核心交换机(CSW)作为网络骨干,具备高性能、高可靠性的高速转发能力;中间交换机(ISW)可指汇聚层设备或刀片服务器内交换模块。典型流量路径为:终端→ASW→DSW/ISW→CSW,分层架构提升网络扩展性与管理效率。(238字)
2400 0
|
机器学习/深度学习 人工智能 算法
深度解析:基于卷积神经网络的宠物识别
宠物识别技术随着饲养规模扩大而兴起,传统手段存在局限性,基于卷积神经网络的宠物识别技术应运而生。快瞳AI通过优化MobileNet-SSD架构、多尺度特征融合及动态网络剪枝等技术,实现高效精准识别。其在智能家居、宠物医疗和防走失领域展现广泛应用前景,为宠物管理带来智能化解决方案,推动行业迈向新高度。
1333 66
|
XML JSON JavaScript
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
250 0
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
|
开发者
鸿蒙仓颉语言开发教程:网络请求和数据解析
本文介绍了在仓颉开发语言中实现网络请求的方法,以购物应用的分类列表为例,详细讲解了从权限配置、发起请求到数据解析的全过程。通过示例代码,帮助开发者快速掌握如何在网络请求中处理数据并展示到页面上,减少开发中的摸索成本。
鸿蒙仓颉语言开发教程:网络请求和数据解析
|
网络架构
广播域与冲突域:解析网络技术中的复杂性。
总的来说,理解广播域和冲突域的概念可以使我们在设计或维护网络的过程中,更有效地管理通信流程,避免出现网络瓶颈,提成整体网络性能。就像是如何有效地运作一个市场,把每个人的需求和在合适的时间和地点配对,确保每个人的声音都被听到,每个人的需求都被满足。
443 11
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
524 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
网络协议 安全 Devops
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
662 4

推荐镜像

更多
  • DNS