http协议各个版本的区别

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
http:是应用层,基于TCP/IP(即传输层和网络层)

HTTP版本的演进:
1、HTTP/0.9 – 单行协议:HTTP/0.9 极其简单:请求由单行指令构成,以唯一可用方法GET开头,其后跟目标资源的路径(一旦连接到服务器,协议、服务器、端口号这些都不是必须的)。例如:GET /mypage.html。

2、HTTP/1.0 – 构建可扩展性:
(1)协议版本信息:协议版本信息现在会随着每个请求发送(HTTP/1.0被追加到了GET行)。
(2)状态码:状态码会在响应开始时发送,使浏览器能了解请求执行成功或失败,并相应调整行为(如更新或使用本地缓存)。
(3)HTTP头:引入了HTTP头的概念,无论是对于请求还是响应,允许传输元数据,使协议变得非常灵活,更具扩展性。
(4)Content-Type:在新HTTP头的帮助下,具备了传输除纯文本HTML文件以外其他类型文档的能力(感谢Content-Type头)。
例如:
GET /mypage.html HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date: Tue, 15 Nov 1994 08:12:31 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/html
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

3、HTTP/1.1 – 标准化的协议
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
(1)持久链接,连接可以复用,节省了多次打开TCP连接加载网页文档资源的时间。
(2)增加流水线操作,允许在第一个应答被完全发送之前就发送第二个请求,以降低通信延迟。
(3)支持响应分块。
(4)引入额外的缓存控制机制。
(5)引入内容协商机制,包括语言,编码,类型等,并允许客户端和服务器之间约定以最合适的内容进行交换。
例子:
GET /en-US/docs/Glossary/Simple_header HTTP/1.1 Host: developer.mozilla.org User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header 200 OK Connection: Keep-Alive Content-Encoding: gzip Content-Type: text/html; charset=utf-8 Date: Wed, 20 Jul 2016 10:55:30 GMT Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a" Keep-Alive: timeout=5, max=1000 Last-Modified: Tue, 19 Jul 2016 00:59:33 GMT Server: Apache Transfer-Encoding: chunked Vary: Cookie, Accept-Encoding

4、HTTP 2.0
(1)多路复用 (Multiplexing):多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。
(2)二进制分帧;
(3)首部压缩(Header Compression):在客户端和服务端之间使用首部表来跟踪和存储之前发送的键值对,如果首部没有改变或只改变了少部分,就在原来的首部表里修改或者追加,首部表在HTTP2.0的链接存续期内始终存在,减少每次通讯的数据量,对性能有提升。
(4)服务端推送(Server Push):一个请求多个响应,同时客户端可以拒绝推送,将推送的数量限制为0即可,推送的时候先推送头部,如果客户端同意才会推送数据。
(5)流量控制
(6)请求优先级

HTTP content-type
Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些Asp网页点击的结果却是下载到的一个文件或一张图片的原因。

TCP三次握手四次挥手
TCP三次握手

  1. 连接开始时,连接建立方(Client)发送SYN包,幷包含了自己的初始序号a;
  2. 连接接受方(Server)收到SYN包以后会回复一个SYN包,其中包含了对上一个a包的回应信息ACK,回应的序号为下一个希望收到包的序号,即a+1,然后还包含了自己的初始序号b;
  3. 连接建立方(Client)收到回应的SYN包以后,回复一个ACK包做响应,其中包含了下一个希望收到包的序号即b+1。

TCP终止连接的四次挥手过程如下:
4. 首先进行关闭的一方(即发送第一个FIN)将执行主动关闭,而另一方(收到这个FIN)执行被动关闭。
5. 当服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
6. 同时TCP服务器还向应用程序(即丢弃服务器)传送一个文件结束符。接着这个服务器程序就关闭它的连接,导致它的TCP端发送一个FIN。
7. 客户必须发回一个确认,并将确认序号设置为收到序号加1。

为什么挥手比握手多一次?因为要等待资源传输完毕才开一断开连接

网络分层里七层模型
应用层:应用层、表示层、会话层(从上往下)( HTTP、FTP、SMTP、DNS )
传输层( TCP 和 UDP )
网络层( IP )
物理和数据链路层(以太网)
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
数据链路层:将比特组装成帧和点到点的传递(帧Frame)
网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
会话层:建立、管理和终止会话(会话协议数据单元SPDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层:允许访问OSI环境的手段(应用协议数据单元APDU)

协议
ICMP协议 : 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
TFTP协议 : 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
HTTP协议 : 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
DHCP协议 : 动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。

https:超文本传输安全协议
就是在http下加入了SSL层,这个系统是由网景公司(Netscape)研发的,https是443端口,而http是80端口
HTTP 用于安全传输节:HTTP在基本的TCP/IP协议栈上发送信息,在此基础上创建了一个额外的加密传输层:SSL 。
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

SSL协议提供的服务主要有哪些
1)认证用户和服务器,确保数据发送到正确的客户机和服务器
2)加密数据以防止数据中途被窃取
3)维护数据的完整性,确保数据在传输过程中不被改变。
SSL协议的工作流程
服务器认证阶段:
1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;
2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;
3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;
4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章