1. web及网络基础
1.1. 通过HTTP访问web[C/S]
1.2. TCP/IP四层模型
1.2.1. 数据包的封装
1.3. TCP/IP协议族
1.3.1. 负责传输的IP协议
使用ARP协议凭借MAC地址通信
1.3.2. 确保可靠的TCP协议
1.3.3. 负责域名解析的DNS服务
1.3.4. 各协议与HTTP的关系
1.4. URI与URL
- URI(Uniform Resource Identifier):统一资源标识符
- URL(Uniform Resource Locator):统一资源定位符;URL是URI的子集
1.4.1. URI的格式
字段 | 说明 |
---|---|
协议 | http/https |
登录信息(认证) | user:pass@(一般没有) |
服务器地址 | 域名或IP |
服务器端口号 | 服务端口号,省略则取默认端口号 |
带层次的文件路径 | 指定服务器上的文件路径来定位特指的资源 |
查询字符串 | 使用查询字符串传入参数 |
片段标识符 | 标记以获取资源中的子资源(文档内的某个位置) |
1.4.2. URI的示例
2. HTTP协议
2.1. 通过请求和响应的交换达成通信
2.1.1. 请求报文
2.1.2. 响应报文
2.2. HTTP请求方法
2.2.1. GET:获取资源
2.2.2. POST:传输实体主体
2.2.3. PUT:传输文件
PUT方法用来传输文件,像FTP协议一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。
因为自身不带验证机制,有安全问题,因此一般不采用。若配合验证机制或者REST标准则可使用。
2.2.4. HEAD:获取报文头部
HEAD和GET一样但不返回报文主体部分,用于确认URI的有效性及资源的更新时间等。
2.2.5. DELETE:删除文件
DELETE与PUT作用相反,但不带安全验证机制一般不采用。
2.2.6. OPTIONS:询问支持的方法
OPTIONS用来查询针对请求URI指定的资源支持的方法
2.2.7. TRACE:追踪路径
TRACE用来查询发送出去的请求是怎样被加工修改/篡改的,因为易引发XST(跨站追踪)攻击,一般不使用。
2.2.8. CONNECT:要求用隧道协议连接代理
CONNECT要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(Source Sockets Layer:安全套接字)和TLS(Transport Layer Security:传输层安全)协议把通信内容加密后经网络隧道传输。
方法格式如下:
2.3. 持久连接
2.3.1. keep-alive
为解决每进行一次HTTP通信就要断开一次TCP连接,增加了通信量的开销,HTTP/1.1通过keep-alive持久连接,只要任意一端没有明确提出断开连接,则保持TCP连接状态。
持久连接减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。
2.3.2. 管线化
持续连接使得多数请求以管线化(pipelining)方式发送成为可能。管线化即同时并行发送多个请求,而不需要一个接一个等待响应。管线化技术比持续连接速度快,请求数越多越明显。
2.3.3. 使用cookie的状态管理
HTTP是无状态协议,不对之前发生过的请求和响应的状态进行管理,即无法根据之前的状态进行本次的请求处理。无状态协议的优点在于不必保存状态,减少服务器CPU及内存资源的消耗。
cookie技术通过在请求和响应报文中写入cookie信息来控制客户端的状态。cookie会根据从服务端发送的响应报文内的一个叫做Set-Cookie的首部字段通知客户端保存Cookie;当客户端再往服务端发送请求时,客户端自动在请求报文中加入Cookie值后发送出去。服务器发现Cookie后会检查从哪个客户端发送来的连接请求,对比服务器上的记录,最后得到之前的状态信息。
参考:
- 《图解HTTP》