这篇文章上次修改于 189 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
计算机网络笔记2——web和http
网络应用程序体系结构
网络应用程序体系结构
有一个常开的主机作为服务器,会有多个客户机对服务器进行请求。客户相互之间不直接通信,通过服务器作为中介进行数据的交流。为了满足大批量的请求,通常建立拥有大量服务器的数据中心。
P2P 体系结构
对于专用服务器有最小的(或者没有)依赖,P2P是一种客户主机直接连接,这些主机被称为对等方
它有自拓展性:网络能够随着节点(即参与网络的计算机或设备)的增加而自动扩展,负载均衡,资源共享。
应用层
进程通过软件接口在互联网上进行报文接受发送,这个软件接口称作套接字。
- 数据传输:运输层协议的 可靠数据传输 和 被容忍丢失的应用
- 时间敏感:要求严格的时间同步和实时响应,例如视频会议,或者游戏
- 宽带弹性:能够根据需求动态调整资源分配的应用程序,自动适应宽带
HTTP:先发起一个TCP连接。一旦建立,该进程就可以通过套接字接口访问TCP
无状态协议:是一种在通信过程中不保留客户端状态的协议,每个请求是独立的,不保存关于客户的任何信息,HTTP是一个无状态协议。
非持续连接和持续连接
非持续连接:每次进行一次通信时都会建立连接。完成传输就会关闭。要新的数据传输时,必须重新建立连接。
持续连接:也称为长连接,是指客户端和服务器之间建立的连接保持打开。可以完成多个请求,直到显式关闭或超时。
HTTP请求报文
GET /somedir/page ・html HTTP/1.1
Host: www someschool•edu
Connection: close
User-agent: Mozilla/5•0
Accept-language: fr
第一行为请求行: 方法字段 + URL字段 + HTTP版本字段
其它为首部行:
Host:指定请求的目标主机名
Connection:指示是否在完成当前请求后关闭网络连接,1.1默认keep-alive 持久连接
User-agent:提供有关客户端软件的信息
Accept-language:告诉服务器客户端希望接收的语言版本
HTTP的状态设计:cookie
http是无状态的,但cookie技术可以用于记录状态。而负责保存cookie和在请求的时候使用对应的cookie的责任就交给了浏览器。
服务器可以在返回的请求使用 “Set-cookie”使客户浏览器保存cookie并在后序的报文中增加“Cookie”首部行。
web缓存
web缓存器也叫代理服务器,会将请求过的数据(如HTML页面、图片、JavaScript文件等)存储,当用户再次请求相同的数据时,缓存器会直接返回缓存中的数据,而不是再次从原始服务器获取。这可以显著提高响应速度和降低网络流量。
If-Modified-Since
是HTTP协议中的一个请求头字段,用于实现协商缓存(conditional request)。它允许客户端告诉服务器已经缓存了某个资源,并且缓存的版本是自指定日期以来的版本。如果自该日期以来资源没有被修改,服务器可以返回304 Not Modified状态码。
第一次获取资源(response)
HTTP/1.1 200 OK
Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT
Content-Type: text/html
Content-Length: 1024
后续请求
GET /index.html HTTP/1.1
Host: example.com
If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT
-
资源未修改 : 返回 HTTP/1.1 304 Not Modified
-
资源已修改:如果资源自指定时间以来已被修改,服务器返回200 OK状态码,并且发送更新后的资源内容,同时更新
Last-Modified
时间。yHTTP/1.1 200 OK Last-Modified: Thu, 22 Oct 2015 10:00:00 GMT Content-Type: text/html Content-Length: 2048 (更新后的HTML内容)