学习笔记:网络技术Ch2.Web Architectures

(来源:notes of course Web Technology.Ch2.Web Architectures)


052_001.jpg

这一章主要讲一下Web的各个结构,先来看一个简单的Client-Server的网络结构

052_002.jpg

发生了什么?

  • 用户在地址栏输入了http://www.vub.ac.be
  • Domain Name Service(DNS)将域名转化为IP address(134.184.129.2)
  • 用户和服务器之间创建了一个TCP连接
  • 在TCP连接中,用户发送了一个HTTP Request
  • 用户在浏览器中看到服务器发送的HTTP Response

在这里出现了许多结构部分,Client、Server、DNS、IP address、TCP Connection、HTTP。

Server(服务器):

  • 用于建立连接
  • 接收和处理HTTP Request
  • 拾取资源
  • 制作发送HTTP Response
  • 用户登录的操作

最常用的服务器:nginx、Apache HTTP Server

除此之后,其实有一些物件内置了服务器:打印机、wifi路由器

Uniform Resource Identifier(URI):

  • 用于认证(identify)资源
  • 有两种常见的URL和URN

052_003.jpg

HTTP Protocol(HTTP协议):

  • 是一个你问我答的模型
  • 必须先问(request),才能有回答(response)
  • Stateless(connectionless)
  • HTTPS是进化版,可以用于加密连接

HTTP的信息构成:

Start line,header field(CRLF),blank line,(message body)

052_004.jpg

接下来看一下HTTP Request和HTTP Response的start line的组成:

052_005.jpg052_006.jpg

然后,HTTP无论request还是response,有一个相同的Header fields(general headers),然后是各自的request headers,response headers,entity headers,extension headers。

常用的Header:

052_007.jpg

比较特别的是:

If-Modified-Since:

大家都知道客户端浏览器是有缓存的,里面存放之前访问过的一些网页文件。
例如IE,会把缓存文件存到“C:\Documents and Settings\zh2000g\Local Settings\Temporary Internet Files”
这样类似的目录里。
其实缓存里存储的不只是网页文件,还有服务器发过来的该文件的最后服务器修改时间。If-Modified-Since是标准的HTTP请求头标签,在发送HTTP请求时,把浏览器端缓存页面的最后修改时间一起发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较。如果时间一致,那么返回HTTP状态码304(不返回文件内容),客户端接到之后,就直接把本地缓存文件显示到浏览器中。如果时间不一致,就返回HTTP状态码200和新的文件内容,客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示到浏览器中。

HTTP的请求头标签 If-Modified-Since

以上大致介绍了一个简单的网络结构,下面可以对该结构进行一些构件的增加以增强某些特性:

Proxies(代理):

052_008.jpg

听名字大概就知道什么意思,是用户和服务器之间的中间人,在服务器端看,这家伙就是一个用户,而在用户端看来,这个家伙就是服务器。

  • 可以用来检测两边都发了些啥消息(monitorring)
  • 检测到了敏感消息,可以过滤(filtering)
  • 当然,也可以用来掩盖用户端信息,用于匿名访问(anonymous browsing)

Caches(缓存):

052_009.jpg

算是一种特殊的proxy,他会和服务器沟通,把常用的网站保存下来,这样以后用户访问,就可以不走那么远的路去服务器。

HTTP协议中可以控制用不用caches:

052_010.jpg

还记得那个If-Modified-Since的Header吗?

在这里就有用了,本地缓存就是靠这个header返回的内容决定是否更新的!

Tunnel:

052_011.jpg

这个在高级信息网络里面有提到,建立在协议之上的协议,例如VPN:

实质上是对原来的东西加密,使得他不被下方的协议看到内容,也就是像有一个隧道一样。

Gateways(网关):

052_012.jpg

就是一个转发器,可以把数据从HTTP变成FTP,但无法改写。

代理,网关,隧道,有什么区别与联系?

前面提到,HTTP是一个stateless的协议,通常来说,是无法让两端建立会话的(session),但是劳动人民仍然想到了方法使得双方可以有state:

  • 用IP地址来认人:但是IP地址通常底下有很多设备
  • 用login–>HTTP authenticate header
  • 每个人访问之后,重写URL:太麻烦。。
  • cookies—好方法

Cookies:

可以理解为,每次user发送HTTP时,往里面加个礼物送给服务器,服务器见到礼物了,就认识这个人了。

052_013.jpg


学习笔记:网络技术Ch2.Web Architectures
https://yiyuwang.be/2020/12/29/2020-12-29-340505341/
作者
StevenWong
发布于
2020年12月29日
许可协议