应用层

http协议

http请求报文

第一部分:请求行,用来说明请求类型(POST),要访问的资源以及所使用的 HTTP 版本。
第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息(Content-Type,字符集等等)。
第三部分:空行,请求头部后面的空行是必须的。
第四部分:请求数据也叫主体,可以添加任意的其他数据。
计算机网络相关知识整理(五)

http响应报文

第一部分:状态行,由 HTTP 协议版本号,状态码,状态消息三部分组成。
第二部分:消息报头,用来说明客户端要使用的一些附加信息。
第三部分:空行,消息报头后面的空行是必须的。
第四部分:响应正文,服务器返回给客户端的文本信息。
计算机网络相关知识整理(五)

http状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
1xx:指示信息--表示请求已接收,继续处理(某个操作的第一步,需配合第二步);
2xx:成功--表示请求已被成功接收、理解、接受(第二步);
3xx:重定向--要完成请求必须进行更进一步的操作;
4xx:客户端错误--请求有语法错误或请求无法实现;
5xx:服务器端错误--服务器未能实现合法的请求。

post和get、Head

1GET 交互方式是从服务器上获取数据,而并非修改数据,所以 GET 交互方式是安全的。
2POST 交互是可以修改服务器数据的一种方式,涉及到信息的修改,就会有安全问题。
 
区别:
get 参数通过 url 传递,post 放在 request body 中。
get 请求在 url 中传递的参数是有长度限制的,而 post 没有。
get 比 post 更不安全,因为参数直接暴露在 url 中,所以不能用来传递敏感信息。
 
1:get 请求只能进行 url 编码,而 post 支持多种编码方式;
2get 请求会浏览器主动 cache,而 post 支持多种编码方式。
3:get 请求参数会被完整保留在浏览历史记录里,而 post 中的参数不会被保留。
 
 GET POST 本质上就是 TCP 链接,并无差别。但是由于 HTTP 的规定和浏览/服务器的限制,导致他们在应用过程中体现出一些不同。
GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包。
 
对于 GET 方式的请求,浏览器会把 http header data 一并发送出去,服务器响应200(返回数据);
而对于 POST,浏览器先发送 header,服务器响应 100 continue,浏览器再发送data,服务器响应 200 ok(返回数据)。

http1.0 http1.1 和http2.0

HTTP 1.0 需要使用 keep-alive 参数来告知服务器端要建立一个长连接,而 HTTP1.1 默认支持长连接。

 HTTP 1.1 支持只发送 header 信息(不带任何 body 信息),如果服务器认为客户端有权限请求服务器,则返回 100,否则返回 401。客户端如果接受到 100,才开始把请求 body发送到服务器。
 这样当服务器返回 401 的时候,客户端就可以不用发送请求 body 了,节约了带宽。另外 HTTP 还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只需要跟服务器请求另外的部分资源即可。这是支持文件断点续传的基础。 

在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。

 HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。此外,服务器应该接受以绝对路径标记的资源请求。

多路复用

HTTP2.0 使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比 HTTP1.1 大了好几个数量级。

数据压缩

HTTP1.1 不支持 header 数据的压缩,HTTP2.0 使用 HPACK 算法对 header 的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

服务器推送

当我们对支持 HTTP2.0 web server 请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种 方式非常合适加载静态资源。

https

安全套接字层超文本传输协议 HTTPS,为了数据传输的安全,HTTPS HTTP 的基础上加入了 SSL 协议,SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS HTTP 的区别主要如下:
1HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用。
2HTTP 是超文本传输协议,信息是明文传输HTTPS 则是具有安全性的 SSL 加密传输协议。
3HTTP HTTPS 使用的是完全不同的连接方式,用的端口不一样,前者是 80,后者是 443

session和cookie

Cookie 通过在客户端记录信息确定用户身份,Session 通过在服务器端记录信息确定用户身份。
Cookie:
Cookie 实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用 response 向客 户端浏览器颁发一个 Cookie。客户端浏览器会把 Cookie 保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该 Cookie 一同提交给服务器。 服务器检查该 Cookie,以此来辨认用户状态。服务器还可以根据需要修改 Cookie 的内容。
Session
Session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而Session 保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是 Session。客户端浏览器再次访问时只需要从该 Session 中查找该客户的状态就可以了。
 
如果说 Cookie 机制是通过检查客户身上的通行证来确定客户身份的话,那么 Session机制就是通过检查服务器上的客户明细表来确认客户身份。Session 相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

 

 

相关文章:

  • 2021-08-09
  • 2021-10-11
  • 2022-01-06
  • 2022-01-08
  • 2021-08-02
猜你喜欢
  • 2021-05-07
  • 2021-05-30
  • 2022-01-13
  • 2021-10-22
  • 2021-09-16
  • 2021-09-03
相关资源
相似解决方案