首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >华为、华三、思科高级网络工程师必经之路(2)我们的爱如同TCP连接,始终可靠,永不掉线——DNS服务、路由器、TCP报文段、TCP 发送和接收缓存的机制保姆级别详解

华为、华三、思科高级网络工程师必经之路(2)我们的爱如同TCP连接,始终可靠,永不掉线——DNS服务、路由器、TCP报文段、TCP 发送和接收缓存的机制保姆级别详解

作者头像
盛透侧视攻城狮
发布2024-12-25 09:42:20
发布2024-12-25 09:42:20
3830
举报

DNS服务---域名解析服务

  • 基于UDP/TCP 53号端口进行封装。
  • 一般在客户端和服务端之间的查询和响应使用UDP协议;
  • TCP协议用于主备服务器之间的数据传输。

DNS的查询过程----递归查询、迭代查询

img
img
如下图所示:

DNS(Domain Name System)是互联网中的一种命名系统,将网址(域名)转换为IP地址,以便互联网设备能够找到正确的服务器进行通信。DNS查询过程分为两种类型:递归查询和迭代查询。

  • 递归查询是指客户端向本地DNS服务器发送查询请求后,本地DNS服务器会负责向其他DNS服务器一直追溯直到找到对应的IP地址,然后将结果返回给客户端。递归查询是一种较为完整的查询方法,客户端只需发送一次查询请求,之后等待本地DNS服务器返回结果。
  • 递归查询的过程如下:
  1. 客户端向本地DNS服务器发送查询请求,请求的内容为所要访问的域名。
  2. 本地DNS服务器先会查看本地缓存中是否存在该域名的解析结果。若有,则直接返回给客户端。
  3. 若本地缓存中不存在该域名的解析结果,则本地DNS服务器会向根域名服务器发送查询请求。
  4. 根域名服务器收到查询请求后,检查该域名对应的顶级域名服务器(例如.com域名对应的顶级域名服务器)。
  5. 根域名服务器会将顶级域名服务器的IP地址返回给本地DNS服务器。
  6. 本地DNS服务器接收到顶级域名服务器的IP地址后,再向顶级域名服务器发送查询请求。
  7. 顶级域名服务器会返回下一级域名服务器的IP地址给本地DNS服务器。
  8. 本地DNS服务器继续向下一级域名服务器发送查询请求,直到找到负责该域名的区域域名服务器。
  9. 区域域名服务器收到查询请求后,查找该域名的IP地址,并将结果返回给本地DNS服务器。
  10. 本地DNS服务器将最终的查询结果返回给客户端,同时将结果保存在本地缓存中。
  • 迭代查询是指客户端向本地DNS服务器发送查询请求后,本地DNS服务器会返回一个其他DNS服务器的地址给客户端,客户端再直接向这个DNS服务器发送查询请求。这个过程类似于递归查询的第6步。迭代查询的过程会涉及多次查询请求和返回,相对于递归查询而言较为繁琐。
  • 总体来说,递归查询是本地DNS服务器帮助客户端进行查询,直到找到结果并返回给客户端,而迭代查询是本地DNS服务器将查询任务交给客户端,由客户端自己去查找结果。递归查询是一种较为高效和常用的查询方法。
image-20240124151525868
image-20240124151525868

DNS查询过程的流程剖析示例图:

image-20230226160257711
image-20230226160257711

1. DNS 客户机(解析器)

  • web 浏览器:用户在浏览器中输入 URL(例如:www.qq.com)。
  • DNS 解析器:
    • Q1:浏览器向 DNS 解析器发送查询请求,询问www.qq.com的 IP 地址。
    • A1:DNS 解析器首先检查自己的缓存(Q2),看是否已经有www.qq.com的 IP 地址记录。如果有,则直接返回结果给浏览器。
    • A3:如果缓存中没有,DNS 解析器会检查本地的 Hosts 文件(Q3),看是否有手动配置的域名 - IP 映射。

2. 客户机到服务器查询

  • 本地 DNS 服务器:
    • Q4:如果 DNS 解析器在缓存和 Hosts 文件中都找不到结果,它会向本地 DNS 服务器发送查询请求(递归查询)。
    • A2:本地 DNS 服务器检查自己的缓存(Q5),看是否有www.qq.com的 IP 地址记录。如果有,则直接返回结果给 DNS 解析器。
    • A4:如果本地 DNS 服务器的缓存中没有,它将继续查询。

3. 服务器到服务器查询

  • 根域名服务器:
    • Q6:本地 DNS 服务器向根域名服务器发送查询请求(迭代查询),询问.com 顶级域名服务器的地址。
    • A6:根域名服务器返回.com 顶级域名服务器的地址。
  • .com 顶级域名服务器:
    • Q7:本地 DNS 服务器向.com 顶级域名服务器发送查询请求,询问qq.com域名服务器的地址。
    • A7:.com 顶级域名服务器返回qq.com域名服务器的地址。
  • qq.com域名服务器:
    • Q8:本地 DNS 服务器向qq.com域名服务器发送查询请求,询问www.qq.com的 IP 地址。
    • A8:qq.com域名服务器返回www.qq.com的 IP 地址。

4. 返回结果

  • 本地 DNS 服务器:
    • Q9:本地 DNS 服务器将www.qq.com的 IP 地址返回给 DNS 解析器。
    • A9:DNS 解析器收到 IP 地址后,将其缓存起来(Q10),以便下次查询时使用。
  • web 浏览器:
    • A10:DNS 解析器将www.qq.com的 IP 地址返回给浏览器,浏览器使用该 IP 地址访问网站。

应用层

DNS请求报文

传输层

UDP;源端口:随机数;目端口:53

网络层

源IP:PC ;目IP:本地记录的DNS服务器的IP地址

数据链路层

源MAC:PC;目MAC:网关的MAC地址

路由器

1. 路由器的基本工作流程

路由器位于网络的不同子网之间,它的主要职责是根据目标IP地址,决定数据包的转发路径。具体流程如下:

  • 数据包到达:路由器接收到来自一个网络接口的数据包。这个数据包会包括发送方的IP地址(源IP)、接收方的IP地址(目标IP)以及其他的协议数据。
  • 查找路由表:路由器根据数据包的目标IP地址,查找其路由表,决定数据包的下一跳。路由表包含了网络的各种路由信息,路由器通过查找最合适的路由条目来决定如何转发数据包。
  • 转发数据包:根据路由表的查找结果,路由器将数据包通过适当的网络接口转发到下一个路由器或目标主机。

2. 路由表的作用

路由表是路由器内部的数据结构,用于存储网络路由信息。它的关键任务是指引路由器找到到达目标地址的最优路径。每一条路由表项一般包含以下信息:

  • 目标网络(Destination Network):目标IP地址范围或网络。
  • 子网掩码(Subnet Mask):用于标识网络和主机部分的掩码。
  • 下一跳地址(Next Hop):数据包需要转发的下一个路由器的IP地址,或者是最终目的地。
  • 出接口(Interface):数据包从该接口发送到下一个路由器或目标主机。
  • 路由协议类型:如静态路由、RIP(Routing Information Protocol)、OSPF(Open Shortest Path First)、BGP(Border Gateway Protocol)等。

3. 路由选择和查找

路由器根据目标IP地址,进行路由表查找,选择最合适的路由转发数据包。路由表查找有以下两种主要方式:

  • 最长前缀匹配:路由器通过目标IP地址与路由表中的网络地址进行匹配,优先选择匹配度最高的路由(即前缀长度最长的匹配项)。例如,如果目标IP是192.168.1.100,而路由表有两个条目,一个是192.168.1.0/24,另一个是192.168.0.0/16,那么路由器会选择192.168.1.0/24,因为它是最长前缀匹配。
  • 路由选择算法:在动态路由协议中,如RIP、OSPF、BGP等,路由器会定期更新路由表,选择最优路径。这些协议根据不同的算法(如跳数、链路状态、带宽、延迟等)来选择最佳路径。

4. 转发决策过程

路由器根据以下信息进行数据包转发:

  1. 目标IP地址:从数据包中提取目标IP地址。
  2. 路由表查找:使用目标IP地址查找路由表,确定最佳路径。可能会涉及:
    • 静态路由(手动配置的固定路径)
    • 动态路由(基于路由协议自动生成的路径)
  3. 选择下一跳:根据路由表中的下一跳信息,选择下一个目标。
  4. 通过接口发送:通过选择的网络接口,数据包被转发到下一跳路由器或终端。

5. 不同协议的转发方式

不同的协议(如RIP、OSPF、BGP)在路由器的转发过程中有不同的表现:

  • 静态路由:管理员手动配置的路由规则。路由器将数据包根据配置的静态路由直接转发。
  • 动态路由:动态路由协议(如RIP、OSPF、BGP)会自动学习网络拓扑并更新路由表。它们通过交换路由信息,帮助路由器自动找到最优路径。例如:
    • RIP:基于跳数的路由协议,简单但效率较低。
    • OSPF:基于链路状态的协议,能提供更精确和快速的路由更新。
    • BGP:主要用于自治系统(AS)之间的路由选择,是互联网的核心路由协议。

6. 路由器转发的性能与优化

路由器的转发性能通常受到以下几个因素的影响:

  • 路由表的大小:随着网络的扩展,路由表可能变得非常庞大。较大的路由表会导致查找速度下降,影响转发效率。
  • 硬件性能:路由器的硬件(如CPU、内存、网络接口等)对转发速度至关重要。现代路由器通常采用专用的硬件加速(如TCAM - Ternary Content Addressable Memory)来提高路由查找和数据包转发的速度。
  • 流量负载:高流量的情况下,路由器需要处理更多的数据包,可能会导致性能瓶颈。
  • 路由协议的选择:动态路由协议的收敛时间(即路由更新的时间)以及协议的复杂度也会影响路由器的转发效率。OSPF和BGP等协议通常收敛速度较慢,但提供更稳定和冗余的路径选择。

TCP----传输控制协议

  • 是一种面向连接的可靠传输协议。可靠、有序、无丢失和无重复

特点:

  • TCP是一种面向连接的传输协议
  • 每一条TCP连接有且只能存在两个端点,形成一种端到端的连接形式。
  • 可靠、有序、无丢失和无重复
  • TCP是提供全双工通讯。
    • 发送缓存
      • 想要发送的应用层数据
      • 已经发送但未收到确认的数据
    • 接收缓存
      • 按需到达但还未被应用程序提取的数据
      • 乱序到达的数据
  • TCP是面向字节流的。

TCP会话的四元组信息

  • 源IP、源端口、目IP、目端口-

TCP报文段

如下图所示:

1. 源端口和目的端口(16 位)

  • 原理:这两个字段用于标识发送和接收数据的应用程序进程。源端口是发送方的端口号,目的端口是接收方的端口号。
  • 作用:通过端口号,TCP 可以将数据正确地发送到目标主机上的特定应用程序。例如,HTTP 通常使用端口 80,HTTPS 使用端口 443。

2. 序号(32 位)

  • 原理:序号用来标识 TCP 报文段中数据部分的第一个字节的编号。在建立连接时,双方随机生成一个初始序号(ISN)。
  • 作用:序号用于保证数据的顺序性和可靠性。接收方可以根据序号对收到的数据进行排序,并确认收到的数据。

3. 确认号(32 位)

  • 原理:确认号是接收方期望收到的下一个字节的序号。它是对发送方发送的数据的确认。
  • 作用:通过确认号,接收方可以告知发送方哪些数据已经成功接收,从而实现可靠的数据传输。

4. 数据偏移(4 位)

  • 原理:数据偏移字段表示 TCP 首部的长度,以 32 位字为单位。由于 TCP 首部长度是可变的,这个字段用来指示首部的长度。
  • 作用:它帮助接收方正确地解析 TCP 报文段,确定首部和数据部分的边界。

5. 保留(6 位)

  • 原理:保留字段目前未使用,必须设置为 0。
  • 作用:预留字段,以备将来扩展 TCP 协议使用。

6. 控制位(6 位)

  • 原理:控制位包括 URG、ACK、PSH、RST、SYN 和 FIN,分别用于标识紧急指针、确认号有效、推送数据、重置连接、同步序号和终止连接。
  • 每个控制位详解作用如下
  • ACK确认位:当ACK=1时,确认序列号有意义。在连接建立后所有传输的报文段都必须将该标记位置为1。
  • SYN同步位:代表连接请求。
  • FIN终止位:表明此报文段发送方数据已发送完毕,要求释放连接。
  • RST复位:当TCP连接出现严重错误时,必须释放连接,然后重新建立传输连接。
  • URG紧急位:当URG=1时,表明此报文段中存在紧急数据,是高优先级数据,应尽快传输给应用层程序处理,不再缓存在排队。配合紧急指针使用。PSH推送位:当PSH=1时,接收方应尽快交付数据给应用层程序,不再等待缓存填满再向上交付。

7. 窗口大小(16 位)

  • 原理:窗口大小字段用于流量控制,表示接收方当前能够接收的数据量。
  • 作用:发送方根据接收方的窗口大小来调整发送数据的速率,防止接收方因处理不过来而丢失数据。

8. 检验和(16 位)

  • 原理:检验和字段用于检测 TCP 报文段在传输过程中是否发生错误。它是对 TCP 首部和数据部分进行校验计算的结果。
  • 作用:接收方通过检验和来验证数据的完整性,如果检验和不正确,则丢弃该报文段。

9. 紧急指针(16 位)

  • 原理:紧急指针字段只有在 URG 标志位为 1 时才有效,它指向紧急数据的末尾位置。
  • 作用:用于处理紧急数据,接收方会优先处理紧急指针所指向的数据。

10. 选项(长度可变)

  • 原理:选项字段用于扩展 TCP 的功能,例如最大报文段长度(MSS)、窗口扩大因子等。
  • 作用:通过选项字段,TCP 可以根据实际需要增加新的功能和特性。

11. 填充

  • 原理:填充字段用于确保 TCP 首部长度是 32 位的整数倍。
  • 作用:保证 TCP 首部长度的对齐,便于处理和解析。

12. TCP 报文段的数据部分

  • 原理:数据部分是 TCP 报文段中实际要传输的数据内容。
  • 作用:承载应用层的数据,如 HTTP 请求和响应、文件传输数据等。
image-20240111111359118
image-20240111111359118

TCP 发送和接收缓存的机制详解

如下图所示:
image-20240111112617618
image-20240111112617618
1. TCP 发送缓存
  • 原理
    • TCP 发送缓存是发送端用来临时存储待发送数据的区域。当应用程序将数据交给 TCP 层时,TCP 并不会立即将数据发送出去,而是将数据存储在发送缓存中。
    • TCP 根据网络状况和接收方的接收能力来决定何时发送数据。它会将数据分割成合适的报文段,并添加 TCP 头信息,然后将报文段发送给接收方。
  • 图示中的发送缓存
    • 在图中,左侧的 “文件” 区域可以看作是应用程序传递给 TCP 的数据。这些数据被存储在 TCP 发送缓存中(图中标注为 “TCP 缓存”)。
    • TCP 头信息被添加到每个要发送的数据块上。例如,图中显示了 TCP 头信息(3, 2, 1)被添加到数据块(10, 9, 8, 7, 6, 5, 4)上,形成了待发送的报文段。
2. TCP 接收缓存

  • 原理
    • TCP 接收缓存是接收端用来临时存储接收到的数据的区域。当接收方收到 TCP 报文段时,它会将数据存储在接收缓存中。
    • 接收方的 TCP 层会检查报文段的序号和确认号,确保数据的顺序和完整性。然后,它会将数据按照正确的顺序重组,并等待应用程序来读取这些数据。
  • 图示中的接收缓存
    • 在图中,右侧的 “TCP 缓存” 区域表示接收缓存。当接收方收到带有 TCP 头信息(3, 2, 1)的数据块(10, 9, 8, 7, 6, 5, 4)时,它会将数据存储在接收缓存中。
    • 接收方的 TCP 层会根据 TCP 头信息来处理数据,确保数据的正确顺序和完整性。一旦数据完整且顺序正确,接收方的应用程序就可以从接收缓存中读取数据。
3. 数据传输过程
  • 发送过程
    • 应用程序将数据传递给 TCP 层。
    • TCP 将数据存储在发送缓存中,并添加 TCP 头信息。
    • TCP 根据网络状况和接收方的接收能力,将数据分割成合适的报文段并发送。
  • 接收过程
    • 接收方收到 TCP 报文段后,将数据存储在接收缓存中。
    • 接收方的 TCP 层检查报文段的序号和确认号,确保数据的顺序和完整性。
    • 数据在接收缓存中重组后,等待应用程序读取。
4. 缓存的作用
  • 发送缓存的作用
    • 允许 TCP 根据网络状况和接收方的接收能力来优化数据发送,避免网络拥塞。
    • 确保数据的可靠发送,通过重传机制来处理丢失或损坏的报文段。
  • 接收缓存的作用
    • 允许接收方在处理数据之前临时存储数据,确保数据的顺序和完整性。
    • 处理网络延迟和乱序到达的报文段,确保应用程序能够正确读取数据。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DNS服务---域名解析服务
    • DNS的查询过程----递归查询、迭代查询
      • 如下图所示:
    • DNS查询过程的流程剖析示例图:
  • 路由器
    • 1. 路由器的基本工作流程
    • 2. 路由表的作用
    • 3. 路由选择和查找
    • 4. 转发决策过程
    • 5. 不同协议的转发方式
    • 6. 路由器转发的性能与优化
  • TCP----传输控制协议
    • 特点:
    • TCP报文段
      • 如下图所示:
    • TCP 发送和接收缓存的机制详解
      • 如下图所示:
      • 1. TCP 发送缓存
      • 2. TCP 接收缓存
      • 3. 数据传输过程
      • 4. 缓存的作用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档