一、前言
书目:《图解HTTP》
(著)【日】上野 宣
(译) 于均良
二、正文
第一章 了解Web及网络基础
Web使用一种名为HTTP(HyperText Transfer Protocol,超文本转移协议)作为规范,完成从【客户端】到【服务端】等一系列运作流程。协议是指规则的约定。即,【Web是建立在HTTP协议上通信。】
HTTP的诞生及发展
3项WWW构建技术,把SGML(标准通用标记语言)作为页面的文本标记语言HTML;
作为文档传递协议的HTTP;
指定文档所在地的URL(统一资源定位符)
TCP/IP协议族
TCP/IP的分层管理
应用层:决定了向用户提供应用服务时通信的活动。【FTP文本转移协议】、【DNS域名系统】、【HTTP】
传输层:对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。【TCP传输控制协议】、【UDP用户数据报协议】
网络层:又名【网络互连层】。用来处理网络上流动的数据包。该层规定了通过怎样的路径(传输路径)到达对方计算机,并把数据包传送给对方。数据包是网络传输的最小数据单位。
链路层:又名【数据链路层、网络接口层】。用来处理连接网络的硬件部分。
包括【控制操作 系统】【硬件设备驱动】【NIC网络适配器,网卡】【光纤】
与HTTP密切关联的协议:【IP】【TCP】【DNS】
负责传输的IP协议:{
IP网际协议,【网络层】
与【IP地址】有区别
IP协议作用是把各种数据包传送给对方。保证确实传送成功,需要【IP地址】【MAC地址】
【IP地址】指明了节点被分配到的地址;【MAC地址】指网卡所属的固定地址。
【ARP协议】是一种用以解析地址的协议。根据通信方的【IP地址】反查【MAC地址】
【路由选择】:没有人能够全面掌握互联网中的传输状况
}
确保可靠的TCP协议:{
提供可靠的字节流服务。【传输层】
TCP采用了三次握手策略:{
TCP的标志:SYN(Synchronize)和ACK(acknowledgement)
}
}
负责域名解析的DNS服务:{
DNS服务是提供【域名】到【IP地址】之间的解析服务。 【应用层】
}
HTTP通信过程:{
}
URI和URL:{
URI格式:{
}
}
并不是所有的应用程序都符合RFC:{
RFC(Request for Comments,征求修正意见书)
}
第二章 简单的HTTP协议
请求报文的结构:{
【方法】【URI】【协议版本】
【请求首部字段 】
【内容实体 】
}
响应报文的构成:{
【协议版本】【状态码】【状态码的原因短语】
【响应首部字段 】
【主体 】
}
HTTP是不保存状态的协议:{
HTTP是一种不保存状态,即【无状态(stateless)】协议。
这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成如此简单的。
为了实现【期望的保存状态】功能,引入了Cookis技术。
有了Cookie 再用HTTP协议通信,就可以管理状态了。
}
请求URI定位资源:{
指定请求URI的方式:{
}
}
HTTP的八大方法:{
GET:获取资源:{
用来请求访问已被URI识别的资源。【文本】或【CGI(通用网关接口)】
例子:{
}
}
POST:传输实体主体:{
用来传输实体的主体。
主要目的并不是获取响应的主体内容。
例子:{
}
}
PUT:传输文件:{
用来传输文件。
像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。
PUT自身不带验证机制,任何人都可以上传文件,存在安全性问题。
一般的Web网站不使用此方法。
若使用【配合Web应用程序的验证机制】或【采用REST架构设计的Web网站】,
就可使用此方法。
}
HEAD:获得报文首部:{
与GET方法一样,只是不返回报文主体部分。
用于确认URI的有效性 及相关信息。
}
DELETE:删除文件:{
用来删除文件,与PUT方法相反。
DELETE 自身不带验证机制,任何人都可以上传文件,存在安全性问题。
一般的Web网站不使用此方法。
若使用【配合Web应用程序的验证机制】或【采用REST架构设计的Web网站】,
就可使用此方法。
}
OPTIONS:询问 所支持的方法:{
用来查询 针对请求URI指定的资源 所支持的方法。
}
TRACE:追踪路径:{
让Web服务器端将之前的请求通信环 回给客户端。
}
CONNECT:要求用【隧道协议】连接代理:{
要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。
主要使用【SSL安全套接层】和【TLS传输层安全】把通信内容加密后经网络隧道传输。
格式:{
}
}
}
【HTTP/1.0】和【HTTP/1.1】支持的方法:{
}
持久连接 节省通信量:{
HTTP初始版本中,每进行一次HTTP通信就要断开一次TCP连接:{
}
初始版本中,HTML文档的传输方式:{
}
持久连接:{
HTTP keep-alive 特点:只要任意一端没有明确提出断开连接,则保持TCP连接状态。
其好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务端的负载。
【在HTTP/1.1中,所有的连接默认都是持久连接】
}
管线化:{
持久连接 使得多数请求以【管线化pipelining】方式发生成为可能。
}
}
使用Cookie的状态管理:{
【如果让服务器管理全部客户端状态 则会成为负担】
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态:{
报文:{
}
}
}
(完)