计算机网络(应用层)

Web

Web 是一个引起公众注意的因特网应用,它极大地改变了人们与工作环境内外交流的方式
Web最具有吸引力的是他的按需操作。当用户需要时,就能得到所想要的内容。这不同于无线电广播和电视,迫使用户只能收听、收看内容提供者提供的节目

2.2 WEB和HTTP

2.2.1 HTTP概述

Web 的应用层协议是超文本传输协议 (HyperText Transfer Protocol , HTTP) ,它是 Web的核心
HTTP 由两个程序实现:一个客户程序和一个服务器程序,客户程序和服务器程序运行在不同的端系统中,通过交换HTTP 报文进行会话。 HTTP 定义了这些报文的结构以及客户和服务器进行报文交换的方式。

Web 页面 (Web page) (也叫文档)是由对象组成的
一个对象( object) 只是一个文件,它可以是一个 HTML 文件、一个 JPEG 图形、一个 Java 小程序或一个视频片段这样的文件,且它们可通过一个 URL 地址寻址
多数 Web 页面含有一个 HTML 基本文件( base HTML file) 以及几个引用对象
HTML 基本文件通过对象的 URL 地址引用页面中的其他对象,每个 URL 地址由两部分组成 : 存放对象的服务器主机名和对象的路径名
例如, URL 地址 http:// www. someScbool. edu/someDepartment/ picture. gif ,其中的 www. someSchool. edu 就是主机名, /someDepartment/ picture. gif 是路径名
Web 浏览器( Web browser) (例如 Inlernel Explorer Firefox) 实现了HTTP 的客户端
Web 服务器( Web server) 实现了 HTTP 的服务器端,它用于存储 Web 对象,每个对象由 URL 寻址

HTTP使用TCP作为它的传输层协议;因此是可靠数据传输,HTTP不用担心数据丢失
HTTP客户首先发起一个与服务器的TCP连接,需要注意的是,服务器根据请求作出响应,但是不存储任何关于该客户的状态信息;也正因为这样,HTTP被称为无状态协议。同时,Web使用了客户端-服务器的应用体系结构;其中web服务器总是开着的

2.2.2 持续连接和非持续连接

在因特网应用程序中,客户端和服务器将在很长的时间范围里通信;应用程序将根据自身的特点,选择以规则的间隔周期性性发出请求也可以间断性一个个发出请求。当通信是使用TCP协议时,服务器端需要做出一个决定:这些请求是使用一个TCP连接完成还是通过独立的TCP连接完成。如果采取前一个方法,则称应用程序使用持续连接,如果使用后一种方式,则称为非持续连接。

HTTP既可使用持续连接也可以使用非持续连接。尽管HTTP在静默情况下使用持续连接

  • 采用非持续连接的HTTP

使用非持续连接时,每个TCP连接在服务器发送一个对象后就会关闭,也就是每个TCP只传送一个请求报文和响应报文

  • 采用持续连接的HTTP
    非持续连接必须为每个请求新建一个TCP连接,而每个TCP连接将占用系统资源,包括缓冲区和变量等,这样服务器的负担就很重了。第二,一个对象将通过两个RTT的时延才能交付。

如果使用持续连接,那么服务器在发送响应报文后将保持该TCP打开,后续客户端可以使用该连接来向服务器发出请求。不但一个完整的页面可以通过同一个连接传送,同一台服务器上的多个页面也可以通过同一个连接发送。这就提高了效率;

一般来说,如果一条连接在一定的时间间隔后没被使用的话,就会被关闭。HTTP默认使用的是带流水线的持续连接。

2.2.3 HTTP报文格式:请求报文和响应报文

  • 请求报文
    在这里插入图片描述
    一个请求报文具有至少一行的内容。请求报文的第一行称为请求行,其后继的各行被称为首部行。请求行包含三个内容:方法字段、URL字段、HTTP版本;其中方法字段可为:GET、POST、PUT、DELETE、HEAD等。URL字段里可以传递请求对象的标志;

首部行包含:

  1. 是否在发送完响应报文后关闭TCP连接的Connection;
  2. 请求的主机地址(该头部信息被Web高速缓存所要求);
  3. 浏览器版本;
  4. 可接受的语言等头部信息;

在首部行之后一个空行,之后便是请求的“实体体”。该实体体可以在POST方法里传递Form表单内容或者传递其它一些二进制流数据等。值得注意的是,表单也不一定必须使用POST方法。如果使用get,实体体为空,会显示在url中。

Head类似于get方法,将会用一个http报文进行响应,但是不返回请求对象,经常用作调试跟踪。
put方法允许用户上传对象到指定的Web服务器上指定的路径。
Delete方法允许用户或应用程序删除Web服务器上的对象。

  • HTTP响应报文格式

在这里插入图片描述
响应报文总体上也分三个部分:

  1. 第一部分是状态行,包含HTTP版本、状态以及状态信息等内容;
  2. 第二部分是首部行,包含发送日期、服务器类型、上一次修改请求资源的时间、内容的类型等内容。
  3. 第三部分是实体体。实体体包含请求对象本身。

这里的Date是从文件系统中检索到该对象,插入到响应报文,并发送该响应报文的时间。

  • 常见状态码
  • 1xx表示通知信息,如请求收到了或正在进行处理
  • 2xx表示成功,如接受或知道了(例:200:请求成功 处理方式:获得响应的内容,进行处理)
  • 3xx表示重定向,如要完成请求还必须采取进一步的行动(例:301:请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源 处理方式:重定向到分配的URL)
  • 4xx表示客户的差错,如请求中有错误的语法或不能完成(例:400:非法请求 处理方式:丢弃;404:没有找到 处理方式:丢弃)
  • 5xx表示服务器的差错,如服务器失效无法完成请求(例:505:服务器不支持请求报文使用的http版本)

2.2.4 用户与服务器的交互:Cookie

前面提到,HTTP是无状态协议,但是Web站点为了识别用户身份或者限制用户访问的时间或者将用户访问的内容同用户身份相关联,为此HTTP使用Cookie技术,它允许站点对用户进行眼踪

  • Cookie技术包含4个组件:
  1. HTTP响应报文里增加一个关于Cookie的首部行;
  2. HTTP请求报文里增加一个关于Cookie的首部行;
  3. 用户端系统保留一个Cookie文件,由浏览器保存维护;
  4. Web站点建立Cookie和用户身份的关联;在这里插入图片描述
    cookie的工作过程
  5. Susan 从家中 PC 使用 IE浏览器上网,她首次与 Amazon com 联系 我们假定过去她已经访问过 eBay 站点
  6. 当请求报文到达该 Amazon Web 服务器时,该 Web 站点将产生一个唯一识别码,并以此作为索引在它的后端数据库中产生一个表项(1678)
  7. 接下来Amazon Web 服务器用一个包含 Set- cookie: 首部的HTTP响应报文对 Susan 的浏览器进行响应,其中 Set- cookie 首部含有该识别码
  8. 当Susan 的浏览器收到了该 HTTP 响应报文时,它会看到该 Set- cookie: 首部。该浏览器在它管理的特定 cookie 文件中添加一行
  9. 当 Susan 继续浏览 Amazon 网站时,每请求一个 Web 页面,其浏览器就会从该 cookie 文件中获取她对这个网站的识别码,并放到 HTTP 请求报文中包括识别码的 cookie 首部行中

在这种方式下, Arnazon 服务器可以跟踪 Susan 在Am皿on 站点的活动 尽管Amazon Web 站点不必知道 Susan 的名字,但它确切地知道用户 1678 按照什么顺序、在什么时间、希望购买的物品列表。

2.2.5 Web缓存

Web缓存器也被称为代理服务器,它代表初始web服务器来满足HTTP请求。它有自己的存储空间,并在存储空间里保持有最近请求过的对象的副本;可以通过配置浏览器,将所有指向初始服务器的请求首先指向代理服务器。

当代理服务器收到一个HTTP请求后,它将检查本地是否缓存过该对象,如果缓存过该对象,将检查是否过期,如果没有过期,则直接将该对象返回给浏览器;如果本地不存在或者存在已过期,则代理服务器将根据请求报文里的Host首部行以及请求行里的URL字段向初始服务器发出请求,然后将响应对象返回给浏览器并缓存在本地。

通常,代理服务器与客户端的通信速度要快于初始服务器与客户端的连接速度;Web代理服务器可以大起大减少对客户请求的响应时间;而且,缓存器能从整体上大大降低因特网上的web流量,从而有助于提高所有应用程序的性能;

通过使用内容分发网络(Content Distribution Network),Web缓存器正在因特网中发挥越来越重要的作用

Web缓存即是客户又是服务器

2.3 文件传输协议FTP

在一个典型的FTP应用中,用户通过FTP代理和FTP交互。用户首先提供远程主机的主机名,使得FTP用户代理建立一个到远程主机的TCP连接,之后需要用户提供用户名和密码,它们作为FTP命令的一部分在TCP连接上传输;一旦服务器授权,用户便可以和服务器进行文件传输了。

HTTP和FTP都是应用层协议,它们都运行在TCP协议之上,但是它们之间也有一些重要区别,其中一个就是FTP使用连个并行的TCP连接来传输数据,一个TCP被称为控制连接,用来传输FTP命令;一个TCP连接被称为数据连接,用于传输文件数据;因为FTP协议内,控制信息是通过一个独立的TCP连接传输,所以我们称FTP的控制信息是带外传送的;如果控制信息和数据信息通过同一个TCP传输,则称为带内传送。TCP控制连接端口21,数据连接端口20

需要注意的是,FTP中控制连接贯穿整个会话,但是数据连接会在一个文件开始传输的时候建立,在传输结束后关闭;所以每次传输一个新的文件时,都会新建一个数据连接;

同时,FTP需要在整个会话期间,保留用户的状态,也就是将控制连接同用户账户关联起来,同时记录用户在远程目录树上的操作,这就限制了FTP可以同时维持的会话总数.

HTTP缓存流程
SSL协议与TLS协议区别
HTTP1/2/3优缺点
HTTP和后端的交互底层逻辑
负载均衡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值