应用层的HTTP和HTTPS
HTTP
Web 的应用层协议是超文本传输协议(HyperText Transfer Protocol,HTTP),它是Web的核心 。HTTP协议由两部分程序实现:一个客户机程序和一个服务器程序,他们运行在不同的端系统中,通过交换HTTP报文进行会话,HTTP定义了这些报文的格式以及客户机和服务器是如何进行报文交换的。HTTP使用TCP作为它的支撑运输层协议,一旦客户机发送了一个请求报文,该报文就“脱离客户机控制”并“进入TCP控制”。
客户机/服务器的交互运行于TCP协议之上时,如果每个请求/响应是经一个单独的TCP连接发送,该应用程序被称为使用非持久连接,如果所有的请求和响应经由相同的TCP连接发送,该应用程序被称为使用持久连接;
(1)非持久连接
每次从服务器发送一个对象到应用程序的时候,断开TCP连接,再次传输的时候再次建立连接。
每次传输的时候可以设置浏览器控制并行度,如果并行度设为1,则为串行。
一个小分组从客户机到服务器再回到客户机所花费的时间称为往返时间RTT,粗略的讲总的响应时间就是两个RTT加上服务器传输HTML文件的时间。
(2)持久连接
必须为每一个请求的对象建立和维护一个全新的连接,并且对每个这样的连接,在客户机和服务器都要分配TCP的缓冲区和变量。
HTTP默认使用了流水线方式的持久连接。
服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息,所以说HTTP是一个无状态协议。但同时也带来了一些不便,比如,用户登录到一家购物网站,即使他跳转到该网站的其他页面,也需要能继续保持登录状态,为了实现期望的保持状态功能,于是就引入了Cookie技术。(Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie,当客户端下次再往服务器端发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。服务器端发现客户端发送过来的Cookie后,会去检和比对服务器上的记录,最后得到之前的状态信息。)
Cookie技术:
组成部分:
1.在HTTP响应报文中有一个首部行
2.在HTTP请求报文中有一个cookie首部行
3.在用户端系统中保留有一个cookie文件,由用户的浏览器管理
4.在web站点有一个后端数据库
HTTP报文格式:
1.HTTP请求报文
下面是一个典型的HTTP请求报文:
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection:close
User-agent:Mozilla/4.0
Accept-language:fr
第一行为请求行,包含方法字段(GET,POST,HEAD,PUT,DELETE),URL字段,HTTP协议版本字段
其余行为手首部行,第二行定义目标所在的主机
第三行定义了是否使用是否使用持久连接,要求发送完对象立即关闭连接
第四行定义了向服务器发送请求的浏览器类型
第五行定义了那种语法版本
方法字段解释:GET从服务器请求资源,HEAD只发送请求但是不会返回请求的对象,DELETE删除,PUT也用于应用程序向服务器上传对象
2.HTTP响应报文
HTTP/1.1 200 OK
Connection:close
Date:Thu,03 Jul 2003 12:00:15 GMT
Server:Apache/1.3.0(Unix)
Last-Modified:Sun,6 May 2007 09:23:24
Content-Length:6821
Content-Type:text/html
(data data data data...........)
第一行为状态行,其余为首部行,然后是实体主体,状态行指示服务器使用的协议是HTTP1.1,服务器状态码为200,状态为OK
第二行为告诉报文发送后关闭了该TCP连接
第三行服务器产生并发送该响应报文的日期和时间,不是对象创建或者最后修改的时间,而是服务器查到这个对象并发送相应报文的时间
第四行为使用的web服务器信息
第五行为对象创建和最后修改的时间
第六行为发送对象的字节数
第七行为指示实体主体的对象是HTML文本
HTTP中GET和POST请求的区别
一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。
HTTP定义了与服务器交互的不同方法,其中最基本的四种:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被称为安全方法,因为使用GET和HEAD的HTTP请求不会产生什么动作。不会产生动作意味着GET和HEAD的HTTP请求不会在服务器上产生任何结果。但是安全方法并不是什么动作都不产生,这里的安全方法仅仅指不会修改信息。
根据HTTP规范,POST可能会修改服务器上的资源的请求。比如CSDN的博客,用户提交一篇文章或者一个读者提交评论是通过POST请求来实现的,因为再提交文章或者评论提交后资源(即某个页面)不同了,或者说资源被修改了,这些便是“不安全方法”。
GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。
因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。
Web缓存
Web缓存器也叫代理服务器,它是能够代表初始Web服务器来满足HTTP请求的网络实体。Web缓存器有自己的磁盘存储空间,并在该存储空间中保存最近请求过的对象的拷贝。Web缓存器可以大大减少对客户机请求的响应时间,可以大大减少一个机构内部与因特网接入链路的通信量;
条件GET方法允许缓存器证实它的对象是最新的,方法GET方法有两个组成条件
1.请求报文中使用GET方法;
2.请求报文包含一个If-modified-since:首部行
HTTPS
HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
(1)HTTPS的工作原理
客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
Web服务器利用自己的私钥解密出会话密钥。
Web服务器利用会话密钥加密与客户端之间的通信。
(2)HTTPS协议的主要作用:
建立一个信息安全通道,来保证数据传输的安全, 确认网站的真实性。
HTTP与HTTPS的区别
1. https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4. http的连接很简单,是无状态的;HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
应用层的HTTP和HTTPS相关推荐
- 计算机网络(3)--应用层协议--HTTP与HTTPS
一.HTTP HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP/IP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则.HTTP ...
- 应用层的HTTP和HTTPS协议
文章目录 一.HTTP是什么? 1. 认识URL 1.1 UrlEncode和UrlDecode 二.HTTP协议 1.基本特征 1.1 无连接 1.2 无状态 1.3 简单快速 2. HTTP构成 ...
- HTTP协议和HTTPS协议初探
概况 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程. HTTP是 ...
- socket/WebSocket/WebService/http/https概念
学习了这么久的java技术, 但是这5个 socket/WebSocket/WebService/http/https 概念还不是很清楚, 总是很模糊,或者是弄混. 惭愧! ! 学习之前, 要对这个 ...
- HTTP与HTTPS,HTTPS更加安全。
什么是HTTP HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议.HTTP是采用明文形式进行数据传输, ...
- https是什么_http与https的区别
https是什么? > https叫做超文本传输安全协议,比http多了安全两个字,他是在http的基础上加入SSL/TLS来进行数据加密,保护交互的数据不会被恶意窃取或者泄露: http与h ...
- 什么是https?http和https之间区别是什么?
什么是https? HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息 ...
- 【web】HTTP(s)协议详解(重点:HTTPS 的加密过程浏览器中输入网址后,发生了什么?)
[大家好,我是爱干饭的猿,本文介绍应用层HTTP协议.HTTPS协议.当你在浏览器中输入网址后,到底发生了什么事情?HTTPS 如何进行的加密?对称加密.非对称加密.CA证书又是什么? 后续会继续分享 ...
- TCP/IP 协议族 简介(应用层,传输层,网络层,链路层)
互联网协议(Internet Protocol Suite [swi:t])是一个 网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构.它常被通称为TCP/IP 协议族(TCP/IP P ...
最新文章
- idea批量修改变量快捷键mac_使用Mac自带功能批量修改图片名称、类型和压缩图片大小...
- 注意了,又有企业因BTC费用高转向BCH
- mysql 分组排序_MySQL如何实现Excel分组排序功能?
- TI-BLE协议栈的GATT
- 提高sql性能的方法
- 深入理解Python生成器(Generator)
- 正确地启动hadoop
- 李洋疯狂C语言之冒泡排序法
- linux net 伪指令码,1.2.2. ldr pWTCON
- oracle inside(4)
- clion连接mysql,使用 CLion 调试 mysql 源码
- kettle 使用教程(入门)
- 读书笔记|《金字塔原理》第三章
- python爬虫-抓取内涵吧内涵段子
- 2020年中级数据库系统工程师考试笔记7—关系数据库1
- 什么是元学习 (Meta Learning)
- JQ设置cookie(3分钟搞定)
- 上传文件到服务器指令,上传文件到远程服务器的命令
- 开发游戏需要什么知识
- ACM-ICPC 2018 南京赛区网络预赛丨AC Challenge丨状压DP