程序员我爱编程

关于http知识梳理

2018-04-09  本文已影响0人  kakarotto

一次完整的HTTP请求是怎样的一个过程?

当我们在浏览器的地址栏输入jianshu.com,然后回车,这一瞬间到底发生了什么?

TCP为什么需要三次握手?

2台计算机通信是靠协议来实现的,目前流行的是TPC/IP协议,如果两台计算机使用的协议不一样,那是不能进行通信的,所以这个三次握手就相当于试探一下对方是否遵循TCP/IP协议,协商完成后就可以进行通信了,这只是简单理解下,其实过程中要复杂些。

HTTP和HTTPS的区别:

HTTP的URL是以http开头,而HTTPS是https开头;
HTTP是不安全的,HTTPS是安全的(相对);
HTTP标准端口是80,HTTPS是443;
在OSI网络模型中,HTTP工作于应用层,HTTPS的安全传输机制工作在传输层;
HTTP无法加密,HTTPS对传输的数据进行加密;
HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书;

什么是Http协议无状态协议?怎么解决Http协议无状态协议?

无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息
也就是说,当客户端一次HTTP请求完成以后,客户端再发送一次HTTP请求,HTTP并不知道当前客户端是一个”老用户“。

可以使用Cookie来解决无状态的问题,Cookie就相当于一个通行证,第一次访问的时候给客户端发送一个Cookie,当客户端再次来的时候,拿着Cookie(通行证),那么服务器就知道这个是”老用户“。

常用的会话跟踪技术Cookie和Session

HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了.

查看某个网站颁发的Cookie很简单。在浏览器地址栏输入javascript:alert (document. cookie)就可以了(需要有网才能查看)。JavaScript脚本会弹出一个对话框显示本网站颁发的所有Cookie的内容

所以,总结一下:

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

常见的HTTP相应状态码

HTTP优化方案

我下面就简要概括一下:

HTTP三次握手四次挥手

三次握手与四次挥手分别对应TCP连接建立过程与断开过程


屏幕快照 2018-04-09 下午11.38.34.png

问题1: 为什么要三次握手?

答:三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收机能正常。

    第一次握手:Client什么都不能确认;Server确认了对方发送正常

    第二次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:自己接收正常,对方发送正常

    第三次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:自己发送、接收正常,对方发送接收正常

所以三次握手就能确认双发收发功能都正常,缺一不可。

问题2:为什么要发送特定的数据包,随便发不行吗?

答:三次握手的另外一个目的就是确认双方都支持TCP,告知对方用TCP传输。

    第一次握手:Server 猜测Client可能要建立TCP请求,但不确定,因为也可能是Client乱发了一个数据包给自己

    第二次握手:通过ack=J+1,Client知道Server是支持TCP的,且理解了自己要建立TCP连接的意图

    第三次握手:通过ack=K+1,Server知道Client是支持TCP的,且确实是要建立TCP连接

问题3:上图中的SYN和ACK是什么?

答:SYN是标志位,SYN=1表示请求连接;

    ACK其实就是ack后面加上的那个数,真正发送的时候不单独发ACK,只发ack,下面四次挥手的图同理
屏幕快照 2018-04-09 下午11.43.09.png

问题1: 为什么要四次挥手?

答:根本原因是,一方发送FIN只表示自己发完了所有要发的数据,但还允许对方继续把没发完的数据发过来。

举个例子:A和B打电话,通话即将结束后,A说“我没啥要说的了”,B回答“我知道了”,但是B可能还会有要说的话,A不能要求B跟着自己的节奏结束通话,于是B可能又巴拉巴拉说了一通,最后B说“我说完了”,A回答“知道了”,这样通话才算结束。

问题2:为什么双方要发送这样的数据包?

答:和握手的情况类似,只是为了让对方知晓自己理解了对方的意图。

上一篇 下一篇

猜你喜欢

热点阅读