http

HTTP

chapter 1

HTTP: HyperText Transfer Protocol 超文本传输协议*

TCP/IP是互联网相关的各类协议族的总称

TCP/IP按层次分为: 应用层 传输层 网络层 数据链路层

应用层: FTP file transfer protocol DNS domain name system http

传输层:处于应用层下方 提供处于网络连接中的两台计算机之间的数据传输 TCP transmission control protocol 传输控制协议 UDP user data protocol 用户数据报协议

网络层 用来处理数据包 选择传输线路

链路层 接口层 用来处理驱动,NIC network interface card 网卡 硬件范畴

client-server

1
2
HTTP client --> TCP --> IP --> network
network -> IP --> TCP --> HTTP server

与HTTP密切相关的三个协议

IP internet protocal 位于网络层 非ip address IP协议的作用是把各种数据包传送给对方

要保证确实传送到对方那里,则需要满足各种条件,其中两个重要的条件是ip地址和mac MAC( media access control address)

ip地址 节点被分配到的地址 mac地址 网卡所属的固定地址

ip地址和mac可以进行match,ip地址可以变换,但mac基本不会更改

使用ARP协议凭借MAC地址进行通信

IP间的通信依赖mac ARP协议address resolution protocol ARP用来解析地址的协议 网络上,通信双方都在局域网的例子不常见,都是经过多台计算机中转连接到对方,中转时会利用mac来搜索下一个中转目标

ARP根据通信方的ip地址就能反查出对应的mac地址

确保可靠性的TCP协议

TCP位于传输层,提供可靠的字节流服务 byte stream service 把大块数据分割成segment 报文段 进行管理

tcp分割数据,确保传输到对方数据完整

为了这一目的,tcp 采用了三次握手策略

三次握手 three-way handshaking

用tcp 把数据包送出去后,tcp不会对传送后的情况置之不理 它一定会向对方确认是否成功送达 握手过程中使用了tcp的flag SYN(synchronize)和ACK(acknowledgement)

发送端首先发送一个带SYN标志的数据包给对方 接受端接收到后回传一个带有SYN/ACK标志的数据包 确认 发送端再回传一个ACK标志数据包,代表握手结束

若中间有某个阶段中断,tcp协议会在此以相同的顺序发送相同的数据包

DNS 域名解析

DNS协议提供从域名查找ip地址,或逆向从ip地址反查域名的服务

URI vs URL

URI 统一资源标识符 URL uniform resource locator 统一资源定位符 -- 网页地址

URI uniform resource identifier

chapter 2

客户端: 请求访问文本或图像等资源的一端 服务器端: 提供资源响应的一端

示例 请求报文

1
2
GET /index.htm HTTP/1.1
Host: hacker.jp

GET 表示请求访问服务器的类型 method /index.htm request-URI HTTP/1.1 HTTP版本号

HTTP是不保存状态的协议 stateless

使用cookies可以管理状态

告知服务器意图的HTTP 方法

GET

用来请求已经被URI识别的资源

POST

用来传输实体的主体

PUT

传输文件 请求报文的主体中包含文件内容,然后保存到请求URI指定的位置

HEAD

和GET一样,但是不返回报文主体 用于确认URI的有效性 资源更新日期等信息

DELETE

删除文件

OPTIONS

查询针对请求URI指定的资源支持

TRACE

让web服务器将之前的请求通信返回给客户端

CONNECT

使用隧道进行tcp通信

SSL secure sockets layer 安全套接层

TLS transport layer security 传输层安全

持久连接节省通信量

HTTP persistent connections HTTP keep-alive

持久连接: 只要任意一端没有提出断开连接则保持tcp连接状态

HTTP1.1 所有的连接默认都是keep-alive

管线化 pipelining

不用等待响应就可以发送下一个请求

使用cookies管理状态

cookies技术通过在请求和响应报文中写入cookie信息来控制客户端状态

cookie会根据从服务器端发送的响应报文内的一个叫做 set-cookie的首部字段信息,通知客户端保存cookie

当下次客户端再往该服务发送请求时,客户端会自动在请求报文中加入cookie值后发出去

服务端拿到cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录 最后得到之前的状态信息

chapter 3

HTTP 报文内的HTTP信息

报文: 用于HTTP协议交互的信息被称为HTTP报文 客户端的报文叫做 请求报文 服务端的报文 叫做响应报文

报文首部 CR+LF换行符 报文主体

并不一定要有报文主体

message vs entity

message 报文 是HTTP通信中的基本单位,由8位组字节流组成,通过http通信传输 entity 实体,做为请求或响应的有效payload被传输,由实体首部和实体主体组成 entity header + entity body

http message的主体用于传输请求或响应的实体主体

通常 报文主体等于实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异

compress

gzip compress delfate indentity

分割发送的分块传输编码

分块传输编码 chunked transfer coding

分块传输编码会将四体主体分成多个部分,每一块都会用十六进制来标记块的大小,而实体主体的最后一块会使用 "0(CR+LF)" 来标记

由客户端负责解码 恢复实体主体

chapter 4

status code状态码

code msg
200 ok
204 no content
206 partial content
301 moved permanently
302 found

chapter 5

Proxy 代理 caching proxy transparent proxy 客户端缓存--临时网络文件 temporaray internet file

chapter 6

HTTP header

chapter 7