大话HTTP协议笔记及心得

843 阅读7分钟

http是什么?

超文本传输协议(http)是一种通信协议,它允许将超文本标记语言(html)文档从web服务器传送到客户端的浏览器。它是一个应用层的面向对象的协议。

_http协议特点?_

支持客户端/服务器模式。

简单快速:只需要请求方法和路径。

灵活:允许传输任何类型的数据,由Content-Type加以标记。

无连接:每次只处理一个请求,服务器处理完请求,并收到客户应答后即断开连接。keep-alive字段可以使连接持续有效。

无状态:对于事务处理没有记忆能力,如果后续处理需要前面的信息,必须重新传。

http常见报文头有哪些?

accept:浏览器端可以接受的媒体类型。

connection:keep-alive   客户端和服务器用于传输http数据的tcp连接不会关闭。

Host:指定被请求资源的Internet主机和端口号。

User-Agent:告诉服务器,客户端使用的操作系统和浏览器的名称和版本。

http请求方法有哪些?

get:获取数据   post:添加数据     put:更新数据(不常用)

head:与get类似,但只获取报头   delete:删除     options:查询请求资源的方法

trace:回显服务器收到的请求   connect:开启一个双向通道,主要用来代理

cookie和session区别?

存放位置不同 安全性不同 有效期不同 对服务器的压力不同

长连接与短连接?

http协议是基于请求/相应模式的,只要服务端给了响应,http请求就结束了。http长连接短连接的本质是tcp的长连接和短连接。

http/1.0中默认的是短连接,每进行一次http操作就建立一次连接,结束就中断。

http/1.1通过默认长连接。

http缓存头部字段有哪些?

cache-control:缓存控制字段  no-cache:缓存  max-age=x 请求缓存后的x秒不再发起请求

Expires:响应头,http1.0的属性,比max-age优先级低

if-Modified-since:请求头,资源最新修改时间,服务器告诉浏览器,与Last-Modified比对

Last-Modified:响应头,资源最新修改时间,浏览器告诉服务器

if-None-Match:请求头,缓存资源标识,浏览器告诉服务器,与Etag进行比对

Etag:响应头,唯一资源标识,服务器告诉浏览器

http工作缓存方式是怎样的?

https加密过程以及中间人劫持是怎样的?

1.https请求 :客户端向服务端发送https请求;
2.生成公钥和私钥 :服务端收到请求之后,生成公钥和私钥。公钥相当于是锁,私钥相当于是钥匙,只有私钥才能够打开公钥锁住的内容;
3.返回公钥 :服务端将公钥(证书)返回给客户端,公钥里面包含有很多信息,比如证书的颁发机构、过期时间等等;
4.客户端验证公钥 :客户端收到公钥之后,首先会验证其是否有效,如颁发机构或者过期时间等,如果发现有问题就会抛出异常,提示证书存在问题。如果没有问题,那么就生成一个随机值,作为客户端的密钥,然后用服务端的公钥加密;
5.发送客户端密钥 :客户端用服务端的公钥加密密钥,然后发送给服务端。
6.服务端收取密钥,对称加密内容 :服务端收到经过加密的密钥,然后用私钥将其解密,得到客户端的密钥,然后服务端把要传输的内容和客户端的密钥进行对称加密,这样除非知道密钥,否则无法知道传输的内容。
7.加密传输 :服务端将经过加密的内容传输给客户端。
8.获取加密内容,解密 客户端获取加密内容后,用之前生成的密钥对其进行解密,获取到内容。

中间人截取客户端发送给服务器的请求,然后伪装成客户端与服务器进行通信;将服务器返回给客户端的内容发送给客户端,伪装成服务器与客户端进行通信。 通过这样的手段,便可以获取客户端和服务器之间通信的所有内容。 使用中间人攻击手段,必须要让客户端信任中间人的证书,如果客户端不信任,则这种攻击手段也无法发挥作用。

http和https的区别?

  • https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

http1.0和http1.1的区别?

  • 缓存处理:Etag If-None-Match
  • 带宽优化:HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分
  • 错误通知的管理,在HTTP1.1中新增了24个错误状态响应码
  • 长连接,HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

http2.0的新特性?

  • 新的二进制格式
  • 多路复用,即连接共享
  • header压缩,既避免了重复header的传输,又减小了需要传输的大小。

http和websocket的区别?

  • WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。HTTP是单向的。 
  • WebSocket是需要浏览器和服务器握手进行建立连接的。而http是浏览器发起向服务器的连接,服务器预先并不知道这个连接。
  • WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。

get和post区别?

  • 从功能上讲,GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源;
  • 从REST服务角度上说,GET是幂等的,即读取同一个资源,总是得到相同的数据,而POST不是幂等的,因为每次请求对资源的改变并不是相同的;进一步地,GET不会改变服务器上的资源,而POST会对服务器资源进行改变;
  • 从请求参数形式上看,GET请求的数据会附在URL之后,即将请求数据放置在HTTP报文的请求头中,以?分割URL和传输数据,参数之间以&相连。而POST请求会把提交的数据则放置在是HTTP请求报文的请求体中。
  • 就安全性而言,POST的安全性要比GET的安全性高,因为GET请求提交的数据将明文出现在URL上,而且POST请求参数则被包装到请求体中,相对更安全。
  • 从请求的大小看,GET请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的。

tcp和udp的区别?

  • TCP是面向连接的,UDP是无连接的;

  • TCP是可靠的,UDP是不可靠的;

  • TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式;

  • TCP是面向字节流的,UDP是面向报文的;

  • TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信;

  • TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大;