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基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
随机推荐
- 洛谷——P1057 传球游戏
P1057 传球游戏 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹 ...
- Go -- 判断chan channel是否关闭的方法
如果不判断chan是否关闭 Notice: 以下代码会产生死循环 代码如下: package main import ( "fmt" ) func main() { c := ma ...
- yum gd linux
32位操作系统安装命令:[root@localhost ~]# yum install php-gd*64位操作系统安装命令:[root@localhost ~]# yum install php-g ...
- ZT:CSS实现水平|垂直居中漫谈
有篇博客园网友‘云轩奕鹤’的文章不错,转载在这里以供需要时查阅. http://www.cnblogs.com/jadeboy/p/5107471.html
- 浅谈BloomFilter【下】用Java实现BloomFilter
通过前一篇文章的学习,对于 BloomFilter 的概念和原理.以及误报率等计算方法都一个理性的认识了. 在这里,我们将用 Java'实现一个简单的 BloomFilter . package pr ...
- sort-list——链表、快慢指针找中间、归并排序
Sort a linked list in O(n log n) time using constant space complexity. 链表,快慢指针找中点,归并排序. 注意判断条件fast-& ...
- C++经典面试题解析
1. // BlankTest.cpp : 定义控制台应用程序的入口点. //题目:将一个文件中的一组整数排序后输出到另一个文件中 #include "stdafx.h" #inc ...
- JMeter 系列之—-02 创建数据库测试计划
Jmeter创建数据库测试计划,包括如下步骤: 1. 添加数据库jar包 使用不同的数据库,要引入不同的jar包.主要有两种方式: 方式1:直接将jar包复制到jmeter的lib目录 方式2:通过测 ...
- HDU 5335 Walk Out(多校)
Walk Out Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- 微信小程序项目实例
目前为止最全的微信小程序项目实例 2018年03月20日 11:38:28 Happy王子乐 阅读数:4188 wx-gesture-lock 微信小程序的手势密码 WXCustomSwitch ...