http

Posted wqbin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http相关的知识,希望对你有一定的参考价值。

 

10-URI的基本格式以及与URL的区别

 HTTP连接的常见流程

 

技术图片

 从TCP编程上看HTTP请求处理

 

技术图片

 

 

 长连接与短连接

技术图片

 

 Connection仅针对当前连接有效

技术图片

代理服务器对长连接的支持

 技术图片

 

 

 

16-HTTP消息在服务器端的路由

  • Host=uri-host[":"port]

为什么引入host头部?ip地址相对较少,域名相对较多。一个ip地址可能对应着多个域名。

Host 是 HTTP 1.1 协议中新增的一个请求头,主要用来实现虚拟主机技术,不传递Host头部则返回400错误响应码。

有一台 ip 地址为 xxx.xxx.xxx.xxx 的服务器,在这台服务器上部署着谷歌、百度、淘宝的网站。为什么我们访问 https://www.google.com 时,看到的是 Google 的首页而不是百度或者淘宝的首页?

原因就是 Host 请求头决定着访问哪个虚拟主机。

虚拟主机(virtual hosting)即共享主机(shared web hosting),可以利用虚拟技术把一台完整的服务器分成若干个主机,因此可以在单一主机上运行多个网站或服务。

为防止陈旧的代理服务器,发向正向代理的请求 request-target 必须以absolute-form形式出现

  • request-line=method SP request-target SP HTTP-version CRLF
  • absolute-form=absolute-URI
    • absolute-URI=scheme ":"hier-part["?"query]

规范与实现间是有差距的

https://tools.ietf.org/html/rfc7230#section-5.4

 A client MUST send a Host header field in all HTTP/1.1 request messages

A server MUST respond with a 400 (Bad Request) status code to any
HTTP/1.1 request message

  • that lacks a Host header field 
  • to any request message that contains more than one Host header field 
  • a Host header field with an invalid field-value.

 

Host 头部与消息的路由(nginx为例)

1.建立TCP连接
  ·确定服务器的IP地址
2.接收请求
3.寻找虚拟主机
  ·匹配Host头部与域名
4.寻找URI的处理代码
  ·匹配 URI
5.执行处理请求的代码
  ·访问资源
6.生成HTTP响应
  ·各中间件基于PF架构串行修改响应
7.发送HTTP响应
8.记录访问日志

 

技术图片

 

 12-详解HTTP的请求行

客户端与源服务器间存在多个代理

技术图片

以上是关于http的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 报错 DioError [DioErrorType.DEFAULT]: Bad state: Insecure HTTP is not allowed by platform(代码片段

如何从一个片段导航到另一个片段?

这两个代码片段有啥区别?

超级有用的9个PHP代码片段

postman 自动生成 curl 代码片段

postman 自动生成 curl 代码片段