全面了解HTTP和HTTPS

一、网络层结构

1、OSI七层模型和TCP/IP四层模型

网络结构有两种主流的分层方式:OSI七层模型和TCP/IP四层模型。

OSI是指Open System Interconnect,意为开放式系统互联。

TCP/IP是指传输控制协议/网间协议,是目前世界上应用最广的协议。

特点:  1.   OSI模型每层都有自己的功能集;

           2.  层与层之间相互独立又相互依靠;

           3.  上层依赖于下层,下层为上层提供服务。

2、两种模型的区别

1.  TCP/IP支持跨层封装;OSI不支持 

2.  TCP/IP仅仅支持IP网络协议;  OSI支持多种网络层协议(IP    IPX    APPLE  TALK    NOVELL   NSAP)

二、Http协议

1、http的历史版本比较

1、1991年发布Http/0.9版本,只有Get命令,且服务端直返HTML格式字符串,服务器响应完毕就关闭TCP连接。

2、1996年发布Http/1.0版本

优点:可以发送任何格式内容,包括文字、图像、视频、二进制。也丰富了命令Get,Post,Head。请求和响应的格式加入头信息。

缺点:每个TCP连接只能发送一个请求,而新建TCP连接的成本很高,导致Http/1.0新能很差。

3、1997发布Http/1.1版本,完善了Http协议,直至20年后的今天仍是最流行的版本。

优点a. 引入持久连接,TCP默认不关闭,可被多个请求复用,对于一个域名,多数浏览器允许同时建立6个持久连接。

b. 引入管道机制,即在同一个TCP连接中,可以同时发送多个请求,不过服务器还是按顺序响应。

c. 在头部加入Content-Length字段,一个TCP可以同时传送多个响应,所以就需要该字段来区分哪些内容属于哪个响应。

d. 分块传输编码,对于耗时的动态操作,用流模式取代缓存模式,即产生一块数据,就发送一块数据。

e. 增加了许多命令,头信息增加Host来指定服务器域名,可以访问一台服务器上的不同网站。

缺点:TCP连接中的响应有顺序,服务器处理完一个回应才能处理下一个回应,如果某个回应特别慢,后面的请求就会排队等着(对头堵塞)。

4、2015年发布Http/2版本,它有几个特性:二进制协议、多工、数据流、头信息压缩、服务器推送。

 

2.http请求格式

HTTP请求报文由3部分组成(请求行+请求头+请求体)

①是请求方法,HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE,最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。
②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL
③是协议名称及版本号。
④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
⑤是报文体,它将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1&param2=value2”的方式传递请求参数。

1-3 请求行

  请求地址:访问服务器的哪个目录。

4-请求头 

(1)

  • Host:指定服务器域名,可用来区分访问一个服务器上的不同服务

  • Connection:keep-alive表示要求服务器不要关闭TCP连接,close表示明确要求关闭连接,默认值是keep-alive

  • Accept-Encoding:说明自己可以接收的压缩方式

  • Accept-Language:可以接受的语言
  • User-Agent:用户代理,是服务器能识别客户端的操作系统(Android、IOS、WEB)及相关的信息。作用是帮助服务器区分客户端,并且针对不同客户端让用户看到不同数据,做不同操作。

  • Content-Type:服务器告诉客户端数据的格式,常见的值有text/plain,image/jpeg,image/png,video/mp4,application/json,application/zip。这些数据类型总称为MIME TYPE。

  • Content-Length: 请求体长度
  • User-Agent : 浏览器信息
  • cookie :

(2)请求空行分析: 就是一个分隔符,用来区分请求头和请求体的;

5-请求体

只有POST请求才有请求体, 因此 POST请求 请求体中存放的是表单提交的键值对。
例如:name=’zs’&age=10

 

3.http响应格式

HTTP的响应报文也由三部分组成(响应行+响应头+响应体):

 

 

响应行

响应码分五种类型,由它们的第一位数字表示: 
1xx:信息,请求收到,继续处理 
2xx:成功,行为被成功地接受、理解和采纳 
3xx:重定向,为了完成请求,必须进一步执行的动作 
4xx:客户端错误,请求包含语法错误或者请求无法实现 
5xx:服务器错误,服务器不能实现一种明显无效的请求 
下表显示每个响应码及其含义: 
100 继续101 分组交换协

200 OK201 被创建202 被采纳203 非授权信息204 无内容205 重置内容206 部分内容

300 多选项301 永久地传送302 找到303 参见其他304 未改动305 使用代理307 暂时重定向

400 错误请求401 未授权402 要求付费403 禁止404 未找到405 不允许的方法406 不被采纳407 要求代理授权408 请求超时409 冲突

  410 过期的411 要求的长度412 前提不成立413 请求实例太大414 请求URI太大415 不支持的媒体类型416 无法满足的请求范围417 失败的预期

500 内部服务器错误501 未被使用502 网关错误503 不可用的服务504 网关超时505 HTTP版本未被支持 

响应头

Content-Encoding:服务器数据压缩方式

Transfer-Encoding:chunked表示采用分块传输编码,有该字段则无需使用Content-Length字段。

Content-Length:声明数据的长度,请求和回应头部都可以使用该字段。

 

原文地址:https://www.cnblogs.com/yuanfang0903/p/11280891.html