Web前端培训第一讲:HTTP协议讲义完整版
目录
0. 预备知识 (1)
0.1 OSI层次模型与TCP/IP协议栈 (1)
0.2 IP地址 (2)
0.3 TCP/IP通信方式 (2)
1. HTTP协议通信过程 (2)
1.1 URL自动解析 (2)
1.2 获取IP,建立TCP连接 (3)
1.3客户端浏览器向服务器发出HTTP请求 (3)
1.4 Web服务器应答,并向浏览器发送数据 (3)
1.5 Web服务器关闭TCP连接 (3)
2. HTTP协议之URL (4)
2.1 HTTP协议概述 (4)
2.2 HTTP之URL (4)
2.3 URL编码 (5)
3. HTTP协议之请求 (8)
3.1 HTTP请求的结构 (8)
4. HTTP协议之响应 (9)
5. HTTP协议之消息报头 (10)
5.1 普通报头 (10)
5.2 请求报头 (11)
5.3 响应报头 (12)
5.4 实体报头 (13)
6. 需要提前了解的工具HttpAnalyzer (14)
7. 核心参考资料 (14)
0.预备知识
0.1OSI层次模型与TCP/IP协议栈
CCNA视频教程:/playlist_show/id_767428.html
重点学习第二讲OSI层次参考模型与第三讲TCP/IP协议栈。
0.2IP地址
Windows Server 2003从入门到精通系列之:TCP/IP协议基础。
0.3 TCP/IP通信方式
●按Client和Server的连接数量分类
1)一个Client方连接一个Server方,或称点对点(peer to peer)。
2)多个Client方连接一个Server方,这也是通常的并发服务器方式。
3)一个Client方连接多个Server方,这种方式很少见。
●按连接方式分类
1)长连接
Client方与Server方先建立通讯连接,然后再进行报文发送和接收,在通信过程中连接不断开。
2)短连接
Client方与Server每进行一次报文收发交易时才进行通讯连接,通讯完毕后立即断开连接。
●按发送接收方式分类
1)异步
报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况:
(1)异步双工:接收和发送在同一个程序中,有两个不同的子进程分别负责发送和接收
(2)异步单工:接收和发送是用两个不同的程序来完成。
2)同步
报文发送和接收是同步进行,既报文发送后等待接收返回报文。
1.HTTP协议通信过程
当我们在浏览器的地址栏输入“”然后按回车,这之后发生了什么事,我们直接看到的是打开了对应的网页,那么内部客户端和服务端是如何通信的呢?
1.1 URL自动解析
HTTP URL包含了用于查找某个资源的足够信息,基本格式如下:HTTP://host[“:”port][abs_path],其中HTTP表示桶盖HTTP协议来定位网络资源;host表示合法的主机域名或IP地址,port指定一个端口号,缺省80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。
例如:输入;浏览器会自动转换成:/
1.2 获取IP,建立TCP连接
浏览器地址栏中输入"/"并提交之后,首先它会在DNS本地缓存表中查找注1,如果有则直接告诉IP地址。如果没有则要求网关DNS进行查找,如此下去,找到对应的IP后,则返回会给浏览器。
当获取IP之后,就开始与所请求的Tcp建立三次握手连接,连接建立后,就向服务器发出HTTP请求。
注1:在Windows操作系统环境下,解析域名的过程有很多步骤,详细内容可以参Windows Server 2003从入门到精通系列之:DNS协议基础。
1.3客户端浏览器向服务器发出HTTP请求
一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令,接着以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
1.4 Web服务器应答,并向浏览器发送数据
客户机向服务器发出请求后,服务器会客户机回送应答,
HTTP/1.1 200 OK
应答的第一部分是协议的版本号和应答状态码,正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。
Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
1.5 Web服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接注2,然后如果浏览器或者服务器在其头信息加入了这行代码
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
注2:关闭连接也可以由客户端来要求。
2.HTTP协议之URL
2.1 HTTP协议概述
http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。
关键词:请求与相应模式、无状态的、常基于TCP的应用程协议、持续连接的机制。
请求与相应模式:客户端发出一个请求,服务器给出一个应答。
无状态的:指http协议本身不会在多次请求间保持状态。
常基于TCP的应用程协议:TCP/IP是事实上的网络通信工业标准,但并不是唯一,因此是“常”。
持续连接的机制注3:指的是Http1.1版本,通信方式已经可以为“长连接”。
注3:http协议中规定了一个特殊规则:浏览器对一个服务器不能同时打开两个以上的连接(IP+Port)。这个规则应该是为了保护服务器不会很容易被洪水攻击。主流浏览器包括IE都实现了这个规则。
DEMO:用IE下载一个网站的文件,只能同时打开2个,第三个就需要等待。
附注:这个规定是对IE而言是精确到域名而不是IP。
相关内容的详细说明:
HTTP协议1.1中文版:
/Class/HTTP/0772522080738754597.html
请查看8.1.4节最后的说明。
其中节选:
另外:Iframe与DIV+ajax实现方式效果差别。
我们知道ERP和桌面部件大多数都是使用IFrame加载的。那么它的缺陷非常的明显,因为iframe指定src的方式,默认是使用“同步长连接”。因此当iframe的数量多了之后,连接数就会超过2,因此后面的请求必须等待。如果加载的iframe服务端处理时间过长,则整个客户端的浏览器一直被阻塞住。
而DIV+ajax的方式则不同。Ajax发出的请求最后都由ajax Engine发出,即连接由ajaxEngine 管理(发送和接收数据)。因此,DIV+ajax异步请求不会出现IE页面阻塞现象。
2.2 HTTP之URL
HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:http://host[":"port][abs_path]
http表示要通过HTTP协议来定位网络资源;