00:00
好,下面我们来看IP协议的版本。那么首先我们要清楚啊。我们的客户端向服务端发出请求。他发请求之前,首先要创建一个。TCP连接?TCP连接是什么?Transfer control protocol传输控制协议。其实这个大家应该听说过啊,TCPIP这两个协议结合一块以后,就是我们的什么Internet。就是英特那里协议啊,所以呢,呃,这个大家应该是听说过的。这是个连接啊,这也是一个协议,其实这就就是一个协议啊,TCP协议嘛,传输控制协议,那么首先要创建一个TCP连接。那么当客户端和服务端通讯结束的时候呢?那ttp连接就被关闭了。
01:04
那么这个过程。这个连接。就是基于什么IP协议的。而我们HTTP协议真正用于通讯上的。版本有两个。1.0和1.1,当然一共经历了三个版本,还有个0.9B协议里边还有0.9,但这个0.9呢,它没有真正用于通讯上。现在这两个协议。那么都在使用啊,都在使用,只不过我们现在浏览器默认。使用的it。版本是1.1。啊,1.0的在一些特殊应用中使用。在这给大家说明一点啊,就是我们刚才说到这个TCP连接和关闭。那么从我们计算机、网络、通讯。
02:02
这个细节上来说,就是这要从这门课,这也是一门计算机专业的课程啊,计算机网络通讯,从这个细节上来说呢,我们TCP连接。它的建立需要经过三次握手,而TCP连接的关闭需要经四次通讯,这是很细节的东西了。我们一会儿也会说到连接的。建立和关闭,但是我们就不再说这么细了,不再说这么细了啊呃,这是大家先知道这么一点,我们就是原理上的。给大家分析一下,因为我们不是学网络通讯的啊。好,我们首先来看1.0版本。这个一点儿零版本呐。它的特点是什么?一次请求,一次响应。什么意思,就是我们当然了,呃,不管是1.0还是1.1啊,呃,需要大家注意的就是IP协议里边啊,就是请求和响应肯定是成对出现的。
03:13
一个请求肯定对应一个响应。而我们p1.0这个版本呢,就是一个。TCP连接只能包含一个请求、一个响应。当。我我这个浏览器要发出一个请求的时候是吧,我发出了一个请求,发请求之前先要创建连接。诶,我们看这个图。你看创建TCP连接,紧接着连接创建了,我就发出请求。浏览器发出请求。然后服务器接收到请求以后给出响应,响应一结束,你注意马上就关闭了TCP连接了。
04:00
他马上就关闭了啊,当然我说了这个关闭这个过程还是比较复杂的啊。怎么复杂了?这个关闭是需要双方都关闭的,你浏览器需要发出一个请求。我要关闭连接了。服务器收到以后会给一个响应,然后呢,服务器也要发出一个关闭请求的连接,呃,这个关闭请呃关闭请关闭,关闭连接的请求给谁给浏览器,然后浏览器再给出一个响应啊这样的话不是四次通信吗?需要经过这样的四次啊,这个连接才能关闭,所以是比较复杂的,所以我们这就用了一句话,就关闭TCP连接。那你看一下。我这一次TCP连接从连接到关闭,这里面就包含了一次请求和响应。并且需要注意的是什么?对于TP1.0协议。
05:05
你如果说这个浏览器要发出多个请求,比如说。大家看我们刚才的这个。我们浏览器发出了几次,发出来是不是四个请求啊,如果使用的是IP 1.0协议意味着什么?这个请求发出去了,然后。服务端给出一个响应了,紧接着再发他。再拿到响应再发他,再拿到响应再发他。而这四个请求就创建了四个TCP连接。并且是只有当。请求的响应,这次请求的响应到达了客户端以后,你才能发送另外一次请求,也就是说,只有当第一次请求的那个连接关闭了以后,你才能再建这个连接,这个连接关闭了以后才能建这个连接。
06:03
所以这个过程。效率是很低的。那你想想效率肯定很低啊,我真正咱们看这个图真正有用的啊,就是这一次请求和这一次响应。可是你建连接。刚才说了建连接需要什么?三次握手关连接需要四次通讯,而这里边三次握手加四次通讯,这里边儿只有这两次才是有用的了。所以它效率是很低的。啊,这是我们说的1.0协议啊,在1.0协议这儿说了。严重影响了服务器的响应速度,降低了用户体验。好,紧接着1.1这个版本就出现了。一点儿一版本。
07:01
对一点儿零进行了升级。它是一种持久连接,什么意思,需要注意啊,你看这儿。这个1.0啊,它是个非持久连接,它不能。不能一直待着,这不能一直是啊,这个连接一直保持。那全球形象结束,马上关闭,而这个1.01.1不同,它是个持久连接。什么叫持久连接?在一个TCP连接上,可以传送多个IP请求和响应。你看看着这个图。你看。一个连接是吧,创建连接,这是不是有一个关闭啊,这中间发出了。N次请求,N次响应。你注意是N次请求,N次请求,并且有一点。
08:04
这N次请求啊。你可以就是第二次请求他的发出,不受第一次请求的那个响应的。影响。并不是说我第一次请求,第一次请求发出去了,第一次的响应拿到手以后,浏览器才能发送第二次请求,他不是这样的,你第一次请求发出去了。但是响应还没接收到,但你已经可以再发送第二次请求,第三次请求,第四次请求。你可以再往外发送了。就是发请求和响应之间没有这种必然的联系了。但有一点。什么呢?响应的顺序,服务端给出相应的数量肯定和。
09:00
请求的数量是一样的,刚才我们说了,IP协议里边一个请求肯定对应一个响应,它肯定是一对一的。另外它的顺序也是。一致的。它的顺序肯定也是,第一次请求对应的是第一次响应,第二次请求对应的是第二次响应。所以啊,这是它不同的地方啊,这是它不同的地方。那么这里边儿就说到。关闭了。说到这个关闭,这关闭啊,它的关闭就稍微复杂一些了,这关闭怎么关闭的呢?什么时候关闭,你像1.0的时候关闭好说。什么时候关闭?你这样只要我浏览器啊。收到了服务器给我的响应了,马上我就可以申请关闭连接了。而1.1什么时候关闭呢?这这么多请求响应。
10:02
我什么时候知道你?这个这些请求就发送完毕了呢,他其实在真正发送请求之前。在我们创建TCP连接的时候,他就已经做了一个工作了,将你当前浏览器中所要发出的所有的请求的数量已经做了统计了。当然,这所有请求的数量包括什么?包括一次。手工提交的请求和。N次。浏览器自动发出的请求,什么叫浏览器自动发出请求啊,我们刚才说了呀,像图片呢,CSS啊,GS啊,像这些都是浏览器自动发出的请求啊。他把这些数量先统计了。统计了以后,我就挨个发呗。比如我一共统计了几个,五个,一共发五个请求,那好了,一个两个,三个,四个,当第五个发送出去以后。
11:06
那表示我的所有的请求都已经发送完毕了,紧接着我在等什么浏览器,我这等着服务器给我的响应。12345,我也都收到了,好了,紧接着浏览器会再一次发出关闭连接的请求。这是又开始了呢,四次通讯了,关闭TCP连接的四次通讯。所以。这个请求不是这个TCP连接的关闭啊。他也是有一些复杂的,当然这里边儿还涉及到一个什么东西。这里面还涉及到了一个参数,叫这所有的请求大家看啊。啊,他让提示更新的,我们这个版本是不要更新的啊,这个这个这个不要更新它。
12:08
更新了,我们这个I watch就不能用了啊,那大家注意。你注意看什么,看这这是不是有个connection。这是不是有keep alive什么意思,就这请求啊,这这四次请求嘛,对吧,这四次哎,你看一下我们现在用的协议是什么协议。默认的啊,这是1.1IB1.1协议啊。那这请求,一旦这次请求发出去了,他会告诉这个,这是请求参数啊,这个请求参数。他会告诉父亲,诶,我这个链接啊,要keep life就是。这个连接要保持。保持连接。保持通讯状态,你可不要过关了啊。
13:00
哎,我这个发出去的时候告诉服务器不要给我关闭。这个发出你看是不是也一样。是不是也一样?你看,Keep alive。那有同学说了,这最后一次还为什么要keep alive?这最后一次,他后边还有啊,还有谁的还有。就是也是浏览器自动发出去的那四次握手啊。刚才我们说到那四次握手,就是浏览器,它会自动发出去要关闭。TCP连接的那个请求。所以这个。里边就涉及到一个。Connection。这是请求里面携带的一个参数。当然浏览器发出的那个用于关闭。Ttp连接的那个请求里边它也有connection,那个connection它的值就是close,要让它关闭了,不过那个请求在it watch下是看不到的,那个在it watch里面啊是看不到。
14:13
那个请求的好了。啊,这是。1.1 1.1里边还有什么这点需要注意。他说1.1 1.0里边不支持。Host请求头属性host是什么?看一下。你看这儿。Host。这谁local host冒号8080是吧,诶我们前面是不是刚刚给大家说过local host。这什么我们的虚拟主机啊?对不对。这是虚拟主机,那么1.0里边是不支持后的请求头属性的。
15:05
它里边没有host这个属性,那就意味着它不支持虚拟主机。它不支持虚拟主机,什么意思呢?大家应该知道啊,我们在地址栏里边输入了一个域名。比如我输入3W点百度点。com。他首先会做什么,会到我们的DNS里边去找,找这个域名所对应的。IP,找到这个IP是不是就找到了百度的服务器主机了,我找到这个主机了,是不是就可以访问了?对吧。根据IP,就相当于把这个就直接变成IP来访问了。但1.1你注意1.1里边添加了一个host,添加一个host干嘛呢。
16:06
添加host,我们继续说刚才那个啊,访问百度。访问百度,如果说我这儿使用的是1.1。我把这个。域名转变成了IP,我找到了百度的服务器了。好。找到百度服务器,百度服务器里边放着N多个。虚拟主机。那么你访问哪一个呢?我们自己是不是也会建立虚拟主机啊,那现在你来访问哪一个呢?你的这次请求访问哪一个虚拟主机呢?有同学说。是不是host吗?我这访问的是host,或者说我访问的是3W点百度点。com这个虚拟主机啊。不错,但如果你是在HTTP1.0里边。
17:03
你的那个域名已经没了,3W点百度点。com这个域名已经没了。因为这个域名已经被DNS给他转变成了IP了,他没没有保留下来那个域名,所以他只能使用IP来访问你的。那个主机上那个IP的那个主机上默认的那个主机。这也就是它上面只能放一个。域名。而如果说我们用的是1.1。我仍然是通过DNS找到了。通过DS找到什么了,找到这个什么东西了,呃,这个这个这个这个。通过DNS找到这个IP了,通过这个DNS找到IP,找到IP是不是就找到这个百度的主机了。
18:01
紧接着我百度主机里边放着N多个。虚拟主机你访问哪一个呢?诶,这时候我访问哪一个,在我的请求头部,你注意这个是请求头部信息,请求头部信息里边有一个host。诶,就告诉你,哎,我就访问这个主机啊,访问这个虚拟主机。所以我们1.1。HTTP1.1。这个版本它支持增加了这个host的请求投资段以后啊,这个参数以后,那么它就支持了虚拟主机的访问。这是。这样的话,就就怎么使我们的硬件设备就得到了充分的利用,否则1.0的时候,那是。一个域名确确实实就对应一个真实的主机。
19:03
而1.1呢,就不用了,一个IP就可以对应N多个主机。充分利用了我们的硬件设备。当然它里边又增加了connection是吧,这是1.1里边增加的啊,1.0里边没有1.0,它就不用什么keep your life,这个connection keep alive响应一结束马上就关闭,它就用不着这个东西啊,用不着它。OK,这是1.0和1.1,那么这两个版本我们对比一下啊,共同点是什么?请求与响应是成对出现的。一个星球肯定对应一个响应。那我们看一下。1.0。啊,1.0协议里边连接属于非持久连接一次。TCP连接只能进行一次请求与响应。
20:05
而对应的1.1呢,它是持久连接,一个TCP连接上可以包含。多少是多个请求与响应。是吧,然后。一次请求与响应。对应一个TCP连接。这个好像跟上面这个意思一样不一样啊,他说这个是一般情况下,一个页面中的请求与响应对应一个TCP连接。什么意思呢,这两个就让你这样对比的啊,如果你是IP1.0。是吧,你点一次。超链接它就创建了一次,就创建了一个TCP连接。你点一次超链接,你点了一个。Form表单的提交按钮。它就创建一个TCP连接,但。
21:00
我们的1.1。一般情况下是什么?一个页面里边的请求与响应就建立一个TCP连接,不是你点一个。超链接就怎么样,而是你这儿提交一个手工的链接。他会。把所有的连接,所有的自动。产生那些?请求通通放到这一个连接里边。好,再看它客户端,只有在接收到服务端上一次请求以后,客户端才会发出第二次请求,也就是说第二次请求的发出受到了第一次请求那个响应的限制,这是1.0里边的啊,只有第一次的请求的那个响应到达了以后,你客户端才能发出第二次请求。而。
22:00
这个一点儿一。请求和响应没必要。或者说响应。对于请求的发出。没有影响。响应的收到对请求的发出没有任何影响。第四个。1.0不支虚拟主机,刚刚说过吧,这个就不再细说了,而1.1呢,支持虚拟主机的访问。那再看最后一个。1.0协议里边,客户端接收到服务端的响应以后马上关,就是说这个连接的关闭,TCP连接的关闭是什么时候进行的。这两个也是不同的,这个是响应接收到以后马上关闭,而这个呢。这个是最后一次请求的响应,到达了以后才会关闭TCP连接。诶,这是这两个版本的协议,进行一个详细的对比。
我来说两句