大数据项目——广告数仓之HTTP概述

目录

第一章、理解URL

[1.1 客户端、服务器](#1.1 客户端、服务器)

[1.1.1 服务器与服务](#1.1.1 服务器与服务)

[1.1.2 客户端](#1.1.2 客户端)

[1.2 URL](#1.2 URL)

[1.3 查询参数](#1.3 查询参数)


第一章、理解URL

1.1 客户端、服务器

1.1.1 服务器与服务

所谓服务器,其实就是一台24小时不关机的计算机,它也有自己的cpu、内存、网卡、硬盘以及操作系统(一般是各种发行版linux)。这些服务器和普通的电脑一样,也有目录、用户这些概念。

假如这是香港城市大学的一台服务器,这台服务器上提供了一个web服务,所谓服务,其实就是一个24小时运行在服务器上的程序。现在,如果有别的电脑来访问这个服务,他就可以看到香港城市大学的官网了。

1.1.2 客户端

现在,有一台客户机打开了自己的浏览器想要访问香港城市大学的官网。

但是在庞大的互联网世界中,提供服务的服务器不仅仅只有一台,我们的客户机怎么才能在茫茫机海中找到香港城市大学的服务器呢?

1.2 URL

答案就是URL(Uniform Resource Locator,统一资源定位符),我们经常在浏览器里输入的访问地址(比如NewsCentre | City University of Hong Kong),就是一个典型的URL。我们就是靠它定位需要访问的资源的。

URL是有固定格式的,下面我们通过一个具体的例子进行介绍。

下面这个地址是香港城市大学新闻页的URL

NewsCentre | City University of Hong Kong

将它复制到浏览器进行访问可以看到如下的页面

现在说一下URL的结构。

  • 协议头:

冒号之前的部分,我们称为协议头。在这个URL中,我们可以说使用的是https协议。

https://www.cityu.edu.hk/media/news

  • 主机名或域名:

://和第一个/之间的内容是主机名或域名(还可以直接写ip地址)。

https://www.cityu.edu.hk/media/news

严格来说,客户端通过ip地址才能在网络中找到响应的服务器。我们之前学过如何配hosts,当时就是相当于给ip地址起了别名,这样我们才能通过hadoop102、hadoop103等主机名去访问各类服务。但www.cityu.edu.hk对应的ip我们是怎么知道的呢?其实还有一个东西叫做DNS(域名解析系统),它其实是一些互联网厂商提供的一个把域名解析为ip地址的服务(它有一个域名和ip地址对应关系的表),而且DNS服务器的IP地址是事先写到路由器或上游网络设备的设置里的。

所以:

(1) 浏览器会根据DNS服务器的ip地址,找就近的DNS服务器去查询www.cityu.edu.hk的ip地址是多少。

(2) DNS响应浏览器,告诉我们www.cityu.edu.hk的ip地址是144.214.4.184。

最后,需要说明,域名是有专门的机构进行管理的,当你注册cityu.edu.hk这个域名时,别人就不能注册了。因此,可以确保域名的唯一性。

(3) 然后浏览器会在真正执行请求时,偷偷地把www.cityu.edu.hk换成ip地址。也就成了:

https://144.214.4.184/media/news

  • 端口号

URL里其实还应该指定端口号。比如:

https://144.214.4.184:443/media/news

但是,在极个别的情况下可以省略。比如如果协议是http,那么在URL中省略端口号,就会默认访问80端口。如果协议是https,那么省略端口号时就会默认访问443端口。没有为什么,这是互联网刚兴起时,早期约定俗称的东西。其他情况下,端口号通常需要明确指定。

  • 路径

从第一个单斜杠(包含)及其之后,其实就是路径了。它联合前面的协议头、域名共同指定了互联网中的唯一资源(可以是视频、网页、文件或者字符串)。

在此处,这个/media/news其实就对应香港城市大学的新闻页了。

https://144.214.4.184:443/media/news

现在我们的浏览器(客户端)已经可以根据IP地址找到服务器了。于是浏览器就向服务器通过网络发送了一条请求。

服务器上的程序根据URL中的路径寻找相应的文件或者执行某种程序,并将最终的结果返回给客户端。

最终,我们的页面上就能出现相应的内容了。

​​​​​​​1.3 查询参数

不久,我们发现自己想看更多的新闻,我们想要看第二页。于是在页面最底部的页码条上点了一下2。

这个时候,我们发现浏览器地址栏里的URL,发生了变动。

注意问号之后的内容,它是一组由&分隔的键值对,键和值之间用=分隔。?后的异常创,我们通常称它为"查询参数"。

当前的查询参数具有如下含义:

页码 : 1

关键字 : <没给>

查询参数是对路径的进一步补充描述,它就像是在告诉服务器,我还是要看香港城市大学的新闻业,不过请给我page为1的页面。这个时候,香港城市大学的服务器又往后找了几条新闻,返回到了你的浏览器上。

那么问题在于,第一次请求的时候好像没给查询参数,香港城市大学为什么知道我要看的是哪一页呢?这其实取决于他们服务器的处理逻辑,现在让我们在下方的页码栏再次点击第一页。

此时,我们可以看到浏览器地址栏的变化。

这个时候,查询参数变成了page=0。也就是说,请求/media/news和请求/media/news?keyword=&page=0的结果是一样的。这可以理解为香港城市大学后台程序给page设置了默认值(0),所以用户不指定这个参数也可以顺利看到内容。但这并不是到哪个网站都通用的,当你指定URL时发送请求时,服务器要给你看什么完全取决于服务器。

相关推荐
阑梦清川2 小时前
JavaEE初阶---网络原理(五)---HTTP协议
网络·http·java-ee
拓端研究室TRL2 小时前
【梯度提升专题】XGBoost、Adaboost、CatBoost预测合集:抗乳腺癌药物优化、信贷风控、比特币应用|附数据代码...
大数据
黄焖鸡能干四碗2 小时前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书
编码小袁2 小时前
探索数据科学与大数据技术专业本科生的广阔就业前景
大数据
阿尔帕兹2 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker
FeelTouch Labs3 小时前
Netty实现WebSocket Server是否开启压缩深度分析
网络·websocket·网络协议
WeeJot嵌入式3 小时前
大数据治理:确保数据的可持续性和价值
大数据
zmd-zk4 小时前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
激流丶4 小时前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
千天夜4 小时前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流