chapter1 web及网络基础
chapter2 简单的http协议
- http协议用于客户端和服务器之间通信。
请求报文:
12GET /index.htm HTTP/1.1Host: hackr.jp- 请求方法
- 请求URI
- 协议版本 以上三个位请求行
- 请求头+内容实体
响应报文
http 不保存状态(stateless)
但实际中,需要保持状态,比如用户登录信息,这个时候利用cookie等。http方法
- get
- post
put:传输文件,状态码如204,表示该文件已经存在于服务器上。
由于HTTP1.1中的put方法自身不带验证机制,任何人都可以上传文件,存在安全问题。一般网站不使用该方法,除非有自定义的验证机制/rest标准设计。
put是幂等的。HEAD(同get,但不返回报文主体内容,用于确认URI有效性及资源更新的内容),
DELETE:删除文件,同put一样,不安全,响应:204(no content)
TRACE: 讲之前的请求通信环回给客户端。
- Connect:用隧道协议连接代理,主要用SSL。TLS协议把通信内容加密后经网络隧道传输。
持久连接
最开始的时候,每请求(指http)一次就要断开tcp再新建一次连接(包括,tcp三次握手建立连接,请求,响应,四次握手断开tcp连接)。开销太大。(比如一个html中还有图片资源,这个也是请求。)
为解决上述问题,提出了持久连接。(只要一方不提出断连,就一直保持tcp连接,可以多个http请求。)
http1.1默认持久连接,但1.0不是
引申:使得pipeline成为可能,多个请求可以并行发送。cookie
第一次客户端请求后,服务端生成cookie,要求客户端set cookie,然后下次客户端请求时便会自动加入cookie信息,服务端再根据这个进行判别。服务端仍然是无状态的。
chapter3 http报文内的http信息
请求报文
三部分:
- 报文首部(请求头)
+ 请求行:方法、URI、协议版本 + 首部字段: 通用首部、请求首部|响应首部、实体首部 + 其他:如cookie
- 空行、
- 报文主体
- 报文首部(请求头)
内容协商以返回最合适的内容
比如访问macy.com,梅西百货,它会根据浏览器的默认语言,返回相应的web页面,如中文版。
以相应资源的字符集、编码方式、语言作为判断的基准。
chapter4 http状态码
- 2XX成功
- 200 ok
- 204 no content:在服务器不需要向客户端返回信息时用
- 206 partial content, 范围请求
- 3XX重定向
- 301 moved parmanantly .永久性重定向,如保存的书签需要更新。
- 302 found 临时性重定向,仅一次
- 303 see other,请求资源有另一个URI,需要用get方法重定向获取。部分区别于302
- 304 not modified
- 4XX 客户端错误
- 400 bad request 请求报文中有语法错误
- 401 unauthorized 要登录/登录失败’
- 403 forbidden 权限问题
- 404 not found
- 5XX 服务器错误
- 500 internal server error。
- 503 service unavailable,服务器在超负载正忙retry-after字段