URL组成部分

URL的组成有:协议、域名、端口、路径、查询参数、锚点
浅析 URL和HTTP请求响应 - 图1
以下从URL的五个组成部分 分别讲解其要点:

协议

主要有HTTP协议和HTTPS协议,HTTP协议默认使用端口号80, HTTPS协议默认使用端口号443

域名

域名是IP的别称

  • 一个域名可以对应多个IP, 这叫负载均衡,防止一台机器无法同时为大量用户提供服务
    • 例如:不同地区ping taobao.com会看到不同的ip地址
  • 一个IP也可以对应多个域名,这叫主机共享

IP

ip地址是用来定位互联网世界中的一台设备,每个上网的设备都有自己独立的IP地址

  • IP分为外网IP和内网IP
  • 一些特殊的IP地址
    • 192.168.XXX.XXX表示内网地址
    • 127.0.0.1表示本机
      • 默认127.0.0.1的域名是localhost,
      • 可以在HOSTS文件里可以更改本地127.0.01 的域名
      • 127.0.0.1 npc ,让npc成为127.0.0.1的别称
    • 0.0.0.0不表示任何设备

浅析 URL和HTTP请求响应 - 图2

  • 可以用Ping命令查看域名的IP地址

image.png
如上图,域名taobao.com对应的IP地址是140.205.220.96

  • 还可以用nslookup命令查看域名的ip地址:

image.png

DNS

域名和ip地址通过DNS联系起来

当你输入www.baidu.com

  • chrome浏览器会向电信/联通提供的DNS服务器询问www.baidu.com对应什么IP
  • 然后电信/联通会回复一个IP
  • 然后chrome浏览器会向对应IP地址的80/ 443端口发送请求
    • 服务器默认用80端口提供HTTP服务
    • 服务器默认用443端口提供HTTPS服务
  • 请求内容是查看www.baidu.com的首页


    端口

    一台服务器可以提供很多服务,每个服务有不同的号码,这个号码就是端口

一台机器可以提供很多不同的服务

  • 80端口:HTTP服务
  • 443端口: HTTPS服务
  • 21端口: FTP服务

https默认用443端口
所以www.baidu.com 等同于 www.baidu.com:443

端口的使用规则

  1. 0-1023端口是系统用的,我们一般使用1024以后的端口

    1. 比如http-server默认使用8080端口
    2. 可以通过-p参数指定不同端口,例如:这样就可以指定使用1234端口
      1. hs . -c-1 -p 1234
  2. 一共有65535个端口

  3. 总而言之,IP和端口缺一不可

路径

同一服务器(网站)上的不同网页

查询参数

同一个页面内,查看不同内容

  • 如何?

锚点

同一界面内容,查看不同位置的内容,常用于目录文档

锚点看似中文,但实际不支持中文,会把中文进行编码
【锚点不会经过服务器,因为是本地内容,只在浏览器显示,所以服务器不会阅读 # 之后的内容,不可以拿这个传参数】

如何?
HTML标签中设置id选择器,并在被锚对象添加调用id选择器


HTTP请求和响应

http请求

规格:(三部分:请求行、请求头、请求体)
请求行:
请求方式 路径加查询参数 协议名/版本
请求头:
HOST:域名或IP
Accept:text/html
Content-Type:请求体的格式
回车
请求体:
(上传的内容即任意文件)

注意:
GET请求中,请求体一般为空
http大小写不敏感,但JS大小写敏感
请求头中想设置什么键值对都行
image.png
image.png

http响应

规格:(三部分:状态行、响应头、响应体)
状态行:
协议名/版本 状态码 状态字
响应头:
Content-Type:响应体的格式
回车
响应体:
(响应的内容)

curl命令发送HTTP请求

作用与Chrome发送HTTP请求类似
image.png
示例:
eg. curl -v http://www.baidu.com
整个过程:

  • 向DNS查询域名对应的IP地址
  • 建立TCP连接,TCP连接建立好之后,开始发送HTTP请求
  • 下图中以大于号开始的
    • GET / HTTP/1.1到 > Accept: /是请求头

image.png

  • 之后服务器会发送回来一个以小于号开头<的 响应
    • 分为响应头和响应体
    • 以下内容是响应头

image.png

  1. - 响应体就是HTML页面
  • 响应结束后,关闭TCP连接
    • HTTP请求结束
    • HTTP是什么
  • 规定请求的格式是什么、响应的格式是什么

用Node.js读取请求返回响应

image.png