13.【HTTP】什么是URL?

445 阅读5分钟

本节概数

主要涉及以下几点:

  1. potocol的含义
  2. 什么是URL?(www=url+http+html)
  3. 什么是IP?用于定位一台设备
  4. 路由器的功能?内网和外网之间的桥梁
  5. 什么是端口?
  6. 什么是域名?IP的别称
  7. 域名和IP怎么对应起来?

1.http的含义是?

hyper text transfer protocol,超文本传输协议。 李爵士发明的三样东西之一,万维网WWW=URL+HTTP+HTML

2.什么是IP?

Internet Protocal,互联网协议。主要约定两件东西:

  1. 如何定位一台设备(电脑、手机、路由器等)
  2. 如何封装数据报文,以跟其他设备交流。
    只要你在上网,便至少拥有一个独立的IP

3.如何获取外网IP和内网IP?

  1. 办一个宽带
  2. 装一个路由器
  3. 路由器获得一个外网IP,即你在互联网的地址,连上路由的手机也是这个外网IP
  4. 重启路由器,外网IP可能会改变,外网IP不是固定不变的(每个月花费5000元左右,可以得到一个固定的外网IP)
  5. 路由器会在你的家中创建一个内网,内网中的设备使用内网IP,一般来说这个内网IP的格式是192.168.xxx.xxx
  6. 路由器会给自己分配一个内网IP,一般为192.168.1.1,连接在路由器上的所有设备都有一个独特的内网IP,如192.168.1.2

4.路由器的功能

把内网的请求路由到外部,把外网的信息路由内部。

  1. 路由器有2个IP,一个外网IP(网络运营商给的),一个内网IP(自己分配给自己的)
  2. 内网和外网中的设备无法直接互相访问
  3. 内网中的设备可以互相访问,外网亦是如此
  4. 路由器是连接内、外网的唯一的通道,也被叫作网关

5.几个特殊的IP

  1. 127.0.0.1 表示自己
  2. localhost通过hosts指定为自己
    如果桌面有一个index.html网页,则以下两个地址都可以访问这个网页
127.0.0.1:8080/index.html  
localhost:8080/index.html

3.0.0.0.0不表示任何设备,前端一般用不到

6.除了IP,还需要端口port(IP和端口缺一不可)

IP用来定位一台设备,端口用来定位一台设备的服务,有了IP和端口,就可以定位一台设备提供的服务,比如百度的服务器提供的中文搜索服务
一台机器要想提供不同的服务,就需要使用不同的端口号(类比餐厅里的饮品窗口和菜品窗口):

  1. HTTP服务:80端口
  2. HTTPS服务:443端口
  3. FTP服务:21端口
  4. 一共有65535个端口
    怎么知道用什么端口号?wiki百科查询端口号的作用:
  5. 0-1023的端口系统使用,不推荐个人使用
  6. 个人使用1024-63335,比如http-server使用8080端口

7.域名

域名是对IP的别称,方便记忆
命令行ping baidu.com,可以得到百度的IP

  1. 一个域名可以对应不同的IP:负载均衡,防止同一个IP的访问量太大
  2. 一个IP可以对应不通的域名:多家公司共用一台服务器,节约成本

8.DNS:建立域名和IP的对应查询关系

域名和IP是怎么对应起来的?
DNS:Domain(域) Name System 域名系统/域名服务
当你办理宽带时,电信/联通会免费给你提供一个DNS服务器

  1. 输入一个域名,比如“taobao.com”
  2. 浏览器向电信/联通提供的DNS服务器询问,“taobao.com”对应的IP是什么
  3. 电信/联通返回一个IP,浏览器获取它
  4. 浏览器向这个IP的80/443端口发送请求
  5. 请求的目的是查看“taobao.com”的首页

9.域名的级

www前缀一般不为程序员使用

  1. com是顶级域名
  2. baidu.com是二级域名(俗称一级域名)
  3. www.baidu.com是三级域名(俗称二级域名)
  4. unizhoulu.github.io是github.io的子域名,它们是不同的两个域名
  5. github.io将子域名userid.github.io免费提供给用户使用
  6. www.xxx.com和xxx.com有可能是不同的网站
  7. www是多余的

10.URL(统一资源定位符)

URL:Uniform Resource Locator

举例:www.baidu.com/s?wd=hello&…

  1. https 协议
  2. www.baidu.com 域名
  3. /s 路径
  4. wd=hello&rsv_spt=1 查询参数
  5. #5 锚点
  6. https默认端口 443

如何在同一台服务器上请求到不同的页面?

请求不同的路径

https://juejin.cn/pins
https://juejin.cn/topics

如何在同一个页面请求到不同的内容?

使用查询参数

https://baidu.com/?wd=chinese
https://baidu.com/?wd=japan

同一个页面,同一个查询参数,如何查看不同的内容?

使用锚点

  1. 锚点不支持中文
  2. 锚点无法在network面板看到
  3. 锚点不会传给服务器

11.curl命令

curl命令可以发http请求
curl -v http://baidu.com
1.url会被curl工具重写,先请求DNS获得IP
2.先进行TCP连接,连接成功后,开始发送HTTP请求

12.请求与响应模型

1.可以把服务器理解为一台没有显示器的电脑,即主机。
2.服务器可以开多个端口,且有IP。
3.前端工程师的代码一般运行在客户端(多为浏览器),后端工程师的代码一般运行在服务端。

客户端如何发送请求?

方法一:chrome地址栏输入网址
方法二:curl -v https://www.baidu.com
一些概念
1.用户代理(User Agent):帮用户发送请求的工具,比如chrome、curl等