HTTP/HTTPs要点
Http(超文本传输协议)是一个属于应用层的面向对象的协议。
HTTP结构
- HTTP请求:
- 请求行:Method-Request URI HTTP-Version(CRLF),eg:GET /form.html HTTP/1.1(CRLF);
- 请求报头
- 请求正文
- HTTP响应
- 状态行:HTTP-Version Status-Code Reason-Phrase(CRLF),eg: HTTP/1.1 200 OK(CRLF);
- 响应报头
- 响应正文
- 其中,报头(可选)由若干个报头域组成,每个报头域格式:“Name: Value(CRLF)”。
- HTTP请求:
主要特点:
(1)支持客户/服务器模式。
(2)简单快速: 客户向服务器请求服务时, 只需传送请求方法和路径。 请求方法常用的有GET、 HEAD、POST。 每种方法规定了客户与服务器联系的类型不同。 由于HTTP协议简单, 使得HTTP服务器的程序规模小,因而通信速度很快。
(3)灵活: HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
(4)无连接: 无连接的含义是限制每次连接只处理一个请求。 服务器处理完客户的请求, 并收到客户的
应答后,即断开连接。采用这种方式可以节省传输时间。
(5)无状态: HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面, 在服务器不需要先前信息时它的应答就较快
缺点
(1)通信使用明文(不加密),内容可能会被窃听
(2)不验证通信方的身份,因此有可能遭遇伪装
(3)无法证明报文的完整性,所以有可能已遭篡改
Https=Http+加密+认证+完整性保护
请求方法
GET 请求获取Request-URI 所标识的资源
POST 在Request-URI 所标识的资源后附加新的数据
HEAD 请求获取由Request-URI 所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI 作为其标识
DELETE 请求服务器删除Request-URI 所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
OPTIONS 请求查询服务器的性能
CONNECT 保留将来使用
状态代码
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误
5xx:服务器端错误
常见代码:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在, eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后,可能恢复正常
HTTP的长连接与短连接
- 本质上是TCP的长连接与短连接
HTTP/1.0默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
- HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入报头域:Connection:keep-alive。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
- 短连接
- 优点:管理简单,存在的连接都是有用的连接,不需要额外的控制手段;
- 缺点:如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。
- 长连接
- 优点:省去较多的TCP建立和关闭的操作,减少浪费,节约时间。
- 缺点:Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候
- 可采取的策略:(1)关闭长时间没有读写事件的连接;(2)限制每个客户端的最大长连接数。
CGI(Common Gateway Interface)通用网关接口
- 作用:服务动态内容。执行动态内容,将其返回值送回客户端。
- 判断是否动态内容:服务器常常将所有动态内容放在一个固定的文件夹下,通过判断URI的路径来识别是否需要服务动态内容。
- CGI的输入输出
- 服务器子线程通过环境变量将请求参数传送给CGI程序
- 通过将stdin和stdout重定向至已连接描述符实现CGI对客户端的直接通信。
HTTP1.1与HTTP1.0区别
- 默认长连接;
- 新增24个状态响应码,HTTP1.0只有16个;
- 可拓展性:如果HTTP的某个实现接收到了自身未定义的头域,将自动忽略它;
- 带宽优化。
HTTP/HTTPs要点的更多相关文章
- Https要点
http和https的区别 1.https协议需要到ca申请证书 2.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议 3.http和https使用的是完全不同 ...
- 推荐Linux管理员不可不知十大PHP安全要点 - SCutePHP
PHP是使用最广泛的脚本编程语言之一.市场份额颇能说明其主导地位.PHP 7已推出,这个事实让这种编程语言对当前的开发人员来说更具吸引力.尽管出现了一些变化,但是许多开发人员对PHP的未来持怀疑态度. ...
- 一次部署HTTPS的相关事件引发的思考
前言: 上周五快要下班的时候,突然收到通知客户希望了解一下部署HTTPS的流程,这种事情谁听了都会有几分诧异的.因为这件事虽然和工作有一定的相关度,但平时不会走这个方向,实际上也较少接触.此外,客户手 ...
- Linux运维入门到高级全套常用要点
Linux运维入门到高级全套常用要点 目 录 1. Linux 入门篇................................................................. ...
- 【C#】第2章学习要点
分类:C#.VS2015 创建日期:2016-06-15 教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.本章要点 C#数据类型分两大类:值类型.引用类型. 值类型 ...
- https加密解密过程详解
要点: https协议对传输内容进行加密,具有更强的安全性,防止被抓包后解析出请求内容. https是建立在ssl之上的http协议. 服务器支持https协议必须安装一套数字证书,所谓数字证书就是一 ...
- Android响应式界面开发要点
现在很多项目需要到达同一个Apk既可以在Phone上跑也尅在tablet上跑,即界面要适应不同尺寸和类型的需要而自动调整.这个即为响应式设计.在web开发商响应式设计已经是个常谈的内容了,而对于and ...
- kafka技术要点
转载:http://blog.csdn.net/caisini_vc/article/details/48007297 Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为 ...
- Java 编程要点之并发(Concurrency)详解
计算机用户想当然地认为他们的系统在一个时间可以做多件事.他们认为,他们可以工作在一个字处理器,而其他应用程序在下载文件,管理打印队列和音频流.即使是单一的应用程序通常也是被期望在一个时间来做多件事.例 ...
随机推荐
- 简约而不简单:网站着陆页的设计(Landing Page Design)
着陆页是一个在线营销的概念,是指当访客点击一个搜索引擎优化的搜索结果进入的第一个页面或“着陆”页面.这是一个重要的页面,它和提供的产品或服务的广告有点类似,提供了与产品相关的精确的信息,告诉客户可以购 ...
- [git]fork+pull提交模式
fork+pull提交模式 在公司项目中,大多都是通过"主题分支"的方式,进行开发与合并代码.但是,这样又一个弊端就是:合并代码后需要删除分支.同时,如果是开源的项目的话,非项目中 ...
- UWP开发入门(十八)——使用ContentControl减少页面元素数量
我们今天学习一下ContentControl,主要介绍如何使用ContentControl搭配DataTemplate来进行界面的复用,以及通过ContentTemplateSelector进一步减少 ...
- [C#高级编程]基础知识摘要一
核心C#: 值类型存储在堆栈中,而引用类型存储在托管堆上. object类型可以用于两个目的: 可以使用object引用绑定任何子类型的对象 object类型执行许多一般用途的基本方法,包括Equal ...
- [ShortCut] Visual Studio快捷键
msdn官方快捷键说明:https://msdn.microsoft.com/zh-cn/library/da5kh0wa.aspx 测试工具: visual studio 2013 操作步骤: 1. ...
- Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面)
Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选 ...
- 循序渐进开发WinForm项目(4)--Winform界面模块的集成使用
随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...
- 比较body.onload(function())、$(document).ready(function())与$(windows).load(function)
原理对比: body.onload(function())是优先将document的DOM渲染,即将页面所有的元素(包括html标签以及所引用到的图片,flash媒体等媒体文件)加载完成,然后再执行页 ...
- 自己通过Cygwin编译的windows下的redis3.2.6
采用方法:https://my.oschina.net/maxid/blog/186506 方法中在3.2.6未找到src/redis.h文件 未修改 方法中 /deps/hiredis/net.c ...
- WPF 程序自删除(自毁)|卸载程序删除
一般是在MainWindow_Closed 事件中调用批处理命令删除. 在借鉴别人的想法的基础上的算是改进. 自删除步骤: 1.删除文件 2.删除存放文件夹. 实现代码: private static ...