【HTTP】03_基础

输入地址再按下回车键发生了什么

  1. 浏览器判断是否是ip地址,如果不是就进行域名解析,最后获得ip地址和服务端口号;
  2. 浏览器用TCP的三次握手和服务器建立连接;
  3. 浏览器向服务器发送拼好的报文;
  4. 服务器收到报文后处理请求,同样拼接好报文再发送给浏览器;
  5. 浏览器解析报文,渲染输出页面。

域名解析的过程

由于大家伙对IP这种东西比较难记,于是出现了域名这种东西,域名可以映射到IP。域名解析分为几部分:

  1. 先浏览器先看自己有没有缓存该域名对应的ip
  2. 如果没有,询问操作系统有没有该缓存该域名对应的ip
  3. 如果没有,询问本机域名解析文件hosts有没有缓存该域名对应的ip
  4. 如果没有,请求本地域名服务器有没有缓存该域名对应的ip
  5. 如果没有,则本地域名服务器请求根域名服务器(com),如果根域名服务器也没有,则将主域名服务器返回给本地域名服务器;
  6. 本地域名服务器发送请求询问主域名服务器(baidu.com),主域名服务器将对应的网站注册服务器发送给域名服务器;
  7. 本地域名服务器发送请求询问网站注册的域名服务器(www.baidu.com),域名服务器将ip地址返回给本地域名服务器;
  8. 本地域名服务器缓存这个域名和ip地址;
  9. 本地域名服务器将解析的结果返回给用户,用户根据TTL值缓存再本地系统缓存中,域名解析至此结束。

CDN

浏览器个服务器是HTTP协议的两个端点,这两者之间有一个重要角色CDNCDN的全称是内容分发网络。它应用了HTTP协议里的缓存和代理结束,代替源站响应客户端的请求。

CDN可以缓存源站数据,减少浏览器请求的路径。

代理

代理是HTTP协议中请求方和应答方中间的一个环节,可以转发客户端的请求,也可以转发服务端的应答。

代理分为:

  • 匿名代理:完全隐藏了被代理的机器,外界只能看到代理服务器;
  • 透明代理: 外界既知道代理,也知道客户端;
  • 正向代理:靠近客户端,代表客户端向服务端发送请求;
  • 反向代理:靠近服务端,代表服务端响应客户端的请求。

CDN就属于透明代理和反向代理。

HTTP报文格式

HTTP协议规定报文必须有header,但可以没有body,且header之后必须有一个空行。所以HTTP报文的格式是:

起始行
头部
空行
实体

请求行

GET / HTTP/1.1

方法 + 请求路径 + 协议版本号组成。

状态行(服务器响应的状态)

HTTP/1.1 200 OK

协议版本号+状态码+原因组成。

头部

HTTP协议里面有很多的头部字段,用key: value组成。(:前面不能有空格)。

HTTP1.1中,HOST字段必须出现。

常见的请求方法

目前 HTTP/1.1 规定了八种方法,单词都必须是大写的形式,主要列举几种常见的:

  • GET:请求资源;
  • HEAD:也是请求资源,不同的是只会传回响应头,即元信息,比如检查一个文件是否存在,可以使用HEAD,或者检查文件是否有最新版本,可以在HEAD返回文件的修改时间;
  • POST:创建文件;
  • PUT:更新文件;
  • DELETE:删除文件,因为这个动作危险性太大,所以通常服务器不会执行真正的删除操作,而是对资源做一个删除标记。

网址的组成

URI的全称是Uniform Resource Identifier,即统一资源标志符;URL的全称是Uniform Resource Locator,即统一资源定位符。URI是URL的超集,但是由于URL太普及,现在两者可以简单得视为相等。

URI的格式:

scheme + :// + host:port + path + ?query

方案名 + :// + 主机:端口 + 路径 + 参数

比如http://nginx.org,schemehttphostnging.org,端口号默认为80,路径默认为/(根目录)。

比如file:///D:/http_study/www/,schemefile,由于是file,所以host默认为localhost,所以路径为/D:/http_study/www/

响应状态码

状态码分为5类:

类比描述
1xx提示信息,表示目前是协议处理的中间状态,还需要后续的操作。
2xx成功,报文已经收到并被正确处理。
3xx重定向,资源位置发生变动,需要客户端重新发送请求。
4xx客户端错误,请求报文有误,服务器无法处理。
5xx服务器错误,服务器在处理请求时内部发生了错误。

常见状态码:

状态码数字描述
101Switching Protocols切换协议,比如使用了webscoket
200OK请求成功。一般用于GET与POST请求
201Created已创建。成功请求并创建了新的资源
204No Content无内容。服务器成功处理,响应头后没有 body 数据
206Partial Content部分内容。是 HTTP 分块下载或断点续传的基础。服务器成功处理了请求,但 body 里的数据不是资源的全部,而是其中的一部分。
301Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
304Not Modified它用于 If-Modified-Since 等条件请求,表示资源未修改,用于缓存控制。它不具有通常的跳转含义,但可以理解成“重定向已到缓存的文件”
400Bad Request示请求报文有错误
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)
405Method Not Allowed不允许使用某些方法操作资源
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented表示客户端请求的功能还不支持,这个错误码比 500 要“温和”一些,和“即将开业,敬请期待”的意思差不多,不过具体什么时候“开业”就不好说了。
502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

HTTP的特点

  • 简单、灵活、易扩展;
  • 应用广泛、环境成熟;
  • 无状态(可以使用cookie解决);
  • 明文;
  • 不安全(使用HTTPS);
  • 性能不算差,也不够好。

参考

透视HTTP协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值