DNS和HTTP

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.mzph.cn/news/794812.shtml

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

相关文章

YOLO火灾烟雾检测数据集:20000多张,yolo标注完整

YOLO火灾烟雾检测数据集:一共20859张图像,yolo标注完整,部分图像应用增强 适用于CV项目,毕设,科研,实验等 需要此数据集或其他任何数据集请私信

C++11多线程库重点接口

目录 一.thread构造函数 二.移动构造,移动赋值 小结 三.获取线程id的方法 四.thread与lambda表达式联用 五.Mutexs的总览 六.互斥锁 七.Locks的总览 八. 条件变量总览 九.条件变量的wait和notify 十.典型例题 十一.原子类 十二.智能指针和单例模式的线…

详解 Redis 在 Ubuntu 系统上的安装

在 Ubuntu 20.04 安装 Redis 1. 先切换到 root 用户 在 Ubuntu 20.04 中,可以通过以下步骤切换到 root 用户: 输入以下命令,以 root 用户身份登录: sudo su -按回车键,并输入当前用户的密码(即具有 sudo…

【论文精读】Detecting Out-of-Distribution Examples with Gram Matrices 使用Gram矩阵检测分布外实例

文章目录 一、文章概览(一)Gram矩阵1、Gram(格朗姆)矩阵的定义2、Gram矩阵计算特征表示3、风格迁移中的Gram矩阵 (二)ood检测(三)核心思路:扩展 Gram 矩阵以进行分布外检…

2024最新在线工具箱/ 站长IT工具箱/网站系统源码下载

2024最新在线工具箱/ 站长IT工具箱/网站系统源码下载- 更多详情及下载地址请访问https://a5.org.cn/a5_ziyuan/39525.html 转载请注明出处!

SketchUp Pro 2024 for mac 草图大师 专业的3D建模软件

SketchUp Pro 2024 for Mac是一款功能强大的三维建模软件,适用于Mac电脑。其简洁易用的界面和强大的工具集使得用户可以轻松创建复杂的3D模型。 软件下载:SketchUp Pro 2024 for mac v24.0.483 激活版下载 SketchUp Pro 2024 for Mac支持导入和导出多种文…

软件杯 深度学习乳腺癌分类

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

性能测试,python 内存分析工具

Memray是一个由彭博社开发的、开源内存剖析器;开源一个多月,已经收获了超8.4k的star,是名副其实的明星项目。今天我们就给大家来推荐这款python内存分析神器。 Memray可以跟踪python代码、本机扩展模块和python解释器本身中内存分配&#xf…

Revit模型进入虚幻引擎UE5教程

一、背景 小伙伴们是否有Revit进入虚幻引擎交互的需求呢? 二、实现功能 1.Revit进入虚幻UE5,包含模型属性,材质等 2.实现BIM构件点选,高亮,属性展示 3.实现BIM模型分层显示,爆炸等效果 三、教程地址 教程&#x…

51单片机入门_江协科技_21~22_OB记录的笔记

21. LED点阵屏 21.1. LED点阵屏介绍 •LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等 •LED点阵屏分类 按颜色:单…

Leetcode 64. 最小路径和

心路历程: 第一反应像是一个回溯问题,但是看到题目中要求最值,大概率是一道DP问题。并且这里面的递推关系也很明显。 这里面边界条件可以有多种处理方法。 解法:动态规划 class Solution:def minPathSum(self, grid: List[List…

六、企业级架构缓存篇之memcached

一、memcached概述 1、网站架构优化流程: LNMP架构中网站应用访问流程: 浏览器 (app) → web 服务器 → 后端服务 (php) → 数据库 (mysql) 访问流程越多,访问速度越慢,出现问题的几率也越大。 网站访问流程优化思路&#xff1…

【机器学习】如何通过群体智慧解决机器学习的挑战“

机器学习的发展日新月异,但其成功实施的关键之一仍然是获取高质量的、标注良好的数据集。在这篇文章中,我们将探讨如何通过群体智慧来构建和改善机器学习的数据集,尤其是通过reCAPTCHA和带有目的的游戏(Games with a Purpose, GWA…

比nestjs更优雅的ts控制反转策略-依赖查找

一、Cabloy5.0内测预告 Cabloy5.0采用TS对整个全栈框架进行了脱胎换骨般的大重构,并且提供了更加优雅的ts控制反转策略,让我们的业务开发更加快捷顺畅 1. 新旧技术栈对比: 后端前端旧版js、egg2.0、mysqljs、vue2、framework7新版ts、egg3…

Web大并发集群部署之集群介绍

一、传统web访问模型 传统web访问模型完成一次请求的步骤 1)用户发起请求 2)服务器接受请求 3)服务器处理请求(压力最大) 4)服务器响应请求 传统模型缺点 单点故障; 单台服务器资源有限&…

Prometheus+grafana环境搭建MongoDB(docker+二进制两种方式安装)(五)

由于所有组件写一篇幅过长,所以每个组件分一篇方便查看,前四篇mongodb的exporter坑也挺多总结一下各种安装方式,方便后续考古。 Prometheusgrafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客 Prometheusgrafana环境搭建rabb…

【关于窗口移动求和的两种计算方法】

窗口移动计算方法 例子方法1方法2运行结果: 例子 在很多算法中都会涉及到窗口滑动,比如基于新息序列更新的自适应卡尔曼滤波器算法中便会使用到。 已知一个数列:OCV [1;2;3;4;5;6;7;8;9;10;11;12;13;14;15],定义窗口长度为5,每次…

小林coding图解计算机网络|TCP篇06|如何理解TCP面向字节流协议、为什么UDP是面向报文的协议、如何解决TCP的粘包问题?

小林coding网站通道:入口 本篇文章摘抄应付面试的重点内容,详细内容还请移步:小林coding网站通道 文章目录 如何理解UDP 是面向报文的协议如何理解字节流如何解决粘包固定长度的消息 特殊字符作为边界自定义消息结构 如何理解UDP 是面向报文的…

Hadoop-入门

资料来源:尚硅谷-Hadoop 一、Hadoop 概述 1.1 Hadoop 是什么 1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 2)主要解决:海量数据的存储和海量数据的分析计算问题。 3)广义上来说,Hadoop…

深入浅出 -- 系统架构之分布式常见理论概念

随着计算机科学和互联网的发展,分布式场景变得越来越常见,能否处理好分布式场景下的问题,成为衡量一个工程师是否合格的标准。本文我们介绍下分布式系统相关的理论知识,这些理论是我们理解和处理分布式问题的基础。 CAP理论 CAP…