小宋爱睡觉 小宋爱睡觉
首页
  • HTML
  • CSS
  • JavaScript
  • Vue
  • React
  • 计算机网络
  • 浏览器原理
  • 性能优化
  • 设计模式
手写系列
  • 字符串
  • 数组
  • 链表
  • 树
  • 动态规划
  • 排序算法
  • GitHub (opens new window)
  • JueJin (opens new window)
首页
  • HTML
  • CSS
  • JavaScript
  • Vue
  • React
  • 计算机网络
  • 浏览器原理
  • 性能优化
  • 设计模式
手写系列
  • 字符串
  • 数组
  • 链表
  • 树
  • 动态规划
  • 排序算法
  • GitHub (opens new window)
  • JueJin (opens new window)
  • HTTP协议与请求方法
  • HTTPS协议
  • 状态码
  • DNS和网络模型
    • 介绍一下DNS协议是什么
    • DNS同时使用TCP和UDP协议吗
    • 说一下DNS完整查询过程
    • DNS的迭代查询和递归查询
    • OSI7层模型
    • TCP/IP五层协议
    • 计算机网络中端到端与点到点的区别
    • 为什么要有IP地址和mac地址呢
    • 在网络层的IP是如何寻址的?
    • 私有网络地址
  • TCP和UDP
  • WebSocket
  • 计算机网络
Crucials
2021-12-12

DNS和网络模型

# DNS协议

# 介绍一下DNS协议是什么

DNS是域名系统的缩写,提供一种主机名到IP地址的转换服务,由分层的DNS服务器组成的分布式数据库,定义了主机如何查询这个分布式数据库的方式的应用协议

作用是将域名解析为IP地址,客户端向DNS服务器发送域名查询请求,DNS服务器告诉客户端他的web服务器的IP地址

# DNS同时使用TCP和UDP协议吗重要

DNS占用53号端口,同时使用TCP和UDP协议

  1. 在区域传输的时候使用TCP协议
    • 辅域名服务器会定时(一般三小时)向主域名查询了解数据是否有变,有变的话,会执行一次区域传送,进行数据同步,区域传送使用TCP,因为数据传送的数据量比一个请求应答的数据量多得多
    • TCP是一种可靠连接 保证数据的准确性
  2. 在域名解析的时候使用UDP协议
    • 客户端向DNS查询域名,一般返回的内容不超过512字节,用UDP传输即可,不经过三次握手,使得DNS服务器负载更低,响应更快,理论上客户端向DNS服务器查询域名的时候用TCP但是很多DNS服务器配置时候只支持UDP查询包

# 说一下DNS完整查询过程重要

  • 首先在浏览器缓存中查找对应的IP 地址,如果查到就直接返回,查不到就下一步
  • 将请求发给本地dns服务器,在本地域名服务器查询,如果查到直接返回,差不到就下一步
  • 本地dns服务器向根域名服务器发送请求,根域名服务器返回一个所查询域的顶级服务器地址
  • 本地dns向顶级域名服务器发送请求,接收请求的服务器查询自己的缓存,如果有记录就返回查询结果,没有就返回下一级的权威域名服务器地址
  • 本地dns向权威域名服务器请求,域名服务器返回对应结果
  • 本地dns将结果保存在缓存中,便于下次使用
  • 将结果返回给浏览器

举一个🌰来说明一下(改自第七版谢希仁计算机网络)

假设mayun.taobao.com想知道xiaosong.crucials.cn的IP地址

  • 主机mayun.taobao.com先向其本地域名服务器dns.taobao.com进行递归查询
  • 本地域名服务器向根域名服务器查询
  • 根域名服务器告诉本地域名服务器,下一次该查询的是所查询域的顶级服务器dns.cn的IP地址
  • 本地域名服务器迭代再进行查询,顶级域名服务器返回所查询域的权威域名权威域名服务器dns.crucials.cn的IP地址
  • 继续迭代查询,权威域名服务器告诉本地域名服务器所查询的主机IP地址
  • 本地域名服务器把IP地址告诉主机mayun.taobao.com

# DNS的迭代查询和递归查询

递归查询指的是查询请求发送之后,域名服务器代为向下一级域名服务器发送请求,最后向用户返回结果,使用递归查询,用户只用发送一次查询

迭代查询是域名服务器返回单次查询的结果,需要用户自己请求下一级的服务器

一般我们向本地dns发送请求的都是递归查询,因为只发了一次就能返回最终的结果,而本地dns服务器向其他域名服务器采用的就是迭代查询,每一级域名服务器返回的结果之后,都由本地dns服务器自己进行下一级的查询

# 网络模型

# OSI7层模型

img

  1. 应用层
    • 为计算机用户提供应用接口,为用户提供提供网络服务协议,如http https ftp等
  2. 表示层
    • 用于对应用层数据的编码和转换功能,确保一个系统的应用程序发送的数据能被另一个系统应用层识别,可以使用base64对数据进行编解码,base64在表示层工作
  3. 会话层
    • 负责建立、管理和终止表示层实体之间的通信会话
  4. 传输层
    • 建立主机端到端的连接,传输层的作用就是为上层协议提供端到端的可靠和透明数据传输,包括差错控制和流量控制,tcp和udp就是在这一层
  5. 网络层
    • 通过IP寻址建立两个节点的连接,通常就是我们说的IP协议层,我们可以理解网络层规定了数据包的传输路线,传输层规定了数据包的传输方式
  6. 数据链路层
    • 将比特组合成字节,将字节组合成帧,使用链路层地址(以太网用mac地址),并进行差错控制,我们可以理解为网络层是规划了数据包的传输路线,数据链路层就是传输路线,在数据链路层增加了差错控制
  7. 物理层
    • 实际的信号通过物理层实现,通过物理截止传输比特流

OSI七层模型通信特点是对等通信,为了使数据分组从源传送到目的地,源端每一层都必须和目的端对等层进行通信,称为对等层通信,在每一层通信都使用本层自己的协议进行通信

# TCP/IP五层协议

img

  • 应用层
    • 直接为应用进程提供服务 http/ftp/smtp/dns
  • 传输层
    • 主要有tcp和udp协议
  • 网络层
    • 为两台主机提供通信服务 通过选择合适的路由将数据传递到目的主机
  • 数据链路层
    • 将网络层交下来的IP数据包封装成帧,在链路两个相邻节点传送帧,每一帧都包含数据和必要的控制信息
  • 物理层
    • 确保数据在各种物理媒介上传输

img

# 计算机网络中端到端与点到点的区别重要‼️

所处位置不同

端到端处于传输层,属于网络连接,是应用程序之间的远程通信(通俗地说就是从发送端到接受端)

点到点处于数据链路层或网络层,基于mac地址和IP地址,是指一个设备发数据给另外一个设备,这些设备是指直连设备包括网卡,路由器,交换机。(通俗地说就是两个节点之间的通信,一个节点的数据链路层接受ip层数据并封装之后,就把数据帧从链路上发送到与其相邻的下一个节点)

可靠性

端到端的链路建立之后,发送端知道接收端一定能收到,而且经过中间交换设备时不需要进行存储转发,因此传输延迟小。

在点到点传输的缺点是发送端发出数据后,不知道接收端能否收到或何时能收到数据。

端到端的优点就是它的可靠性,缺点是:

  • 直到接收端收到数据为止,发送端的设备一直要参与传输。如果整个传输的延迟很长,那么对发送端的设备造成很大的浪费。

  • 如果接收设备关机或故障,那么端到端传输不可能实现。

点到点的优点:

  • 发送端设备送出数据后,它的任务已经完成,不需要参与整个传输过程,这样不会浪费发送端设备的资源。

  • 即使接收端设备关机或故障,点到点传输也可以采用存储转发技术进行缓冲。

点到点的缺点:

点到点传输的缺点是发送端发出数据后,不知道接收端能否收到或何时能收到数据。 (它的不可靠性)

在一个网络系统的不同分层中,可能用到端到端传输,也可能用到点到点传输。如Internet网,IP及以下各层采用点到点传输,传输层以上采用端到端传输。

# 为什么要有IP地址和mac地址呢

先说说两者区别:

  • IP地址是网络层和以上各层使用的地址,是一种逻辑地址
  • mac地址(物理地址)是数据链路层和物理层使用的地址

在发送数据的时候,数据从高层下到低层,才到通信链路传输,使用IP地址的IP数据包一旦交给数据链路层,就被封装成mac帧,mac帧在传输过程使用的原地址和目的地址都是硬件地址,都写在mac帧的首部

值得注意的是

在网络层利用IP地址在路由器进行转发的时候,数据包首部的源地址和目的地址始终为最开始发送的IP地址和需要接收的IP地址

而数据链路层的mac帧在不同网络传输时mac帧会丢弃并更换首部的mac地址

接着解释一下,为什么不可以直接用硬件地址进行通信,免除使用ARP协议,还要IP地址来干嘛?

全世界存在各式各样的网络,都使用不同的硬件地址,这些硬件能够相互通信的话必须进行非常复杂的硬件地址转换工作(因为每个设备都有唯一的mac地址),因此几乎不可能靠用户进行完成,但是IP编址的话可以让连接到互联网的地址只需自己拥有一个唯一的IP地址,再下去找需要连接的通讯设备则是通过ARP协议进行(都是由计算机软件自动运行的,无须用户操作)

有了IP地址为什么还需要mac地址

信息传递时候,需要知道的其实是两个地址:终点地址、下一跳的地址。

  • IP地址本质上是终点地址,它在跳过路由器的时候不会改变,而MAC地址则是下一跳的地址,每跳过一次路由器都会改变。这就是为什么还要用MAC地址的原因之一,它起到了记录下一跳的信息的作用。
  • 网络体系结构的分层模型:用MAC地址和IP地址两个地址,用于分别表示物理地址和逻辑地址是有好处的。这样分层可以使网络层与数据链路层的协议更灵活地替换。
  • 历史原因:早期的以太网只有集线器,没有交换机,所以发出去的包能被以太网内的所有机器监听到,因此要附带上MAC地址,每个机器只需要接受与自己MAC地址相匹配的包。

# 在网络层的IP是如何寻址的?

  • 分类寻址:将IP地址划分为五类,IP地址有网络号(net-id)和主机号(host-id)组成,路由器仅仅根据目的主机的网络号来转发分组,从而减少路由表所占用的存储空间以及查找路由表的时间

笔记

​ IP 地址管理机构 --> 分配 IP地址的网络号 ->主机号由得该单位自行分配

主机号为全 0 的地址为子网的网络号,主机号 为全 1 的地址为子网的广播地址, 都不能被指派。

网络号

  • 划分子网:对原先的分类寻址的改进,将原始的分类寻址进一步的划分,将之前的主机号进一步划分为子网号(subnet-id)和主机号,提高IP地址的利用率

​ :::note 提高IP地址利用率原因

​ 因为c类地址的主机号是2^8 - 2= 254 若有260台机器只能分配一个b类地址的网络号,遂对主机号进行进一步划分

划分子网后,可用的IP地址数是减少了,但是如果对于那些很小的小型企业网络来说,划分子网后又可节省大量IP地址资源。因为几个小网络可以共用一个大的网络地址范围(好几个子网对外部表现为一个网络,收到外来的数据报后转发到相应的网络),而且同样可以取到隔离的作用。

​ :::

  • 无类别域间路由:消除了传统的 A 类, B 类, C类 地址以及划分子网的概念,因而更有效地分配 IPv4 的地址。(这个应该不要求)

# 私有网络地址

俗称内网的IP地址

IP address range number of addresses largest CIDR block (subnet mask)
10.0.0.0 – 10.255.255.255 16777216 10.0.0.0/8 (255.0.0.0)
172.16.0.0 – 172.31.255.255 1048576 172.16.0.0/12 (255.240.0.0)
192.168.0.0 – 192.168.255.255 65536 192.168.0.0/16 (255.255.0.0)

最后附上一篇快速理解网络传输数据的文章

上次更新: 2022/03/20, 19:40:28
状态码
TCP和UDP

← 状态码 TCP和UDP→

Copyright © 2021-2025 粤ICP备2021165371号
  • 跟随系统
  • 浅色模式
  • 深色模式