DNS和HTTP

news/2024/4/30 0:59:09

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.cpky.cn/p/11599.html

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

相关文章

JVM(Java虚拟机)

文章目录 一、JVM简介1.1 JVM概念1.2 什么是Java虚拟机呢?Java虚拟机的好处是什么呢? 二、JVM整体组成部分三、类加载器3.1 类加载子系统3.2 类加载过程3.2.1 装载(Load)3.2.2 链接(Link)3.2.3 初始化(Initialize) 四、运行时数据区4.1 方法区&#xff0…

爬虫学习第一天

爬虫-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学习爬…

微信小程序生命周期管理:从数据初始化到事件绑定

作为一个独立的应用开发平台,微信小程序提供了自己的生命周期机制,与我们熟悉的Vue.js框架有一些差异。掌握小程序生命周期的特点和使用技巧,对于开发高质量的小程序应用至关重要。深入理解和掌握小程序生命周期的使用技巧,将有助于我们构建出更加健壮和可维护的小程序应用。 小…

OpenAI 宣布, ChatGPT 网页端无需注册就能立即使用(2024年4月1日)

今天,OpenAI宣布,为了让更多人轻松体验人工智能的强大功能,现在无需注册账户即可立即使用 ChatGPT。这一变化是他们使命的核心部分,即让像 ChatGPT 这样的工具广泛可用,让世界各地的人们都能享受到 AI 带来的好处。 网…

图解深度神经网络的架构

图解深度神经网络的架构 基线模型 AlexNet 是突破性的架构,它使卷积网络(CNN)成为处理大型图像分类任务的主要机器学习算法。介绍 AlexNet 的论文呈现了一张很好的图,但是好像还缺点什么…… AlexNet 架构图示(图源&…

计组第三版书例题

基础知识过一下 存储器与CPU的连接主要通过数据总线、地址总线和控制总线实现。CPU首先向存储器发送地址信号,然后发出读写控制信号,最后在数据总线上进行数据的读写操作 。这种连接方式确保了CPU能够正确地访问和控制存储器中的数据。 https://blog.cs…