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,至此,完成四次挥手。