《网络是怎样连接的》-读书笔记

image
接从缓存服务器读出数据。此外,在⼤型⽹站中,可能还会配备将消息分布到多台Web服务器上的负载均衡器,还有可能会使⽤通过分布在整个互联⽹中的缓存服务器来分发内容的服务。经过这些机制之后,⽹络包才会到达Web服务器
第1章 浏览器⽣成消息——探索浏览器内部
了解浏览器是如何将消息委托给操作系统发送给Web服务器的,有什么意义?
1. 理解了向操作系统进⾏委托时的规则,我们就能明⽩做出某个委托时操作系统会给我们怎样的反馈,我们就了解了⽹络的潜⼒;为理解了向操
作系统进⾏委托时的规则,我们就能够明⽩做出某个委托时操作系统会给我们怎样的反馈,这可以说是相当于具体地理解了⽹络的潜在能⼒。
1.1 ⽣成HTTP请求消息
URL中没有携带⽂件名时,如何确认访问的⽂件?
服务器上可以事先设置好⽂件名省略时要访问的默认⽂件名,默认为index.html或default.html不过,没有⽂件名,服务器怎么知道要访问哪个⽂件呢?其实,我们会在服务器上事先设置好⽂件名省略时要访问的默认⽂件名。这个设置根据服务器不同⽽不同,⼤多数情况下是index.html或者default.htm之类的⽂件名汽车膨胀水箱
浏览器客户端向服务器发送请求的内容?
URI(对什么)+⽅法(进⾏怎样的操作)
客户端会向服务器发送请求消息(图1.4)。请求消息中包含的内容是“对什么”和“进⾏怎样的操作”两个部分。
内嵌模组
*Web服务器响应消息的内容?
1. web服务器完成⾃⼰的⼯作后,将结果存在响应消息中;
2. 响应消息 = 开头(状态码) + body(响应内容)*
收到请求消息之后,Web服务器会对其中的内容进⾏解析,通过URI和⽅法来判断“对什么”“进⾏怎样的操作”,并根据这些要求来完成⾃⼰的⼯作,然后将结果存放在响应消息中。在响应消息的开头有⼀个状态码,它⽤来表⽰操作的执⾏结果是成功还是发⽣了错误。
平面涡卷弹簧
*GET⽅法访问流程?
1. 在request中写上GET⽅法;
2. 在URI中写上存放⽹页数据的⽂件名“/dir1/file1.html”;
3. Web服务器接收到消息后,打开file1.html⽂件并读出⾥⾯的数据,然后将数据存放在reponse中,并返回给客户端;*
最常⽤的⼀个就是GET⽅法了。⼀般当我们访问Web服务器获取⽹页数据时,使⽤的就是GET⽅法。所谓⼀般的访问过程⼤概就是这样的:⾸先,在请求消息中写上GET⽅法,然后在URI中写上存放⽹页数据的⽂件
名“/dir1/file1.html”,这就表⽰我们需要获取/dir1/file1.html⽂件中的数据。当Web服务器收到消息后,会打
开/dir1/file1.html⽂件并读取出⾥⾯的数据,然后将读出的数据存放到响应消息中,并返回给客户端。最后,客户端浏览器会收到这些数据并显⽰在屏幕上。
*POST使⽤场景?
DNS解析器委托协议栈发送查询域名IP请求,⾛UDP?
接下来,消息经过⽹络到达客户端,再经过协议栈被传递给解析器(图1.12⑦⑧),然后解析器读取出消息取出IP地址1.3 全世界DNS服务器的⼤接⼒
域名存在层级关系,如“www.baidu”:
1. 域名中被.分割的每⼀段都是⼀个域标识,⽽且越靠右域层级越⾼,如“baidu”域就是“www.baidu”的上级域;
2. 因此,储存了域信息的DNS服务器也就有了上下级关系;
3. 另外,需要注意的是⼀个域的信息是作为⼀个整体存放在DNS服务器中的,也可以是多个域信息存放在⼀个DNS服务器中;⼀个域的信息是作
为⼀个整体存放在DNS服务器中的,不能将⼀个域拆开来存放在多台DNS服务器中。不过,DNS服务器和域之间的关系也并不总是⼀对⼀的,⼀台DNS服务器中也可以存放多个域的信息。
将管理下级域的DNS服务器IP地址注册到它的上级DNS服务器中:
这样就可以通过上级DNS服务器查询到下级DNS服务器的IP地址;
我们可以采⽤下⾯的办法。⾸先,将负责管理下级域的DNS服务器的IP地址注册到它们的上级DNS服务器中,然后上级DNS服务器的IP地址再注册到更上⼀级的DNS服务器中,以此类推超导限流器
真是互联⽹中加快DNS服务器响应⽅式1:
⼀台DNS服务器管理多个上下级域;
在真实的互联⽹中,⼀台DNS服务器可以管理多个域的信息
真实互联⽹中加快DNS服务器响应⽅式2:
DNS服务器可以缓存之前查过的域名,从⽽减少查询时间;
因为DNS服务器有⼀个缓存[插图]功能,可以记住之前查询过的域名。如果要查询的域名和相关信息已经在缓存中,那么就可以直接返回响应,接下来的查询可以从缓存的位置开始向下进⾏。相⽐每次都从根域起来说,缓存可以减少查询所需的时间。
*如何应对域名信息被缓存后,原来域名的注册信息发⽣了改变?窑链
1. DNS服务器会对缓存的信息设置⼀个有效期,如果过期,数据将会从缓存中删除;
2. 对于那些没来得及删除的域名,DNS服务器在对查询响应时,会告知客户端结果是来⾃缓存还是管理该域名的服务器;*
那就是信息被缓存后,原本的注册信息可能会发⽣改变,这时缓存中的信息就有可能是不正确的。因此,DNS服务器中保存的信息都设置有⼀个有效期,当缓存中的信息超过有效期后,数据就会从缓存中删除。⽽且,在对查询进⾏响应时,DNS服务器也会告知客户端这⼀响应的结果是来⾃缓存中还是来⾃负责管理该域名的DNS服务器。
1.4 委托协议栈发送消息
套接字描述符:
⽤来识别同⼀台计算机内部的套接字;
端⼝号:
⽤来帮助识别不同计算机上的套接字;如果说描述符是⽤来在⼀台计算机内部识别套接字的机制,那么端⼝号就是⽤来让通信的另⼀⽅能够识别出套接字的机制[插图]。
*IP地址和端⼝号:客户端和服务器之间⽤来识别对⽅套接字的机制;
1. 建⽴链接时,服务端端⼝是根据应⽤的种类事先规定好的,如web是80,电⼦邮件是25;
2. 建⽴链接时,客户端在创建套接字时,协议栈会为这个套接字随便分配⼀个端⼝;*
,⾸先,客户端在创建套接字时,协议栈会为这个套接字随便分配⼀个端⼝号[插图]。接下来,当协议栈执⾏连接操作时,会将这个随便分配的端⼝号通知给服务器
*客户端是如何接受消息的?
1. 调⽤read接⼝指定⽤户空间的内存地址作为接收缓冲区;
2. 当Web服务器返回响应后,read委托协议栈完成接收消息;
3. read将接收到的响应消息存放到接收缓冲区(⽤户空间);*
调⽤read时需要指定⽤于存放接收到的响应消息的内存地址,这⼀内存地址称为接收缓冲区。于是,当服务器返回响应消息时,read就会负责将接收到的响应消息存放到接收缓冲区中。由于接收缓冲区是⼀块位于应⽤程序内部的内存空间,因此当消息被存放到接收缓冲区中时,就相当于已经转交给了应⽤程序。
*浏览器向Web请求消息后,断开链接过程如下:
1. 根据Web使⽤的HTTP协议规定,Web服务器应该主动执⾏断开操作;
2. 断开操作传达到客户端后,客户都安的套接字也会执⾏断开;
3. 浏览器调⽤read再次接收数据时,会被告知连接已断开,浏览器也会进⼊断开阶段;*
太阳能淋浴器Web使⽤的HTTP协议规定,当Web服务器发送完响应消息之后,应该主动执⾏断开操作[插图],因此Web服务器会⾸先调⽤close来断开连接。断开操作传达到客户端之后,客户端的套接字也会进⼊断开阶段。接下来,当浏览器调⽤read执⾏接收数据操作时,read会告知浏览器收发数据操作已结束,连接已经断开。浏览器得知后,也会调⽤close进⼊断开阶段。
2.1 创建套接字
传输层:
1. 对数据进⾏拆包,加上TCP消息头
2. 涉及协议:TCP、UDP
⽹络层:
3. 对传输层下发的数据帧进⾏进⼀步切分成⽹络包,加上IP消息头

本文发布于:2024-09-20 16:52:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/223922.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务器   消息   缓存
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议