【HTTP全解】浅析 URL

内容提要:php

  1. URL 包含哪几部分,每部分分别有什么做用
  2. DNS 的做用是什么,nslookup 命令怎么用
  3. IP 的做用是什么,ping 命令怎么用
  4. 域名是什么,分别哪几类域名

URL(Uniform Resource Locator)的组成部分

传输协议+ 域名或IP+ 端口号 + 路径+ 查询字符串+ 锚点

eg.html

https://www.baidu.com/swd=hello&rsv_spt=1#5git

传输协议+ 域名或IP+ 端口号 +路径+ 查询字符串+ 锚点

eg.github

https://www.baidu.com/swd=hello&rsv_spt=1#5面试

  • 传输协议( scheme: [protocal] ):httphttpsftp
  • 域名( [//authority] Domain Name ):www.baidu.com
  • 端口( :Port ):一般省略,:80:443:8080等(http 大部分默认80, https默认443)
[//authority] = [userinfo@]host[:port]
  • 路径( Path to the file):/s
  • 查询参数([?query] Parameters ):wd=hello&rsv_spt=1或者?key1=value1&key2=value2
  • 锚点( [#fragment] Anchor ):#5

另外一个常见的 URL(URI) 的例子:segmentfault

https://zh.wikipedia.org/w/index.php?title=Special:随机页面#5后端

  • https:协议
  • zh.wikipedia.org:域名
  • /w/index.php:路径(不一样的页面)
  • ?title=Special:随机页面:查询参数(相同页面,不一样内容)
  • #5:锚点(相同页面,相同内容,不一样位置)

其中若不写端口号,则表示使用 https 对应的默认端口号 443浏览器

localhost:8080服务器

DNS(Domain Name System):域名系统

做用:根据域名查出IP地址网络

即:将域名解析为IP 地址

nslookup可查询IP(DNS)地址

直接使用能够查询到域名的 A 记录

nslookup 命令用于查询 DNS 的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题
# nslookup + 域名
nslookup domain [dns-server]
nslookup xmasuhai.xyz

IP的做用,ping 命令用法

  • 一是定位一台设备
  • 二是封装数据报文跟其余设备交流

ping命令是经常使用的网络命令,它一般用来测试与目标主机的连通性。

即:

  • 标识主机,具体地说,标识其网络接口,而且提供主机在网络中的位置,就此提供建立到达该主机的路径的能力。
  • 每一个 IP 数据包的标头包含了发送主机的 IP 地址和目的主机的 IP 地址。
# ping [参数][主机名或ip地址]
ping baidu.com

域名(Domain Name)

是互联网的一项服务,主要用于域名与 IP 地址的相互转换

若是要访问一个地址(使用域名),都要先经过DNS查询域名对应的IP地址,才能进行访问

域名分类

域名分顶级域名,二级域名和三级域名

好比对于www.baidu.com

  1. 顶级域名:com
  2. 二级域名:baidu.com
  3. 三级域名:www.baidu.com
域名的第一级是顶级域,它包括通用顶级域, 例如.com、.net 和.org

以及国家和地区顶级域,例如.us、.cn和.tk

完整域名的全部字符加起来不得超过 253 个 ASCII 字符的总长度。

当每一级都使用单个字符时,限制为 127 个级别:127 个字符加上 126 个点的总长度为 253。

但实际上,某些域名可能具备其余限制;也没有只有一个字符的域名后缀。


内容提要卐,后面是视频记录流水帐


问:hosts 文件在哪?

答: 在 Windows 系统中,hosts 位于C:\Windows\System32\drivers\etc\hosts

在 macOS / Linux系统中,hosts 位于/etc/hosts

网络和 IP

李爵士的发明

WWW=URL+HTTP+HTML

HyperText Transfer Protocol协议

IP:Internet Protocol

IP(Internet Protocol)主要约定

1.如何定位一台设备 2.如何封装数据报文(用来和其余设备交流)

互联网(not WWW),至少一个独特的IP

IP份内网和外网

设备 路由器 电信DNS服务器 其余用户

获取外网IP 买 | 蹭

  • 首先,你须要租用宽带(电信或者联通)
  • 其次,你须要购买一个路由器(有时候也被叫作“网关”)
  • 当路由器链接上电信或者联通的服务器后,路由器就会得到一个外网的IP,全部经过路由器链接的设备,他们的外网IP都是一致的。
  • 注意:若是当你重启路由器以后,可能会被分配一个新的外网IP,也就是说,路由器是没有一个固定的外网IP,除非高价买,企业级须要

内网IP

  • 路由器建立内网,内网中的设备使用内网IP,格式192.168.xxx.xxx192.168.1.1
  • 路由再给每个内网中的设备(PC、手机)分配一个不一样的内网IP
  • 内网的全部设备都有一个相同的外网IP
  • 路由器会为每个内网中的设备分配一个不一样的内网IP

内网IP固定

查看IP

ping xxx.com
ipconfig

查看ip38.com

路由器的功能

  1. 路由器有两个IP,内外各一
  2. 内网中的设备可互相访问,但不可直接访问外网
  3. 内网设备经过路由器中转,访问外网
  4. 外网设备没法访问你的内网,无论直接间接
  5. 外网把内容推送到内网,必须经过路由
  6. 内外隔绝,路由是惟一联通点,即网关

几个特殊的IP

  1. 127.0.0.1表示本身
  2. localhost经过hosts指定为本身
  3. 0.0.0.0不表示任何设备,后端用

端口

一台机子可提供不少服务,每一个服务一个号码,即端口号 port

不一样的服务

  1. 提供HTTP服务,最好使用80端口
  2. 提供HTTPS服务,最好443端口
  3. 一共有65535个端口,FTP是21端口
  4. 该用什么端口:端口对应的服务列表wiki

其余使用规则

  1. 0到1023(2的10次方减1,计1024个)号端口,留给系统使用,本身使用须取得管理权限
  2. http-server默认使用8080端口
  3. 一个端口被占用时,只能换另外一个
总之,IP和端口缺一不可

域名、路径、查询参数、锚点

qq.comt.tt

域名:对IP的别称

ping baidu.com

#将获得四个回复(win),mac 需ctrl+c中断
baidu.com对应 ping baidu.comqq.com对应 ping qq.com

知识点

  • 一个域名能够对应不一样IP,即均衡负载,分流,防止一台机子扛不住,或者恶意的D-Dos攻击,网站优化策略
  • 一个IP可对应不一样域名,即穷开发者的共享主机

域名和IP,怎么对应起来?

  • 经过DNS

当你输入xiedaimala.com

Chrome开发者工具中,Network面板,xiedaimala.com点击,Headers里,请求根目录https://xiedaimala.com/

获得响应Response 一串HTML代码,请求CSS,请求图片,请求js等

过程

客户端向DNS服务器(DNS服务器有本身的IP地址)发送域名查询请求

DNS服务器告知客户机Web服务器的IP地址

  • 提供DNS的服务器的服务商:电信或联通等
  • 浏览器向提供DNS的服务器询问xiedaimala.com对应什么IP
  • 服务器回答一个IP(具体过程三次握手、四次握手,面试必问)
  • 请求内容是查看这个网址的网页

eg.xiedaimala.com的首页index.html

why80443端口

  • 服务器默认用80提供http服务
  • 服务器默认用443提供https服务
  • 在开发者工具查看具体端口
  • 不须要写在地址栏里,写了也帮你消掉

nslookup

nslookup -qt=[type] domain [dns-server]

type能够是:

  • A 地址记录
  • AAAA 地址记录(IPv6)
  • CNAME 别名记录
  • HINFO 硬件配置记录,包括 CPU、操做系统信息 等

询问域名,域名ns,寻找lookup

nslookup baidu.com

默认自动设置 电信DNS114.114.114.114备用114.114.115.115

题外话

www

  • A:www.xiedaimala.com和B:xiedaimala.com不是同一个域名
  • com(没有点)是顶级域名
  • xiedaimala.com是二级域名(俗称一级域名)
  • www.xiedaimala.com是三级域名(俗称二级)
  • 祖父子关系
  • github.io把子域名xxx.github.io免费给你使用
  • A和B能够不是同一家公司
  • www是多余的,历史残留,脱x子放*

如何请求不一样的页面

用路径
工具

使用Chrome开发者工具Network面板查看区别

同一个页面,不一样内容

用查询参数:https://xxx.com/s?wd=hello

同一个内容(页面),不一样位置

用锚点
锚点就是文档内部的定位

注意:

  • 锚点看起来有中文,实际不支持中文
  • #参考书会变成#%E5%8F%82%E8%80%83%E4%B9%A6
  • 锚点不会传给服务器,因此是没法在Network面板里看到的

URL

统一资源定位符(Uniform Resource Locator),简称URL,是因特网上标准的资源的地址(Address)

Every HTTPURLconforms to the syntax of a genericURI.

每一个有效的 URI 都指向一个独特的资源。这个资源能够是一个 HTML 页面,一个 CSS 文档,一幅图像、视频、邮件、PDF等

The URI generic syntax consists of a hierarchical sequence of five components

  • URI = scheme:[//authority]path[?query][#fragment]
  • -authority = [userinfo@]host[:port]

wiki:URL

组成

传输协议+ 域名或IP+ 端口号 + 路径+ 查询字符串+_锚点_

eg.

https://www.baidu.com/swd=hello&rsv_spt=1#5

**www.baidu.com**是域名。 代表正在请求哪一个 Web 服务器。或者,能够直接使用 IP address, 但由于不便,因此不常使用。

就算没写,也应知道端口,HTTPS默认端口443,一般省略

/path/to/index.html是网络服务器上资源的路径,路径表示访问哪一个网页

ftp://是文件传输协议,不属于www,本地或局域网

wd=hello&rsv_spt=1?key1=value1&key2=value2是提供给网络服务器的额外参数。 这些参数是用 & 符号分隔的键/值对列表。

wd=hello&rsv_spt=1查询字符串表示页面的展现内容,第几部分,第几章,第几页,或者查询关键词

在返回资源以前,Web服务器可使用这些参数来执行额外的操做。

#Anchor#SomewhereInTheDocument是资源自己的另外一部分的锚点。

锚点表示资源中的一种“书签”,给浏览器显示位于该“加书签”位置的内容的方向。 例如, 在 HTML 文档上,浏览器将滚动到定义锚点的位置

在视频或音频文档上,浏览器将尝试转到锚表明的时间

#后面的部分(也称为片断标识符)[fragment]历来没有发送到请求的服务器

锚点会被浏览器‘吃掉’,锚点只和浏览器有关,不必发送给服务器

服务器没法接收#以后的内容,参数,不想被扣年终bonus的记住

HTTP协议

基于TCPIP两个协议:也称TCP/IP

curl 命令

curl能够发HTTP请求

  • curl https://xiedaimala.com
  • curl -v http://baidu.com
  • curl -v -- http://baidu.com
-v:verbose 啰嗦模式

理解如下概念

  • url会被curl工具重写,先请求DNS得到IP
  • 先进行TCP链接,TCP链接成功后,开始发送HTTP请求
  • 请求内容看一眼
  • 相应内容看一眼
  • 响应结束后,关闭TCP链接(看不出来)
  • 真正结束
规定请求的格式是什么,响应式格式是什么

·未完待续·


参考文章

相关文章


相关文章
相关标签/搜索