HTTP协议

一、浏览器输入URL后HTTP请求返回的完整过程

HTTP协议_第1张图片
1、浏览器输入URL后,首先执行Redirect跳转。(因为浏览器可能记住了该地址永久跳转到一个新地址,
      所以浏览器首先会判断是否会Redirect,以及Redirect到哪里)
2、查找缓存,在App cache中看是否有应用缓存
3、如果没有缓存,则要通过DNS域名解析查找应用的IP地址
4、如果是HTTP协议,则要进行三次握手;如果是HTTPS协议,中间还有保证安全的传输过程;最后再创建TCP链接
5、发送请求数据包
6、服务器接收到请求进行相关运算后,返回响应结果

二、网络协议分层

HTTP协议_第2张图片
1、经典五层模型
(1)物理层主要作用是定义物理设备如何传输数据
(2)数据链路层在通信的实体间建立数据链路连接
(3)网络层为数据在节点之间传输创建逻辑链路
(4)传输层
         向用户提供可靠的端到端(End-to-End)服务
         传输层向高层屏蔽了下层数据通信的细节
(5)应用层
         为应用软件提供了很多服务
         构建于TCP协议之上
         屏蔽网络传输相关细节

三、HTTP协议发展历史
1、第一个定稿版本是HTTP/0.9
(1)只有一个命令GET
(2)没有HEADER等描述数据的信息
(3)服务器发送完毕,就关闭TCP连接
2、HTTP/1.0
(1)增加了很多命令
(2)增加status code和header
(3)多字符集支持、多部分发送、权限、缓存等
3、HTTP/1.1
(1)持久连接
(2)pipeline
(3)增加host和其它一些命令
4、HTTP2
(1)所有数据以二进制传输
(2)同一个连接里面发送多个请求不再需要按照顺序来
(3)头信息压缩以及推送等提高效率的功能

四、HTTP的三次握手

HTTP协议_第3张图片
(1)第一次握手
         首先,客户端发起一个需要创建连接的数据包请求发送到服务端,数据包中包含一个标志位叫做SYN=1,
   还有Seq=X,服务端接收到后就会知道有一个客户端需要创建连接了。
(2)第二次握手
         服务端开启一个TCP连接的Socket端口,然后返回一个数据包给客户端,这个数据包中也包含了一个
   标志位SYN=1,还有ACK=X+1,Seq=Y
(3)第三次握手
         客户端知道服务端允许创建连接后,发送ACK=Y+1,Seq=Z

五、三次握手的意义
      防止服务端开启一些无用的连接,因为网络传输是有延迟的,中间有很长的光纤或者代理服务器,客户端
进行第一次握手后,服务端就会返回允许创建连接的数据包给客户端,如果在这中间出现了网络问题导致数据
包丢失,而没有第三次握手的话,那么客户端在请求超时后,可能会重新发起建立TCP连接的请求,那么服务端
此时还不知道原来请求的客户端已经发起新的请求了,这样会造成服务端无用的开销。

六、四次挥手
(1)客户端发送FIN,Seq=X+2,ACK=Y+1,告诉服务端要关闭连接了
(2)服务端发送ACK=X+3给客户端
(3)服务端发送FIN,Seq=Y+1,这里与第二步分开发送是因为服务端要等待服务端的报文都发送完毕才能
         真正关闭连接
(4)客户端发送ACK=Y+2,告诉服务端可以关闭连接了

七、URI、URL和URN
1、URI
(1)Uniform Resource Identifier/统一资源标志符
(2)用来唯一标识互联网上的信息资源
(3)包括URL和URN
2、URL
(1)Uniform Resource Locator/统一资源定位器
3、URN
(1)永久统一资源定位符
(2)在资源移动之后还能被找到
(3)目前还没有非常成熟的使用方案

你可能感兴趣的:(HTTP)