第一章 了解WEB及网络基础(省略了TCP/IP的知识点)

1.1、使用HTTP协议访问web 

当我们在主机的浏览器的地址输入URL之后 请求将回发送至目标服务器 目标服务器在接受到响应请求时将会响应客户端发过来的请求。web页面当然不可能凭空显示出来。根据web浏览器中指定的URL,web浏览器从Web服务器端获取文件资源(resource)等信息,从而显示web页面。

像这种通过发送请求获取服务器资源的web浏览器等,都可以被称为客户端(client)(如图左边Client) 而这个过程所使用的协议 就是HTTP。

HTTP(Hyper Text Transfer Protocol 超文本传输协议)

eg:我们在浏览器输入baidu.com 回车 这是就发生了HTTP通信 你的主机将会向baidu.com这个网站服务器发送索要网站资源的请求 这时百度就会回馈网站资源信息 这样我们就能在浏览器中看到baidu.com这个网站的主页了  而这个过程运用的就是HTTP协议。

1.2 、HTTP的诞生

1989年3月,互联网还只属于少数人的时候 HTTP诞生了

1990年11月 CERN成果研发了世界上第一台web服务器和web浏览器

HTTP于1990年问世

1.3 、URI和URL

URI(统一资源标识符)URI是Uniform Resource Identifier 的缩写。

URL(统一资源定位符)URL是我们经常使用的网址入http://baidu.com/这就是一个URL

第二章 简单的HTTP协议

2.1 、HTTP的请求

HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身部队请求和响应之间的通信状态进行保存。

HTTP请求由三部分组成,分别是:请求行、消息报头、请求正文。

如图是一个简单的http请求的具体例子

请求行:请求行是请求消息的第一行,由三部分组成:分别是请求方法(GET/POST/DELETE/PUT/HEAD)、请求资源的URI路径、HTTP的版本号

GET /index.html HTTP/1.1

请求头:请求头中的信息有和缓存相关的头(Cache-Control,If-Modified-Since)、客户端身份信息(User-Agent)等等。例如:

Cache-Control:max-age=0
Cookie:gsScrollPos=; _ga=GA1.2.329038035.1465891024; _gat=1
If-Modified-Since:Sun, 01 May 2016 11:19:03 GMT
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36

请求方法(所有方法全为大写)有多种,各个方法的解释如下:

2.2 、HTTP的请求方法

序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。

第三章 HTTP报文内的HTTP信息

3.1 、HTTP报文

用于HTTP协议交互的信息被称为HTTP报文。请求端的HTTP报文叫做请求报文,响应端的叫做响应报文。

请求行:包含用于请求的方法,请求URI和HTTP版本

状态行:包含表明响应结果的状态码,原因短语和HTTP版本

首部字段:包含表示请求和响应的各种条件和属性的各类首部

其他:可能包含HTTP的RFC未定义的首部(Cookie等)

3.2 、编码提升传输速率

HTTP 在传输数据时可以按照数据原貌直接传输,但也可以在传输过程中通过编码提升传输速率。通过在传输时编码,能有效地处理大量地访问请求。但是,编码地操作需要计算机来完成,因此会消耗更多地CPU资源

1.压缩传输地内容编码

2.分割发送的分块传输编码

第四章 返回结果的HTTP状态码

状态码的指责时当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以直到服务端时正常处理了请求,还是出现了错误。

204 No Content 请求处理成功,但没资源可返回
206 Partial Content 客户端进行范围请求
301 Moved Permanently 永久重定向
302 Found 临时性重定向
303 See Other
304 Not Modified 附带条件请求 服务器阻止
307 Temporary Redirect 临时重定向
400 Bad Request客户端错误
401 Unauthorized 请求需要HTTP认证
403 Forbidden 表明对请求资源的访问被服务器拒绝
404 Not Found表明无法找到请求的资源

5XX服务器错误
500 Internal Server Error 表明服务端在执行请求时发生了错误,也可能是web BUG
503 Service Unavailable 表明服务器暂时处于超负荷或正在停机维护

注意:状态码和状况不一致

不少返回的状态码响应都是错误的,但是用户可能察觉不到这点。比如web应用程序内部发生错误,状态吗依然返回200OK,这种情况也经常遇到。

 

 

 

图解HTTP简单笔记【上】的更多相关文章

  1. applicationContext.xml简单笔记

    applicationContext.xml简单笔记 <?xml version="1.0" encoding="UTF-8"?> <bean ...

  2. pyqt样式表语法笔记(上) --原创

    pyqt样式表语法笔记(上) pyqt QSS python 样式表 因为软件课设的原因开始学习使用pyqt4,才发现原来它也有样式表,而且语法跟css基本相同,而且一些功能实现起来感觉比js要简单方 ...

  3. Vim 命令图解-Gvim使用笔记-2017-5-9

    Vim 命令图解-Gvim使用笔记... 图片要是看的不太清楚推荐使用:鼠标右键在新标签中打开或是全屏看图 Vim中常用的一些速查命令: Vim发展历史:1976年Bill Joy开发了vi1988 ...

  4. Vim 命令图解-Gvim使用笔记

    Vim 命令图解-Gvim使用笔记... 参考的网址:http://blog.vgod.tw/wp-content/uploads/2014/08/vgod-vim-cheat-sheet-full. ...

  5. mybatis-config.xml简单笔记

    mybatis-config.xml简单笔记 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...

  6. Servlet基础简单总结(上)

    Servlet基础一些简单总结(上): 1.Java Servlet是运行在Web服务器上的Java程序2.Java平台给Servlet开发者提供了强大的API/面向对象编程平台无关/强类型/垃圾回收 ...

  7. 【阿里云产品公测】OTS使用之简单线上产品实践基于PythonSDK

    阿里云用户:morenocjm 实践是检验真理的唯一标准,学习技术需要通过实践过程中的不断尝试,才能够快速掌握要领.OTS是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存 ...

  8. ListView(2)最简单的上拉刷新,下拉刷新

    最简单的上拉刷新和下拉刷新,当listview滚动到底部时向上拉刷新数据.当listview滚动到最顶部时下拉刷新.       图1,上拉刷新 图2,下拉刷新 1,设置lisview,加载heade ...

  9. Python学习笔记2-flask-sqlalchemy 简单笔记

    flask-sqlalchemy 简单笔记 字数 阅读 评论 喜欢 flask-sqlalchemy SQLAlchemy已经成为了python世界里面orm的标准,flask是一个轻巧的web框架, ...

随机推荐

  1. Dokuwiki安装教程

    一. CentOS设置 1. 更换阿里源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos ...

  2. Linux操作系统的介绍和安装教程(Centos6.4)

    路漫漫其修远兮,吾将上下而求 Linux的简单介绍 Linux最初是由芬兰赫尔辛基大学学生Linus Torvalds开发的,由于自己不满意教学中使用的MINIX操作系统, 所以在1990年底由于个人 ...

  3. 微信小程序-基于高德地图API实现天气组件(动态效果)

    微信小程序-基于高德地图API实现天气组件(动态效果) ​ 在社区翻腾了许久,没有找到合适的天气插件.迫不得已,只好借鉴互联网上的web项目,手动迁移到小程序中使用.现在分享到互联网社区中,帮助后续有 ...

  4. oracle sql developer 启动java.exe设置错误

    1.找到oracle安装目录下的jdk,如:E:\app\Administrator\product\11.2.0\dbhome_1\jdk 2.找到oracle安装目录下的developer路径:E ...

  5. 第1天|12天搞定Python网络爬虫,吃里爬外?

    人力资源部漂亮的小MM,跑来问我:老陈,数据分析和爬虫究竟是关系呀?说实在的,我真不想理她,因为我一直认为这个跟她的工作关系不大,可一想到她负责我负责部门的招聘工作,我只好勉为其难地跟她说:数据分析, ...

  6. 分布式雪花算法获取id

    实现全局唯一ID 一.采用主键自增 最常见的方式.利用数据库,全数据库唯一. 优点: 1)简单,代码方便,性能可以接受. 2)数字ID天然排序,对分页或者需要排序的结果很有帮助. 缺点: 1)不同数据 ...

  7. 面试官:看你简历说写精通ThreadLocal,这几道题你都会吗?

    问题 和Synchronized的区别 存储在jvm的哪个区域 真的只是当前线程可见吗 会导致内存泄漏么 为什么用Entry数组而不是Entry对象 你学习的开源框架哪些用到了ThreadLocal ...

  8. 【译】Rust中的array、vector和slice

    原文链接:https://hashrust.com/blog/arrays-vectors-and-slices-in-rust/ 原文标题:Arrays, vectors and slices in ...

  9. django路径问题

    1. 初始化项目结构 2.创建Django项目 使用pycharm打开项目 1.右击---->编辑配置 > 2.文件---->设置 > 3.文件---->设置 > ...

  10. python框架Django中的MTV架构

    MTV架构 关注公众号"轻松学编程"了解更多. ​ 通过V对M和T进行连接,用户通过T(界面)对服务器进行访问(发送请求),T把请求传给V(调度),V调用M(数据模型)获取数据,把 ...