《图解HTTP》阅读笔记--第二章 简单的HTTP协议--第三章 HTTP报文信息
第二章、简单的HTTP协议
HTTP协议:
HTTP协议用于客户端(请求资源的一端)和服务器端(响应回复提供资源的一端)的通信,是一种无状态协议
HTTP1.1默认TCP持久连接,管线化发送(并行发送多个请求)
=======================客户端发送请求报文===========================
GET /index.html /HTTP/1.1 ----表示请求访问某台HTTP服务器上的/index.html页面资源,1.1是版本号
Host : hackr.jp -----指明了请求访问的资源对象/请求URI(request-URI)
<请求报文一般是由请求方法、请求URI、协议版本、可选的请求首部字段和请求内容组成>
POST + /form/entry + HTTP/1.1 ---方法+URI+协议版本
Host: hackr:jp ---请求首部字段
Connection: keep-alive ---请求首部字段
Content-Type: applocation/x-www-form-urlencoded ---请求首部字段
Content-Length: 16 ---请求首部字段
name=ueno&age =37 ---内容实体
========================服务器发送响应报文===============================
HTTP /1.1 + 200 + OK ---协议版本+状态码+状态码的原因短语
Date: Tue, 10 Jul 2012 06:50:15 GMT ---响应首部字段---显示了创建响应的日期
Content-Length: 362 ---响应首部字段
Content-Type: text/html ---响应首部字段
<空行>
<html> ---主体
… ---主体
==========================HTTP方法==================================
GET:请求访问已被URL识别的资源呢
POST:传输实体的主体
PUT:传输文件
DELETE:删除文件
HEAD:获取报文首部
OPTIONS:询问支持的方法
TRACE:追踪路径---Max-Forwards=x,每经过一个服务器端就减一,x=0是停止
CONNECT:要求用隧道协议连接代理【CONNECT 代理服务器名:端口号 HTTP版本】
LINK:建立与资源之间的联系(1.1废弃)
UNLINK:断开连接关系(1.1废弃)
=====================================================================
cookie技术:解决HTTP的无状态协议
根据服务器发送的响应报文中的Set-Cookie的首部字段信息停止客户端保存cookie,当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入cookie值再发送出去,服务器接收后检查是哪个客户端的连接请求,对比服务器上的记录可以得到之前的状态信息。
第三章、HTTP报文内的HTTP信息
HTTP报文:
用于HTTP协议交互的信息叫做HTTP报文(请求报文+响应报文),它是由多行数据构成的字符串文本,大致分为报文首部和报文主体两个部分,两者由一行空行(回车/CR+换行/LF)分隔,通常并不一定要有报文主体。
HTTP报文结构:
---请求报文:请求行+请求首部字段+通用首部字段+实体首部字段+其他+空行+报文主体
---响应报文:状态行+响应首部字段+通用首部字段+实体首部字段+其他+空行+报文主体
请求行:用于请求的方法:GET /HTTP/1.1
状态行:相应结果的HTTP版本,状态码和原因短语:HTTP/1.1 200 OK
首部字段:表示请求和响应的各种条件和属性的各类首部。分类:请求/响应/通用/实体首部字段
其他:包含HTTP的RFC例未定义的首部字段,如cookie
报文主体和实体主体:(报文实体是箱子,实体主体是货物)
通常报文主体==实体主体,只有当实体主体在传输过程中进行编码操作,实体的内容发生变化时两者才不相等
内容编码---压缩传输
内容编码指明应用在负责解码内容上的编码格式,并保持实体信息原样压缩,编码之后的实体由客户端接收并解码
常用的内容编码为以下四种:
gzip(GNU zip) ; compress(UNIX 系统的标准压缩) ; deflate(zlib) ; identity(不进行编码)
分块传输编码---分割发送的编码
把实体主体分块的功能称为分块传输编码,确保在HTTP通信过程中,传播的数据过大时浏览器能够逐步显示页面。
分割后的每一块数据会用十六进制来表示大小,实体的最后一块数据会使用0(CR+LF)来标记结尾。
分割后的数据块最后会由接收到的客户端进行解码恢复成原来的实体主体。
多部分对象集合---容纳多份不同类型的数据
包含如下对象:multipart/form-data ; multipart/byteranges 。
在HTTP报文中使用多部分对象集合时要在首部字段中加上Content-type。
范围请求---获取部分内容
范围请求服务于HTTP可恢复的机制,,所谓恢复是指从之前下载的中断处恢复下载。
要实现该功能需要指定下载的实体范围:
Range: bytes=5001-10000//表示5001到10000字节
Range: bytes=5001-//表示5001字节之后全部的
Range: bytes=0-3000,5000-7000//表示一开始到3000字节和5000到7000字节的多重范围
---响应---
针对范围请求,响应会返回状态码为206 Partial Content的响应报文,对于多重范围,响应会在首部字段Content-Type标明multipart/byteranges后返回响应报文。
若服务器端无法响应范围请求,则会返回状态码200 OK和完整的实体内容??
内容协商---返回最合适的内容,以语言、字符集、编码方式等为基准判断合适的响应的资源
类型*3:服务器驱动协商(服务器自行处理);客户端驱动协商(用户自行选择);透明协商(前两个的结合体)
《图解HTTP》阅读笔记--第二章 简单的HTTP协议--第三章 HTTP报文信息的更多相关文章
- CSAPP阅读笔记-汇编语言初探(控制类指令)-来自第三章3.6的笔记-P135-P163
1.正溢出与负溢出: 首先,一个正数与一个负数相加,不可能溢出,因为结果的绝对值一定小于两个加数的绝对值,既然两个加数能合理表示出来,结果一定也能合理表示出来. 其次,正溢出是由于两个很大的正数相加, ...
- [计算机网络]图解HTTP阅读笔记
总述 书的定位:一本十分浅显的HTTP书籍,主要介绍了HTTP与HTTPS.适合入门了解,很多地方都是蜻蜓点水,但稍微深入的地方能让人了解重点在哪,后面应该有针对性地阅读深入书籍. 主要内容:介绍了T ...
- 图解HTTP——阅读笔记
基础部分 第1章 了解Web及网络基础 重点了解HTTP协议在网络中的作用,扮演了什么角色,以及网络传输中相关的一些角色. 3项重要的web构建技术:HTML,URL,HTTP HTTP协议位于应用层 ...
- 第二章 简单的HTTP协议
第二章 简单的HTTP协议 针对HTTP协议结构进行讲解 1.通过请求和响应的交换来达成通信目的 应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务器端角色. [请求报文]是由请求方法.UR ...
- 深入理解 C 指针阅读笔记 -- 第二章
Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_ /*<深入理解C指针>学习笔记 -- 第二章*/ /* 内存泄露的两种形式 1.忘 ...
- 【图解HTTP】第二章 简单的http协议
简单的HTTP协议 针对HTTP协议结构进行讲解,主要使用HTTP/1.1版本. HTTP协议用于客户端和服务器端之间的通信 通过请求和响应的交换达成通信(从客户端开始建立通信,服务器端在没有接收到请 ...
- 图解Http阅读笔记(二)
简单的HTTP协议 HTTP是一种不保存状态,即无状态(stateless)协议.HTTP 协议自身不对请求和响应之间的通信状态进行保存.也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不 ...
- 图解HTTP阅读笔记2
TCP协议:三次握手,C端——>SYN——>S端: S端——>SYN/ACK——>C端: C端——>ACK——>S端. 特点:字节流服务,把大块数据分割成以报文段为 ...
- 第二章(java程序设计)第三章(语言基础)
第二章 2.1 对象 对象的概念是由现实世界引入问题模型: 对象包含有:状态和行为.具体地来说是: 数据封装:对象的方法的作用就是:将内部变量封装起来,提供给外界交互的窗口.(实现对数据的隐藏) 继承 ...
随机推荐
- select 动态添加option函数
转自:https://lym6520.iteye.com/blog/309937 经常会用到select动态添加元素,写了个方法,方便调用! ... /** * 功能:select对象动态添加Opt ...
- java线程游戏之背景图片的移动
package com.plane; import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; im ...
- Generalized Low Rank Approximation of Matrices
Generalized Low Rank Approximations of Matrices JIEPING YE*jieping@cs.umn.edu Department of Computer ...
- CustomProgressDialog
1 ,布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...
- javascript使用setTimeout、setInterval时找不到变量的问题
我们在某个作用域内或者在自己定义的一个类里调用setTimeout.setInterval会经常会遇到找不到某个变量的错误. 比如下面这个例子: window.onload = function(){ ...
- debug---null Pointer Exception--一步步查找(2)
添加PartyLocationRepository后,再次在Ubuntu中编译项目,再次报空指针异常. 直接在createDto处打断点,然后debug每个表达式的值,找出来到底是哪个为null. 经 ...
- Joda Time 使用
Joda Time 使用 对于系统的一些时间操作很是不方便,为了方便转化,有时候用date,有时候用timestmp,有时候用calendar,忍不住想更改了. 但是任务巨大,先把笔记收藏了,后面有机 ...
- Samy Kamka、吴石黑客信息
Samy Kamka 10年前他就曾成功利用AJAX蠕虫攻击了当时最火的社交网站MySpace.com,2009年的Twitter蠕虫事件和2011年新浪微博蠕虫事件都沿袭了他当时的方法. 2005年 ...
- 20169219《Linux内核原理与分析》第十一周作业
设备与模块 关于设备驱动和设备管理的四种内核成分: 设备类型:为了统一普通设备的操作所采用的分类. 模块:用于按需加载和卸载目标码的机制. 内核对象:内核数据结构中支持面向对象的简单操作,还支持维护对 ...
- web 打印分页技巧
page-break-after 和 page-break-before: page-break-before和page-break-after CSS属性并不会修改网页在屏幕上的显示,这两个属性是 ...