您的位置:首页 > 理论基础 > 计算机网络

《HTTP权威指南》读书笔记(二)

2017-04-19 19:08 204 查看

HTTP的方法:

GET:向服务器请求资源

POST:向服务器请求资源并提交数据

eg:登录时输入用户名、密码后,点击登录按钮就是一个POST动作

HEAD:请求服务器,但仅返回首部,不包含主体内容

可以通过首部来检测服务器资源是否存在,资源是否被修改了等

PUT:向服务器写入文档(向服务器的资源中存储数据)

OPTIONS:询问服务器支持的方法有哪些

TRACE:跟踪请求,“环回”诊断;最后一站的服务器会返回一条TRACE响应,包含服务器接收到的请求的精确副本;可用于客户端对比请求在传送过程中是否被修改及修改内容等

DELETE:请服务器删除指定资源(无法保证一定删除,因为服务器可以在不通知客户端的情况下撤销请求)

状态码:

信息性状态码(100-199):

100 Continue:说明服务器收到了请求的初始部分,请客户端继续;服务器收到了这个状态码的请求后必须进行响应

101 Switching Protocols:说明服务器正在切换成首部指定的协议

成功状态码(200-299):

200 OK:请求成功

201 Created:用于创建服务器对象的请求(eg:PUT)

202 Accepted:请求已被服务器接受,但还没执行

重定向状态码(300-399):

300 Multiple Choices:请求指向多个资源的URL

301 Moved Permanately:请求的URL被移除

302 Found:面向HTTP/1.0,使用给定的URL临时定位资源

304 Not Modified:服务器上资源没被修改

307 Temporary Redirect:面向HTTP/1.1,使用给定的URL临时定位资源

客户端错误状态码(400-499):

403 Forbidden:服务器拒绝该请求(不说明原因)

404 Not Found:指定的URL没有找到

408 Request Timeout:请求超时

服务器错误状态吗(500-599):

500 Internal Server Error:执行请求服务失败

504 Gateway Timeout:请求超时

Cookie

客户端保存的是服务器返回的用来识别用户的id等小片段信息,当用户再次访问同一个服务器时,cookie会发送给合适的站点。

会话cookie:临时cookie,用户退出浏览器时,会被删除。

持久cookie:有一个过期时间的cookie,存储在本地cookie文件。

HTTPS(默认端口:443,其实是SSL的端口号)

简单说,HTTPS = HTTP + SSL or TLS,HTTPS是HTTP的安全版本。

HTTPS就是在安全的传输层上发送HTTP

通俗说,就是先要进行SSL握手,验证SSL证书,生成秘钥等;之后再将原始HTTP报文发送到TCP传输层之前,会先发送到SSL层进行加密,再发送到TCP传输层。

TCP连接

IP分组=IP分组首部(20字节)+TCP段首部(20字节)+TCP数据块

三次握手:

SYN

SYN+ACK

ACK+传输数据主体

提高HTTP连接性能:

并行连接:多条TCP连接,并发请求HTTP,叠加时延

持久连接:重用TCP连接,消除连接及关闭时延

在事务处理结束之后仍然保持TCP连接为打开状态

HTTP/1.0+keep alive:请求首部加上Connection:Keep-Alive激活keep-alive连接;当然服务器响应也需要带上Connection:Keep-Alive

哑代理:代理只是简单地将客户端和服务器的Connection:Keep-Alive进行传输,会造成服务器和客户端分别认为自己和代理发起了keep-alive连接,而导致代理挂起的困境

Proxy-Connection:Keep-Alive:哑代理直接原样传输,服务器没匹配到Connection首部,忽略Keep-alive请求;聪明的代理可以识别出Proxy-Connection首部,并自动转化成Connection:Keep-Alive首部,服务器匹配成功

单个盲代理+Proxy-Connection新首部可以解决上面哑代理的困境;但对于多层代理依然束手无策

HTTP/1.1持久连接:HTTP/1.1已经停止对keep-alive的支持,改用默认持久连接的设计;需要关闭时,首部显式加入Connection:close即可。

管道化连接:HTTP/1.1持久连接上可选地使用请求管道。可以消除传输时延

关闭连接

TCP连接是双向的,两端都有输入、输出信道。

close():完全关闭

shutdown():半关闭,即单独关闭输入或输出信道。

关闭连接的输入信道比较危险,毕竟你不能确信对面输出信道不再进行输出;如果对方向已经关闭的输入信道发送数据,会产生“连接被对端重置”错误。

关闭连接的顺序:先关闭一端的输出信道,再等待对方关闭输出信道,最后再关闭输入信道
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: