数据链路层和DNS之间的那些事~
数据链路层,考虑的是两个节点之间的传输。这里面的典型协议也很多,最知名的就是“以太网”。我们本篇主要介绍的就是以太网协议。这个协议规定了数据链路层,也规定了物理层的内容。
目录
以太网帧格式
帧头
载荷
帧尾
DNS
从输入URL到网页呈现的过程
DNS解析
递归查询
递归与迭代相结合查询
1.主机向本地域名服务器的查询采用的是递归查询
2.本地域名服务器向根域名服务器的查询采用迭代查询
TCP三次握手连接
客户端发送HTTP请求
服务器处理HTTP请求
客户端页面渲染
断开TCP连接
以太网帧格式
在经历了上一层的IP报头的拼接后,在数据链路层就是拼接上以太网帧报头了。
以太网数据帧 = 帧头+载荷+帧尾
帧头
其中,帧头包括了目的mac地址、源mac地址和类型。
此处不是使用IP地址表示了,而是搞了一个mac地址,也就是物理地址。这个是和IP地址完全独立的。每一个网络设备出场的时候就会有一个物理地址,这个是出厂时就决定了的。
既然有了IP地址为啥还要有mac地址?其实是最开始开发的是时候研发网络层和数据链路层的时候两伙人分别研究的,所以各自的研发出了一套体系。最终让IP和mac互相配合。
IP地址用来描述整个传输过程中的起点和终点。mac地址用来描述相邻的两个节点的起点终点。
数据链路层考虑的就是两个相邻节点之间怎么走。例如现在要从北京走到上海。

在这之中,分为两次中转,每次的IP是不变的,但是mac地址一直在变。
也就是说,IP描述的始终是从哪来到哪去,而mac描述的是当前阶段的任务。
载荷
表示的是IP数据报。
帧尾
类型0800:代表这是一个普通的以太网数据帧,载荷部分就是一个完整的IP数据包。
类型0806:载荷部分是一个ARP报文。
类型8035:载荷部分是一个RARP报文。
后两个是数据链路层另外的协议:ARP协议。
DNS
DNS协议,是当前互联网的基石。
DNS就是域名解析系统。当我们输入一个网址www.baidu.com的是时候,我们需要访问的是百度的IP地址,但是由于IP地址不好记住,所以用一些简单的单词来构成字符串表示这个地址。既然如此,就需要能够把域名和IP地址给对应上。
最原始的做法,就是使用一个hosts文件来记录,建立了IP和域名的映射关系。

最开始,互联网上的服务器寥寥无几,此时每个用户动手维护自己的hosts文件就够了,但是随着互联网发展越来越迅速,网站越来越多,此时手工维护就已经不靠谱了。这个时候,出现了DNS服务器。
当我们访问某个域名的时候,就自动的请求一下DNS服务器,DNS服务器就自动帮我们查询,把得到的结果(IP地址)返回给我们。如果电脑的DNS服务器配置的不对,或者DNS服务器挂了,就可能会出现一个现象:QQ能用但是网页打不开。QQ是我们直接访问腾讯的服务器,但是配置的DNS服务器会让我们无法访问网页。
当前要求网站的域名不能重复,保证唯一。全世界这么多网站,如何保证唯一呢?
需要对域名进行分级,一级域名,二级域名,三级域名。
1.按照后缀
域名可以分为gTLD(通用顶级域名)、ccTLD(国别域名)和NEW gTLD(新通用顶级域)三种。
其中我们常用的.com、.net、.org都属于通用顶级域名gTLD;代表中国的.cn、代表日本的.jp、代表美国的.us都属于国别域名ccTLD;.网址、.公司.top、.xyz等都属于新通用顶级域名NEW gTLD。
2.按照结构
按照结构,域名可以分为一级域名(顶级域名)、二级域名、三级域名等等。各级域名由“.”分割。简单来说,有几个点,就属于几级域名。如中科三方的官网www.sfn.cn,就属于一个二级域名。
查询DNS服务器也是分级来查询的,DNS服务器也是分成一级域名服务器、二级域名服务器。
- 本地域名服务器
- 根域名服务器
- 顶级域名服务器
- 权限域名服务器
查询的时候也是一级一级向上查询。
从输入URL到网页呈现的过程
从输入URL到网页呈现的过程大致如下:
- DNS解析
- 建立tcp连接
- 客户端发送HTTP请求
- 服务器处理请求
- 服务器响应请求
- 浏览器展示HTML
- 浏览器发送请求获取其他在HTML中的资源。
DNS解析
当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。
在解析的时候有两种方式:递归、递归与迭代相结合

递归查询
本地域名服务器只需向根域名服务器査询一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的[步骤③~⑥]。在步骤⑦中,本地域名服务器从根域名服务器得到了所需的IP地址,最后在步骤⑧中,本地域名服务器把查询结果告诉发起査询的主机。由于该方法给根域名服务造成的负载过大,所以在实际中几乎不使用。
递归与迭代相结合查询
1.主机向本地域名服务器的查询采用的是递归查询
如果本地主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。两种查询方式的这一步是相同的。
2.本地域名服务器向根域名服务器的查询采用迭代查询
当根域名服务器收到本地域名服务器发出的迭代査询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪个顶级域名服务器进行查询”。然后让本地域名服务器向这个顶级域名服务器进行后续的查询。同样,顶级域名服务器收到查询报文后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应向哪个权限域名服务器查询。权限域名服务器一定可以得到当前域名对应的IP地址,最后,知道所要解析的域名的IP地址后,把这个结果返回给发起查询的主机。
假定某客户机想获知域名为xyz.com主机的IP地址,域名解析的过程(共使用了8个UDP报文)如下:
①客户机向其本地域名服务器发出DNS请求报文(递归查询)。
②本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求报文(迭代查询)
③根域名服务器收到请求后,判断该域名属于com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器。
④本地域名服务器向顶级域名服务器dns.com发出解析请求报文(迭代查询)。
⑤顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,因此将对应的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器。
⑥本地域名服务器向授权域名服务器dns.abc.com发起解析请求报文(迭代查询)
⑦授权域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器。
⑧本地域名服务器将査询结果保存到本地缓存,同时返回给客户机
TCP三次握手连接
HTTP协议是通过TCP协议作为传输层协议的,在拿到服务器的IP地址后,浏览器会和服务器建立TCP连接。

第一步:客户机的TCP首先向服务器的TCP发送连接请求报文段。这个特殊报文段的首部中的同步位SYN置1,同时选择一个初始序号seq=x。TCP规定,SYN报文段不能携带数据,但要消耗掉一个序号。这时,TCP客户进程进入SYN-SENT(同步已发送)状态。
第二步:服务器的TCP收到连接请求报文段后,如同意建立连接,则向客户机发回确认,并为该TCP连接分配缓存和变量。在确认报文段中,把SYN位和ACK位都置1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y。注意,确认报文段不能携带数据,但也要消耗掉一个序号。这时,TCP服务器进程进入 SYN-RCVD(同步收到)状态。
第三步:当客户机收到确认报文段后,还要向服务器给出确认,并为该TCP连接分配缓存和变量。确认报文段的ACK位置1,确认号ack=y+1,号seq=x+1。该报文段可以携带数据,若不携带数据则不消耗序号。
成功进行以上三步后,就建立了TCP连接,接下来就可以传送应用层数据。TCP提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。另外,值得注意的是,服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击。
客户端发送HTTP请求
浏览器构建http请求报文,并通过TCP协议传送到服务器的指定端口。http请求报文一共包括三个部分:
请求行:指定http请求的方法、url、http协议版本等
首部行:描述浏览器的相关信息,语言、编码等。
请求报文:当发送POST, PUT等请求时,通常需要向服务器传递数据。这些数据就储存在请求正文中。
服务器处理HTTP请求
服务器处理http请求,并返回响应报文。响应报文包括三个部分:
客户端页面渲染
浏览器接受到http服务器发送过来的响应报文,并开始解析html文档,渲染页面。具体的渲染过程包括:构建DOM树、构建渲染树、定位页面元素、绘制页面元素等。
断开TCP连接
客户端与服务器四次挥手,断开tcp连接。
这就是一个具体的从输入URL到网页呈现的过程,重点在于DNS解析和TCP的连接,以及HTTP请求的相关知识。
相关文章:
数据链路层和DNS之间的那些事~
数据链路层,考虑的是两个节点之间的传输。这里面的典型协议也很多,最知名的就是“以太网”。我们本篇主要介绍的就是以太网协议。这个协议规定了数据链路层,也规定了物理层的内容。 目录 以太网帧格式 帧头 载荷 帧尾 DNS 从输入URL到…...
Spring-声明式事务
声明式事务 一、简介1、准备工作2、测试 二、声明式事务概念1、编程式事务2、声明式事务3、基于注解的声明式事务1.测试无事务情况2.加入事务①Transactional注解标识的位置②事务属性:只读③事务属性:超时④事务属性:回滚策略⑤事务属性&…...
腾讯云轻量服务器地域选择教程,一篇文章就够了
腾讯云轻量应用服务器地域是指轻量服务器数据中心所在的地理位置,如上海、广州和北京等地域,如何选择地域?腾讯云百科txybk.com建议地域选择遵循就近原则,用户距离轻量服务器地域越近,网络延迟越低,速度就越…...
【斗罗二】王东升级三环,戴华斌挑衅,雨浩单手接鼎订下赌约
【侵权联系删除】【文/郑尔巴金】 深度爆料,《绝世唐门》第20集,一场瞩目的战斗即将爆发。王冬,这位一年级的强攻系班长,将与戴华斌进行一场激烈的较量。王冬拥有三大武魂,其中最为人们所熟知的是那光明女神蝶&#x…...
洛谷 B2135:单词替换
【题目来源】https://www.luogu.com.cn/problem/B2135【题目描述】 输入一个字符串,以回车结束(字符串长度 ≤200)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换…...
IDEA中application.properties文件中文乱码
现象: 原因: 项目编码格式与IDEA编码格式不一致导致的 解决办法: 在File->Settings->Editor->File Encodings选项中,将Global Encoding,Project Encoding,Default encoding for properties files这三个选项置为一致&a…...
Rust 模块系统
文章目录 模块系统crate包cargo 创建库库的使用 模块系统 Rust的{模块系统|the module system},包括: * 包(Packages): Cargo 的一个功能,它允许你构建、测试和分享 crate。 * Crates :一个模…...
面向服务架构-架构师(六十四)
SOA概述和发展、参考架构、协议和规范、标准和原则、设计模式、构件和实施。 SOA概述和发展 服务指系统对外提供的功能,SOA是一种应用框架。 微服务去掉了ESB企业服务总线,SOA集中式,SOA和微服务的区别: 微服务更加精细。服务…...
Linux之系统编程
1.yum 1.yum list可以出现所有可下载的程序 辅助grep进行查找 2.yum install可以下载并安装 3.yum remove可以卸载程序 不同的商业操作系统内核都是一样的,主要是配套社区不一样。 开源组织,各大公司,既得利益者。 同上 基础软件源可以保证…...
信道数据传输速率、信号传播速度——参考《天勤计算机网络》
一、缘起题目 二、解析 三、总结 信道数据传输速率和信号传播速度是两个不同的概念。 3.1 信道数据传输速率(Channel Data Transfer Rate) 指的是在通信系统中,通过信道传输的数据量,通常以 比特率(bits per second…...
微信小程序vue+uniapp旅游景点门票预订系统 名胜风景推荐系统
与此同时越来越多的旅游公司建立了自己的基于微信小程序的名胜风景推荐平台,管理员通过网站可以添加用户、景点分类、景点信息、在线预订、最新推荐,用户可以对景点信息进行在线预订,以及开展电子商务等。互联网的世界里蕴藏无限生机…...
每日一题之二分查找(一)
每日一题之二分查找(一) 1.题目(搜索插入位置) 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间…...
Redisson的看门狗策略——保障Redis数据安全与稳定的机制
前言 自定义redis分布式锁无法自动续期,比如,一个锁设置了1分钟超时释放,如果拿到这个锁的线程在一分钟内没有执行完毕,那么这个锁就会被其他线程拿到,可能会导致严重的线上问题,在秒杀场景下,…...
2.2 消元法的概念
一、消元法介绍 消元法(elimination)是一个求解线性方程组的系统性方法。下面是使用消元法求解一个 2 2 2\times2 22 线性方程组的例子。消元之前,两个方程都有 x x x 和 y y y,消元后,第一个未知数 x x x 将从第…...
删除有序数组中的重复项
目录 题目: 示例: 题目分析: 解题思路: 题目: 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的…...
【数据库】
文章目录 1. 聚合函数练习: 2. 子查询 1. 聚合函数 where中过滤条件中不能写聚合函数,有聚合函数需要写到Having中 方式一效率高: Select执行流程 练习: 2. 第七题:count(*)有问题,原因是左外连接后…...
高级深入--day38
阳光热线问政平台 http://wz.sun0769.com/index.php/question/questionType?type4 爬取投诉帖子的编号、帖子的url、帖子的标题,和帖子里的内容。 items.py import scrapyclass DongguanItem(scrapy.Item):# 每个帖子的标题title scrapy.Field()# 每个帖子的编…...
基于springboot,vue校园社团管理系统
开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本系…...
广州华锐互动:VR虚拟现实物理学习平台,开启数字化教学新格局
随着虚拟现实(VR)技术的不断发展,越来越多的领域开始应用这一技术。广州华锐互动开发的VR虚拟现实物理学习平台就得到了广泛应用,平台涉及力学、光学、热学等初中物理知识,还包含了物理名人、实验器具、物理现象的还原和学习,相比…...
【tio-websocket】8、T-IO对半包和粘包的处理
介绍 t-io对数据的解码是在DecodeRunnable中完成的,一个TCP连接对应一个DecodeRunnable半包粘包的处理也都在DecodeRunnable中完成的关于DecodeRunnable 先贴上 DecodeRunnable 的源代码: import java.nio.BufferUnderflowException; import java.nio.ByteBuffer; import j…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

