这一部分讲1~4章,简述HTTP协议。
第1章:HTTP概述
主要讲述HTTP如何工作的。
web客户端与服务端:web服务器上存储着内容,客户端通过HTTP协议向HTTP服务器请求响应内容。web客户端与服务端是基本组件。
资源:web服务器是web资源的宿主。静态文件(.img、.html、.avi)可以是资源,软件代码可以是资源,搜索引擎可以是资源等等。MIME用来表示数据类型,即header 头 content-type。使用URI(统一资源定位符)来标识资源,
第2章:URL与资源
URL编码:为了在URL表示不安全的字符设置了一套编码机制,原理是通过%加上十六进制来表示这些字符。比如“\” 他的ASCII码为92,92的十六进制是5c,所以“\” 在URL里表示为“%5c”。
方案格式:除了可以使用http://表示URL外,还有 file:// 用来表示文件,https:// 在http的tcp协议上加了一层ssl,比http://更安全,fcp://等等
第3章:HTTP报文
报文是在HTTP应用程序之间流动发送的数据块,数据块以文本特定格式发送。报文分为请求报文与响应报文。
报文格式:起始行,首部和主体三部分。起始行和首部是一段ASCII码,主体是可选的数据块,可为二进制数据也可为文本。起始行与首部用两个字符组成的CRLF分割其分别为回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n,%0a)。首部与主体以一行空白作为分割。
方法:put,delete,trace,post,get,options(服务器支持哪些方法),head
状态码:100-199信息状态码(100:表示服务器接收到请求,请客户端继续发送),200-299成功状态码,300-399重定向状态码,400-499客户端错误,500-599服务器错误
第4章:连接管理
什么是tcp?
如上图在浏览器与服务器进行80端口连接的时候就会进行TCP连接。HTTP要传输报文时,会将报文将流的形式按顺序以TCP传输,TCP收到数据后会将数据块分成一个个小段数据块以IP分组的形式通过互联网传输。TCP数据块是由一个个小的IP分组数据块组成,如下图所示。可以看到一个IP分组包含IP首部,TCP首部以及TCP数据块。TCP首部有一些标志用来进行连接检查等操作。
TCP是如何连接的?
TCP连接需要经过以下几个步骤?
- 客户端向服务端发送一个小的TCP分组,设置一个特殊的SYN标记表示这是一个连接请求
- 服务器接到请求并接受连接后会向客户端回送一个TCP分组,将SYN和ACK标志位置位表示接受连接请求
- 客户端接受后会回送一个确认消息,通知连接已经建立。现代的TCP栈允许在这个确认分组中发送数据。
这一过程称作TCP三次握手
TCP性能
由于HTTP是构建TCP上,所以TCP的性能直接就反映了HTTP的性能。在一个HTTP事务出现时延有以下可能:1.DNS解析域名的时间。2.TCP连接建立时延。3.HTTP请求时延。4.HTTP响应时延。其中TCP时延包括:1.TCP握手时延。2.TCP慢启动拥塞控制。3.数据聚焦的Nagle算法。4.捎带确认的TCP延迟确认算法。5.TIME_WAIT时延和端口耗尽。
其中TCP慢启动在起初会限制连接的最大速度,然后随着时间提高传输速度,以防止网络拥塞和突然过载。
还有几种方法可以提高HTTP连接性能:并行连接(通过连接多条TCP提高性能),持久连接(重用TCP连接,消除连接关闭时延),管道化连接(通过共享的TCP连接发起并发的HTTP连接),复用的连接(交替传送请求响应报文)
持久化连接即http头 connection: keep-alive。http1.0手动开启,http1.1后默认开启。
管道化连接就是持久化连接与并行连接的合并版