http基础知识摘录
HTTP是一个基于请求/响应模式的,无状态的协议 (只有客户端发送请求服务器才会响应,否则服务器不会主动发送信息的,无状态指客户端发过来一个请求服务端给你发回一个响应,接着你再去发送一个请求,服务器根本不知道你这个请求是第一次发来的还是第二次发来的,根本不知道上一次或者历史上都发生过什么事情,它只知道你发给我一个请求我给你一个响应。因此在一些购物系统或登录系统,需要知道用户是否登录了,那么就衍生出cookie与session来记录客户端信息)
HTTP协议基于TCP,所以必须要建立连接,类似于数据库连接
HTTP/1.0:当连接建立后,浏览器发送一个请求,服务器返回一个消息之后连接就被关闭,当浏览器下次请求的时候需要重新建立连接,很显然这种需要不断建立连接的通信方式开销比较大,早起的web页面通常只包含HTML文本,因此即使建立连接的开销比较大,也不会有太多的影响(本质发送的请求少),而现在的web页面往往包含多种资源(图片、动画、声音、js、css等)每获取一种资源,就建立一次连接,这样就增加了HTTP服务器的开销,造成了Internet上的信息阻塞。 (本质发送的请求变多,再采用一个请求一个连接的方式不合时宜了)。例如请求一个网页内含100张图片,按HTTP/1.0的方式则要建立101个连接,首先服务器会返回一个响应(即网页),然后浏览器根据内容解析发现还要发送100个请求才能得到100张图片,这就是为什么我们访问图片比较多的网页会首先显示一个网页,然后一张一张图片开始慢慢的显示出来。
HTTP/1.1给出了持续连接(Persistent Connnections)的机制,并将其作为HTTP/1.1中建立连接的缺省行为,通过这种连接,浏览器可以在建立一个连接之后,发送请求并得到响应,然后继续发送请求再次得到回应,而且客户端还可以发送流水线请求,也就是说客户端可以连续发送多个请求,而不用等待每一个响应的到来(流水线式请求效率明显比一应一答高),也就是说请求响应后连接并不是马上关闭了,还能够保持一段时间,100张图片的那个例子使用HTTP/1.1协议的话只要建立一个连接就可以了,大大提高了性能
客户端和服务器端每次建立和关闭连接都是一个相对比较费时的过程,并且会严重影响客户机和服务器的性能。
客户端通过发送HTTP请求向服务器请求对资源的访问
HTTP请求由三部分组成分别是:请求行、消息报头、请求正文
浏览器地址栏中输入地址来向服务器发送HTTP请求本质上是底层先与服务器建立连接然后发送HTTP消息罢了
HTTP请求行包含Method Request-URI HTTP-Version (CRLF)
在HTML文档中,书写get和post不区分大小写,但HTTP协议中的GET和POST只能是大写形式
HTTP响应也分三部分组成:状态行、消息报头、响应正文
HTTP响应各个状态所对应的信息:
1XX —— 指示信息,表示请求已接受,继续处理
2XX —— 成功,表示请求已经被成功接收,理解,接受
3XX —— 重定向,要完成请求必须进行更进一步的操作
4XX —— 客户端错误,请求由语法错误或请求无法实现
5XX —— 服务器端错误,服务器未能实现合法的请求
http基础知识摘录的更多相关文章
- Map/Reduce应用开发基础知识-摘录
Map/Reduce 这部分文档为用户将会面临的Map/Reduce框架中的各个环节提供了适当的细节.这应该会帮助用户更细粒度地去实现.配置和调优作业.然而,请注意每个类/接口的javadoc文档提供 ...
- CCNA基础知识摘录
cisco设备的启动要点: 1.检测硬件(保存在rom) 2.载入软件(IOS)(保存在Flash) 3.调入配置文件(密码,IP地址,路由协议都保存在此)(此文件保存在NVRAM) 0x2102:正 ...
- Quartz.NET基础知识概述
Quartz.NET是什么 由于我现在使用的Quartz.NET2.2版本,相对2.x变化不大,主要是相对于1.x更新了很多东西,如下基础知识摘录网络. Quartz.NET是一个开源的作业调度框架, ...
- Java基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- Runtime系列(一)-- 基础知识
众所周知,Objective-C 是一种运行时语言.运行时怎么来体现的呢?比如一个对象的类型确定,或者对象的方法实现的绑定都是推迟到软件的运行时才能确定的.而运行时的诸多特性都是由Runtime 来实 ...
- [源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
[源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 目录 [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 0x00 摘要 0x01 分布式并 ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
随机推荐
- 洛谷——P1560 [USACO5.2]蜗牛的旅行Snail Trails
P1560 [USACO5.2]蜗牛的旅行Snail Trails 题目描述 萨丽·斯内尔(Sally Snail,蜗牛)喜欢在N x N 的棋盘上闲逛(1 < n <= 120). 她总 ...
- connectTimeOut和readTimeout
网络编程时,经常遇到很多timeout异常,下面是java URLConnection 中经典的2种 timeout参数,这些参数设置不当的话,就会遇到timeout 异常. 1. ConnectTi ...
- iOS 合并.a文件,制作通用静态库
lipo -create SQY/iOS/iphoneos/libGamePlusAPI.a SQY/iOS/iphonesimulator/libGamePlusAPI.a - output ...
- Android电子书项目实训【项目说明】【1】
概述: 本实训项目是本科教学中,Android课程实训的项目,旨在训练Android App訪问server,获取server数据,解析,并呈现的流程.主要包括的功能有: 1.用户注冊 2.登录 3. ...
- SD卡读写之FileNotFoundException: /storage/emulated/0object.txt: open failed: ENOENT (No such file or dir
读写sd卡中的文件依照例如以下步骤:1调用Environment的getExternalStorageState()方法推断手机上是否插入了sd卡.而且应用程序具有读写SD卡的能力 //假设手机已经插 ...
- Effective C++ 条款二 用编译器替换预编译器
/************************************************************************/ /* C++条款二:用编译器替换预编译器 */ / ...
- Yii 清理缓存
html: <button onclick="clearCache()">ClearCache</button> js: function clearCac ...
- 设计模式入门之訪问者模式Visitor
//訪问者模式定义:表示一个作用于某对象结构中的各个元素的操作,它使你能够在不改变各元素类的前提下定义作用于这些元素的新操作. //从定义上看.这个模式跟装饰模式的定义非常类似(动态地给一个对象加入一 ...
- 李洪强iOS开发之-修改状态栏的字体的颜色
李洪强iOS开发之-修改状态栏的字体的颜色 修改的效果: -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [ ...
- WTF
WTF ,luna黑色主题比较sublime 还是差点!