DNS和HTTP

news2024/11/20 23:21:47

DNS应用层协议

域名解析系统

     使用IP地址,来描述设备在网络上的位置

     IP地址并不适合来进行传播网站,就采用了域名的方式来解决网站传播的问题。如www.baidu.com这样类似的就很容易让人记住。其域名就直接代表了这个网站。而且有一套自动的系统会将域名解析为对应的IP地址。其是互相对应的。

早期的域名解析系统是由一个简单的文件来实现的。

hosts文件

其里面就有关于本机网络的IP地址和其域名

host文件来维护域名和IP地址的对应关系,非常不方便,需要不停的进行写于修改和删除

于是就有DNS系统的出现其由一群大佬搭建的一组服务器,他们将整理号的对应关系就存储在DNS中。

如果想要访问某个域名,就先给这个服务器发送请求,查询一下这个域名对应的IP地址,然后访问该IP地址。

后续如果增加新的域名和其对应关系只需要在该服务器中进行写不用在每个人的电脑里面进行修改

现在全球的网络设备都是以亿为单位的,这么多的网络设备如果同时去访问改服务器,服务器会不会因为请求量过多而崩溃

要解决这种问题这只能通过两种方法来解决

1.开源

搭建DNS服务器的人号召有能力的网络运营商来搭建相同功能的DNS镜像服务器,其数据从他们这里来进行同步。此时就会减少很多访问,人们就可以选择距离自己比较近的服务器来进行转化。

2.节流

让请求量变小,让每个上网的设备,进行本地缓存,比如电脑如果一天多次要访问www.baidu.com

那就第一次让其去访问DNS服务器,第一次访问之后就在本地留下缓存,然后以后无论多少次直接访问本地缓存保留的信息来直接进行访问

HTTP

http的报文格式,分为两个部分来看待一个是请求,一个是响应。HTTP协议是一种一问一答结构模型的协议。目前HTTP最新的版本应该是HTTP/3.0,大规模使用的应该是/1.1

一问一答(访问网站)

多问一答(上传文件)

一问多答(下载文件)
多问多答(串流/远程桌面)

我们如何来查看HTTP请求和响应的格式

抓包

使用抓包软件时,当电脑中的浏览器加载网页时,抓包软件内部会出现许多包。

如上图当我进入B站时器左边列表会出现许多包和B站有关的右上是请求,右下是响应。

仔细观察列表左边会发现进入一个网页不是只和服务器进行一次操作,而是进行多次操作。

我们关注右边的请求和响应时,点击Raw来关注最原始的数据格式。

HTTP协议是文本格式的协议(里面都是字符串)

以前学过的TCP,UDP都是二进制协议

HTTP响应是文本的.可以直接查看,往往能看到二进制的数据.(压缩后的)

HTTP响应经常会被压缩.压缩之后,体积变小,传输的时候,节省网络带宽.

解压随和压缩需要消耗额外的CPU和时间

解压随之后右下的响应的乱码数据变成了文本格式

如图所示

请求

1.首行有三个部分信息

1)GET ,HTTP请求的“方法”

2)URL   唯一资源描述符.描述一个资源在网络上的位置

3)版本号   HTTP/1.1

2.请求头

是一个键值对结构的数据.(有很多键值对)每个键值对,都是独占一行的.
键和值之间,使用:空格来区分
这里的键值对都是属于"标准规定"的.

3.空行

请求头的结束标记
4.正文

有的HTTP请求有,有的没有

响应

1.首行

1)版本号 HTTP/1.1

2)状态码(200) 描述了请求的结果

3)状态码描述(ok)

2.响应头

也是键值对结构(有多个键值对)每个键值对独占一行.
键和值之间使用:空格来区分.
键值对也是"标准规定"的

3.空行

响应头的结束标记

4.正文

正文里的内容可能比较长,可能是多种格式.
HTML,CSS,Js, JSON,XML,图片,字体,视频,音频...

上述提到的URL是计算机中一个非常重要的概念

不仅在HTTP中涉及到,当初在数据库中连接JDBC时也涉及到

setUrl("jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false");

如图

服务器地址:是(一般域名多)域名,也可以是IP地址

服务器端口号:通过IP地址,只是描述了网络资源在哪个主机上(一个主机可能有很多服务器程序),使用端口号来区分是哪个程序。

url中的端口号有时可以省略.
对于http请求,端口号省略,默认是访问80端口(浏览器给一个默认值)
对于https请求,端口号省略,默认是访问443端口

带层次的文件路径:描述了你要访问服务器的哪个资源(一个服务器提供的资源可能不止一个)

/dir/index.htm
写法是一个看起来像"目录"写法
实际中,在服务器中不一定是以目录的形式来存储资源的

数据可能是硬盘的数据,也可能是内存的数据,也可能是通过网络访问其他服务器拿到的数据,还可能是通过cpu计算出来的一些数据

查询字符串(query string :是一种键值对结构的数据.以?开头的)键值对之间,使用&来分割。键和值之间使用=来分割。一个url中的 query string 里可以包含N个键值对.甚至可能很长

http://日照东港区大学城:88/冒菜/菜都来一份?香菜=少放&辣椒=中辣
query string就是对这次请求内容的一个补充

片段表示符:有的网页内容比较长。就可以分成多个"片段”,通过片段标识符,就可以完成页面内部的跳转。

注: 

对于query string来说,如果value部分要包含一些特殊符号的话,往往需要进行urlencode操作.

如?query=C%2B%2B&

其中的2B是+的意思。urlencode本质上是一种"转义字符"。+的ascii就是2B,在前面加上%表示这是转义的结果.



 


 



 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1570136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 2192.有向无环图中一个节点的所有祖先:拓扑排序

【LetMeFly】2192.有向无环图中一个节点的所有祖先:拓扑排序 力扣题目链接:https://leetcode.cn/problems/all-ancestors-of-a-node-in-a-directed-acyclic-graph/ 给你一个正整数 n ,它表示一个 有向无环图 中节点的数目,节点编…

AFCI 应用笔记二之数据采集

1. 简介 基于监督学习的神经网络算法需要大量数据作为输入,模型完全由数据驱动,其数据质量是算法有效的必要条件,所以如何高效的采集到数据,以及正确的标注或分析是极其重要的,如果第一步有问题,后续的所有…

如何删除 iPhone 上的 iCloud 激活锁

Apple 在 iPhone 上通过不同的安全屏障来保护您的数据。 iCloud 激活锁可阻止外部人员访问您的手机。您可以通过打开“查找我的 iPhone”功能来激活此锁。 使用安全协议似乎是无害的,直到你到达门的另一边。如果您购买了带有激活锁的二手 iPhone 或忘记了 iCloud 凭…

eBay买家号注册下单容易死号?是什么原因导致?

随着电子商务的迅猛发展,跨境电商平台eBay日益成为众多消费者和商家的首选。然而,自去年下半年以来,eBay推出的新规则给买家号的注册带来了前所未有的挑战。许多新用户反映,在注册eBay买家号后,往往遭遇刚注册就被冻结…

哈希表2s总结

3.哈希表 哈希表非常常用,字典一般会用来保存处理过后的输入输出信息,集合也可以用来去重,这部分是重点,但是还是那句话,这种题目是不会或者说很少考原题的,主要还是学习知识,所以题目看一下答…

JS详解-手写Promise!!!

前言: 针对js的深入理解,作者学习并撰写以下文章,由于理解认知有限难免存在偏差,请大家指正!所有定义来自mdn。 Promise介绍: 对象表示异步操作最终的完成(或失败)以及其结果值. 描…

基于SpringBoot+Vue光影视频平台(源码+部署说明+演示视频+源码介绍)

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

ChernoCPP 2

视频链接&#xff1a;【62】【Cherno C】【中字】C的线程_哔哩哔哩_bilibili 参考文章&#xff1a;TheChernoCppTutorial_the cherno-CSDN博客 Cherno的C教学视频笔记&#xff08;已完结&#xff09; - 知乎 (zhihu.com) C 的线程 #include<iostream> #include<th…

SV学习笔记(六)

覆盖率类型 写在前面 覆盖率是 衡量设计验证完备性 的一个通用词。随着测试逐步覆盖各种合理的场景&#xff0c;仿真过程会慢慢勾画出你的设计情况。覆盖率工具会 在仿真过程中收集信息 &#xff0c;然后进行后续处理并且得到覆盖率报告。通过这个报告找出覆盖之外的盲区&…

设计模式——原型模式05

原型模式核心复制&#xff0c;每次new出来的对象完全不一样&#xff0c;实现对象之间的隔离。 学习前最好先掌握jAVA值传递和深浅拷贝 设计模式&#xff0c;一定要敲代码理解 浅拷贝 克隆出对象&#xff0c;其中两者的引用类型属性是同一个对象。 对象信息 /*** author ggb…

C++:逻辑运算符-非与或(19)

!非!a如果a为假&#xff0c;那么当前他就是真&#xff0c;如果a是真&#xff0c;那么他直接就是假&&与a&&ba与b都为真&#xff0c;那么就是真&#xff0c;如果两个里面有一个为假那么就是假||或a||ba或b有一个为真&#xff0c;那么就是真 非&#xff08;!&…

怎样把学浪购买的课程下载下来

如何把学浪已购买的课程下载下来?这里就教大家一个方法,利用一个工具轻轻松松把视频下载下来 这个工具我打包成压缩包了,有需要的自己取一下 链接&#xff1a;https://pan.baidu.com/s/1y7vcqILToULrYApxfEzj_Q?pwdkqvj 提取码&#xff1a;kqvj --来自百度网盘超级会员V1…

基于springboot+vue+Mysql的在线考试系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

redis集合Set

set是一种无序集合。它和列表的区别在于列表中的元素都是可以重复的&#xff0c;而set中的元素是不能重复的。而且set中的元素&#xff0c;并不像列表那样是具有顺序的。 SADD是添加一个元素。course是集合。 SMEMBERS SISMEMBER判断Redis在不在集合course里 SREM是用来删除Re…

Jupyter Notebook安装使用(一)

1. 简介 Jupyter Notebook 是一个非常强大的工具&#xff0c;它允许用户创建和共享包含实时代码、方程式、可视化和叙事文本的文档。这种工具特别适合数据清理和转换、数值模拟、统计建模、数据可视化、机器学习等多种应用领域。 2. 安装Jupyter Notebook 2.1. 使用 Anaconda…

校招说明书

3400字的详细说明&#xff0c;介绍了程序员类岗位校招的整体时间节点和招聘流程。还对一些常见的问题进行讨论&#xff0c;例如内推、offer和三方、实习等。 第一章介绍基本的术语&#xff0c;第二章介绍整个校招的重要流程及时间点&#xff0c;然后第三章介绍每次招聘要经过的…

golang 和java对比的优劣势

Golang&#xff08;或称Go&#xff09;和Java都是非常流行的编程语言&#xff0c;被广泛应用于各种领域的软件开发。尽管它们都是高级编程语言&#xff0c;但它们具有许多不同的特性和适用场景。本文将重点比较Golang和Java&#xff0c;探讨它们的优势和劣势。 性能方面&#…

JSP

文章目录 JSP1. 快速入门2. page 指令3. 三种常用脚本声明脚本表达式脚本代码脚本 4. 注释5. 内置对象6. 域对象7. 请求转发标签8. EL 表达式快速入门EL运算操作EL的11个隐含对象四个特定域变量 9. JSTL快速入门<c:set /><c:if />\<c:choose> \<c:when>…

【微服务】------核心组件架构选型

1.微服务简介 微服务架构&#xff08;Microservice Architecture&#xff09;是一种架构概念&#xff0c;旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦&#xff0c;从而降低系统的耦合性&#xff0c;并提供更加灵活的服务支持。 2.微服务技术选型 区域内容…

爬虫学习第一天

爬虫-1 爬虫学习第一天1、什么是爬虫2、爬虫的工作原理3、爬虫核心4、爬虫的合法性5、爬虫框架6、爬虫的挑战7、难点8、反爬手段8.1、Robots协议8.2、检查 User-Agent8.3、ip限制8.4、SESSION访问限制8.5、验证码8.6、数据动态加载8.7、数据加密-使用加密算法 9、用python学习爬…