HTTP 入门

143 阅读3分钟

HTTP

HTTP为超文本传输协议(Hyper Text Transfer Protocol)

基于TCP和IP,它规定请求怎么写,回复怎么回复。

请求

  • 请求动词 路径加查询参数 协议名/版本
  • HOST 域名或IP
  • Accept:text/html
  • Content-Type:请求体的格式
  • 回车
  • 请求体(上传内容)

三部分:请求行,请求头,请求体 请求动词有GET/POST/PUT/PATCH/DELETE等 请求体在GET请求中一般为空

响应

  • 协议名/版本 状态码 状态字符串
  • Content-Type:响应体的格式
  • 回车
  • 响应体(下载内容)

image.png url会被curl重写,多了/是表示根目录,先请求DNS获得IP地址。进行TCP连接,TCP连接成功后,开始发送HTTP请求,请求内容,相应内容,相应结束后,关闭TCP连接,真正结束。

IP

IP为网际互连协议(Internet Protocol)

主要作用是

  1. 定位一台设备
  2. 封装数据报文,以跟其他设备交流

特殊的IP地址:

  1. 127.0.0.1 表示自己
  2. localhost通过hosts(路径为自己设备的C:\Windows\System32\drivers\etc)指定为自己
  3. 0.0.0.0不表示任何设备

TCP端口 port

一台机器可以提供很对服务,,每个服务一个号码,这个号码就叫端口号port

  1. 要提供HTTP服务最好使用80端口
  2. 要提供HTTPS服务最好使用443端口
  3. 要提供FTP服务最好使用21端口
  4. 一共有65535个端口

端口使用规则

  1. 0到1023号端口是留给系统使用的
  2. 你只有有了管理员权限之后,才能使用这1024个端口
  3. 其他端口可以给普通用户使用
  4. 比如http-server默认使用8080端口
  5. 如果一个端口已经被占用了,只能换一个端口

IP和端口缺一不可

域名

域名(Domain Name)是由一串字符组成的,域名指向某一个IP地址。它是对IP的别称,方便我们记住难记住的IP

  1. 一个域名可以对应多个IP,这个叫做均衡负载
  2. 一个IP可以对应不同域名,这个叫共享主机

如何将域名和IP对应起来?

DNS

DNS是(Domain Name System)的缩写,它会根据域名查出对应的IP地址,它像是一个电话本一样。DNS是将域名映射到相应IP地址的服务。可以尝试nslookup baidu.com,查看百度对应的IP

image.png com是顶级域名,baidu.com是二级域名(俗称是一级域名),www.baidu.com 是三级域名(俗称二级域名),www是主机名,对应着一种服务,baidu.com下有多个服务器,不同的服务器可以提供不同的服务。它们是父子关系。

URL组成

URL学习 简单总结

URL统一资源定位符(Uniform Resource Locator)包含协议,域名和IP,端口号,路径,查询信息和锚点。路径作用是请求不同的页面。查询信息的作用是同一页面加上查询参数展示不同内容。锚点的作用是同一页面,定位不同的内容。

注意:锚点看起来有中文,实际上不支持中文,锚点是无法在Network面板上看到的,因为锚点不会传给服务器

image.png

在浏览器中输入baidu.com,你的浏览器会向电信/联通提供的DNS服务器询问baidu.com对应什么IP,DNS服务器会回答一个IP,然后浏览器会向对应的IP地址的80/443端口发送请求,请求内容是查看baidu.com的首页。那为什么是80/443端口呢?因为服务器默认用80提供HTTP服务,默认用443提供HTTPS服务。

输入URL之后发生了什么

  • DNS 解析:将域名解析成 IP 地址
  • TCP 连接:TCP 三次握手
  • 发送 HTTP 请求
  • 服务器处理请求并返回 HTTP 报文
  • 浏览器解析渲染页面
  • 断开连接:TCP 四次挥手