文章目录
内容均来自《图解HTTP》一书,本博只是本人的学习摘要。
第一章 网络基础
TCP/IP通信传输流
- 发送端从应用层往下走,接收端从链路层往上走。
- 应用层(HTTP协议)发送请求,传输层(TCP协议)将请求分割并标记序号,网络层(IP协议)增加作为通信目的地的MAC地址。
- 发送端每经过一层打上该层的首部信息,接收端每经过一层消去对应首部。
IP协议
- IP地址:节点被分配到的地址,可以变换。
- MAC地址:网卡的固定地址,基本不会更改
- 两者可以进行配对
TCP协议
- TCP位于传输层,提供可靠的字节流服务。确保传输可靠性,TCP协议采用
三次握手
(three-way handshacking)策略。 - TCP标志
SYN
ACK
DNS服务
- 存在于应用层,提供域名到IP地址之间的解析服务
各中协议与HTTP协议关系图
URI和URL
- URI(Uniform Resource Identifier)统一资源标识符,标识某一互联网资源
- URL(Uniform Resource Locator)统一资源定位符,标识资源的地点
- URL是URI的子集
几种URI的例子
ftp://ftp.is.co.za/rfc/rfc1808.txt
http://www.ietf.org/rfc/rfc2396.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
mailto:John.Doe@example.com
news:comp.infosystems.www.servers.unix
tel:+1-816-555-1212
telnet://192.0.2.16:80/
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
-
绝对URI格式
登录信息、查询字符串、片段标识符为可选项 -
片段标识符:锚点
是一种页面内部超链接,如果一个页面很长,里面的内容分为N个部分,我们可以在网页顶部设置一些锚点,以便用户点击相应锚点快速到达本业相应位置。锚点在URL最右边,以#
开头。
第二章 简单的HTTP协议
请求报文&响应报文格式
- 请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成
GET /index.htm HTTP/1.1
HOST: hackr.jp
- 响应报文
HTTP/1.1 200 OK
Date: Tue, 10 Jul 2012 06:50:15 GMT
Content-Length: 362
Content-Type: text/html
<html>
……
HTTP和Cookie
- HTTP协议不保存状态,即无状态协议。可更快地处理大量事物,确保协议可伸缩性
- Cookie指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。
有了Cookie再用HTTP就可以管理状态了
HTTP的方法
- GET:获取资源
- POST:传输实体主体
- PUT:传输文件
不带验证机制,存在安全性问题 - HEAD:获取报文首部
与GET方法一样,只是不返回报文主体部分 - DELETE:删除文件
与PUT方法一样,不带验证机制 - TRACE:追踪路径
在发送请求时,在MAX-Forwards首部字段中填入数值,每经过一个服务器数值就减1,直到0,停止传输,最后服务器端返回状态码200 OK的响应。
TRACE方法不常用,并且容易引发XST(跨站追踪)攻击。 - OPTIONS:询问支持的方法
请求 | OPTIONS * HTTP/1.1 |
---|---|
响应 | HTTP/1.1 200 OK Allow:GET,POST,HEAD,OPTIONS (返回服务器支持的方法) |
- CONNECT:要求用隧道协议连接代理
与代理服务器之间建立隧道,实现用隧道协议进行TCP通信
主要使用SSL和TLS协议把通信内容加密后经过网络隧道传输
CONNECT方法格式如下:
CONNECT 代理服务器名:端口 HTTP版本
持久连接
- 建立一次TCP连接(三次握手)后进行多次通信
- HTTP1.1默认所有连接都是持久连接
- 但是还是需要发送请求后等待响应,才能发送下一次请求
管线化
- 不需要等待响应就可以发送下一次请求
使用Cookie管理状态
- 第一次请求时,服务器端生成Cookie,在响应报文添加Set-Cookie字段返回给客户端,提醒客户端保存Cookie
- 第二次请求时,客户端在请求报文中添加Cookie信息,服务器端根据cookie信息来判断该客户端的状态(比如登录)