HTTP基础

一、TCP确保可靠性的方法:
  1、三次握手;
  2、超时重发
  3、数据确认

二、HTTP是无状态的:
  1、HTTP 协议自身不具备保存之前发送过的请求或响应的功能;
  2、目的是为了更快地处理大量事务;

三、HTTP协议通信过程:
  HTTP1.1协议支持持久连接,即在一个TCP连接上可以传送多个HTTP请求和响应,从而减少了建立和关闭连接的消耗和延时。
  简述: (1)过程建立连接;(2)发出多次请求以及接收多次响应;(3)发送关闭连接请求;(4)关闭连接;
  涉及协议:(1)HTTP协议生成对目标服务器的请求报文->(2)TCP将报文切分,可靠地传给对方->(3)IP负责寻找地址->(4)目标 服务器TCP负责接收报文段并重组->(5)对方HTTP响应请求

四、GET方法和POST方法区别:
  1、语义上,get方法是为了获取资源的请求,post方法是为了提交资源的请求(这是规范,但不是强制);
  2、get是幂等的,post不幂等,幂等意为多次操作不改变资源(这是规范,但不是强制);
  3、get参数通过url传递,post放在request body中;
  4、HTTP协议没有对GET、POST、URL长度进行限制,但由于get方法通过URL提交参数,所以其长度受URL长度限制,而URL长度与浏览器、服务器限制有关;POST长度其实与服务器服务器的处理程序的处理能力有关;

五、HTTP状态码:
  1XX Informational(信息性状态码) 接收的请求正在处理
  2XX Success(成功状态码) 请求正常处理完毕
  3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
  4XX Client Error(客户端错误状态码) 服务器无法处理请求
  5XX Server Error(服务器错误状态码) 服务器处理请求出错

六、HTTPS
  1、HTTP+加密+认证+完整性=HTTPS;
  2、在原有的HTTP协议直接与TCP通信,而HTTPS则是HTTP先与SSL通信,进行加密,再与TCP通信;

七、session和cookie的区别
  0、因为http协议是无状态的,要记住某些用户就得借助这些方法;
  1、session 在服务器端,cookie 在客户端(浏览器)

  2、session 默认被存在在服务器的一个文件里(不是内存)

  3、session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)

  4、session可以放在 文件、数据库、或内存中都可以。
  5、用户验证这种场合一般会用session;

八、断开连接的四次挥手

  四次挥手即可断开TCP连接

  1、第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接受数据。

  2、第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。

  3、第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

  4、第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

posted @ 2018-03-01 16:50  Drajun  阅读(164)  评论(0编辑  收藏  举报