浅析URL

621 阅读6分钟

URL

URL(全称:Uniform Resource Locator),中文名是统一资源定位器,俗称网页地址或者网址。用于指定web上面的资源地址,每个有效的 URL 都指向一个唯一的资源。

URL的构成

协议 + 域名/IP + 端口号 + 路径 + 查询参数 + 锚点

image.png

默认端口号443

1.协议

用于在Web浏览器和网站服务器之间传递信息,一般分为HTTP协议和HTTPS协议

1.1 HTTP协议(Hyper Text Transfer Protocol)

超文本传输协议,服务器默认用80端口提供服务,
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。

1.2 HTTPS协议(Hyper Text Transfer Protocol over SecureSocket Layer)

超文本传输安全协议,服务器默认用443端口提供服务,
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。

2. IP

IP是用于定位一台设备和封装数据报文,以跟其他设备交流(例如:家中的电脑,路由器,网络等等)他们都是有自己独立的IP IP又分为内网IP和外网IP,内网和外网之间互不干涉,只能通过路由器(网关)进行联系。

image.png

那么我们要怎样查询自己的内外网IP?

首先,打开我们的命令行,在命令行输入ipconfig;就会出现如下图一样的画面

image.png

图片中的IPv4就是我们查询到的内网IP;
在我们办理了宽带之后,电信就会给我们分配一个IP。

注意:

几个特殊的IP

127.0.0.1localhost表示本机
localhost可以通过host文件进行修改
在 Windows 系统中,hosts 位于C:\Windows\System32\drivers\etc\hosts
0.0.0.0 不表示任何设备

3.域名

域名又是什么呢?

域名就是IP的一个别称。(例如:qq.com baidu.com)它分为:顶级域名、一级域名、二级域名、三级域名。
通常我们把".com"结尾的称为顶级域名;
xxx.com”为二级域名(俗称一级域名;
www.xxx.com” 是三级域名(俗称二级域名)

域名可以简单理解为通往你网站的路,,通常有一串字符和后缀组成,常见的后缀有 com,net,cn等

相对于ip来说,域名更好记

  • com 商业性的机构或公司
  • cn中国域名
  • org 非盈利的组织、团体
  • gov 政府部门
  • mil 军事部门
  • net 从事Internet相关的的机构或公司
  • cc 无限制
  • tv 无限制
  • ac 科研机构

那么我们怎么获取这些域名对应的IP呢?

直接命令行输入ping http://qq.comping http://baidu.com,就会得到对应的IP。
Ping就是请求的意思。每当我们ping一次就会返回一个IP。

image.png

image.png

负载均衡和共享主机
负载均衡就是指把一个域名同时绑定ABCD这些IP上,当A区域的用户访问时,就会返回A对应的IP,当B区域的用户访问时就返回B对应的IP;
共享主机就是指把n多个域名同时绑定在一个IP上。多个网站共用一台服务器;这时,当用户同时访问这个IP所绑定的两个域名时,返回的IP就是同一个IP。

4. 端口

端口:port。IP地址中的端口指的是逻辑端口,逻辑端口是逻辑上用于区分服务的端口。
一个IP地址的端口通过16bit进行编号,一台设备一共有65535个端口。其中0-1023这1024个端口为系统端口。我们在使用端口时,都是从1024开始使用的。每访问一个域名都要与之对应一个端口,当一个端口被其他域名占用的时候,就只能换另一个端口(因为这个端口已经在使用中)
需要的注意的一点是:http服务最好用80端口,https服务最好用443端口,ftp服务最好用21端口。,当我们在浏览器中一般会看到URL中域名后没有接端口。这个端口一般都是默认80端口。

5. 路径

用于访问同一个网站的不同页面,可以请求静态资源,查询后台数据
路径一般是指当我们发起一个请求时,他就会去请求这个域名所对应的根目录“/”。
从域名后的最后一个“/”开始到“?”为止,是路径部分,
如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是路径部分,
如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是路径部分。

6. 查询字符串

用于访问同一页面中的不同数据
查询字符串通常用于我们想快速知道结果时使用的,
例如:baidu.com/s?wd=hello 通过查询字符串直接在百度搜索“hello的内容”

如:baidu.com/s?wd=hello&… 通过查询字符串直接搜索“hello的内容”且从第31个结果开始看。

7. 锚点

用于定位页面中的位置,且不支持中文,浏览器会将其转化为数字,瞄点只和浏览器有关,与服务器无关,所以锚点不会传到服务器
一篇文章同时介绍了多个内容,但是我现在就只想看其中的某一部分内容,那么我们可以通过加锚点来实现。如:developer.mozilla.org/zh-TW/docs/…

image.png

DNS

DNS (Domain Name System) 域名系统,将域名与IP对应的网络服务,让用户在访问网站时,不再需要输入冗长难记的IP地址,只需输入域名即可访问,因为DNS服务会自动将域名转换成正确的IP地址。

在命令行中直接解析nslookup qq.com 可用于解析腾讯的DNS服务器

image.png

在浏览器地址栏键入URL,经历的流程

  1. 浏览器向 DNS 服务器(域名系统/服务)请求解析该 URL 中的域名所对应的 IP 地址
  2. 根据获取的IP 地址和端口号,和服务器建立TCP连接,IP和端口号缺一不可
  3. 浏览器发出读取文件的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器
  4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器,释放TCP
  5. 将获取的页面显示给用户

curl命令

用curl可以发HTTP请求
curl-v http://baidu.com
curl-s -v -- https://www.baidu.com

  • url会被curl工具重写,先请求DNS 获得IP
  • 先进行TCP连接,TCP连接成功后,开始发送HTTP请求
  • 请求内容看一眼
  • 响应内容看一眼
  • 响应结束后,关闭TCP连接((看不出来)
  • 真正结束

image.png