应用层-Web和HTTP

  • Web和HTTP
    • HTTP概况
    • 非持续连接和持续连接
      • 采用非持续连接的HTTP
        • 往返时间
      • 采用持续连接的HTTP
    • HTTP报文格式
      • HTTP请求报文
      • HTTP响应报文
    • 用户与服务器的交互:cookie
      • Web缓存
    • 条件GET方法

Web和HTTP

HTTP概况

Web的应用层协议是超文本传输协议(HTTP)。
HTTP由两个程序实现:一个客户程序和一个服务器程序,它们通过交换报文进行对话,报文的结构和交换报文的方式由HTTP定义。
Web界面(文档)由对象组成,一个对象只是一个小文件,对象可通过一个URL地址寻址。HTML基本文件通过对象的URL地址引用页面中的其他对象。每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名。
例如,URL地址http://www.someSchool.edu/someDepartment/picture. gif其中的 www. someSchool. edu 就是主机名,/someDepartment/picture. gif 就 是路径名。
HTTP使用TCP作为它的支撑运输协议(而不是在UDP上运行)。HTTP客户首先发起一个与服务器的TCP连接,一旦连接建立,该浏览器和服务器进程就可以通过套接字接口访问TCP。客户向它的套接字接口发送HTTP请求报文并从它的套接字接口接收HTTP响应报文。类似地,服务器从它的套接字接口接收HTTP请求报文和向它的套接字接口发送HTTP响应报文。一旦客户向它的套接字接口发送了一个请求报文,该报文 就脱离了客户控制并进入TCP的控制。HTTP协议不用担心数据丢失,也不关注TCP从网络的数据丢失和乱序故障中恢复的细节。那是TCP以及协议栈较低层协议的工作。
服务器向客户发送被请求的文件,而不存储任何关于该客户 的状态信息。假如某个特定的客户在短短的几秒钟内两次请求同一个对象,服务器并不会 因为刚刚为该客户提供了该对象就不再做出反应,而是重新发送该对象。HTTP服务器并不保存关于客户的任何信息,所以HTTP是一个无状态协议。

非持续连接和持续连接

每个请求 /响应对是经一个单独的的TCP连接发送,还是所有的请求及其响应经相同的TCP连接发送呢?采用前一种方法.该应用程序被称为使用非持续连接(non-penirtent connection),采用后一种方法.该应用程序被称为使用持续连接(penirtent conneclion)。

采用非持续连接的HTTP

1、客户进程发起TCP连接,客户和服务器上分别有一个套接字与该连接相关联。
2、HTTP客户经套接字向服务器发送HTTP请求报文
3、服务器经套接字接收请求报文并检索对象,在一个HTTP响应报文中封装对象,并通过该套接字向客户发送响应报文。
4、HTTP服务器进程通知TCP断开该TCP连接。
5、HTTP客户接收报文,TCP连接关闭
(每个TCP连接只传输一个请求报文和响应报文)

往返时间

给出往返时间(Round-Trip Time, RTT)的定义.该 时间是指-个短分组从客户到服务器然后再返回客户所花费的时间。RTT包括分组传播时 延、分组在中间路由器和交换机上的排队时延以及分组处理时延。现在考虑当用户点击超链接时会发生什么现象。这渉及一次“三次握手”过程.即客户向服务器 发送一个小TCP报文段,服务器用一个小TCP报文段做出确认和响应.最后,客户向服务器返回确认。三次握手中前两个部分所耗费的时间占用了一个RTT。完成了三次握手的 前两个部分后.客户结合三次握手的第-:部分(确认)向该TCP连接发送一个HTTP请求 报文。一旦该请求报文到达服务器,服务閱就在该TCP连接上发送HTML文件。该HTTP 请求/响应用去了另一个RTT°因此,粗略地讲,总的响应时间就是两个RTT加上服务器 传输HTML文件的时间。

采用持续连接的HTTP

在采用持续连接的情况下.服务器在发送响应后保持该TCP连接打开。在相同的客户与服务器之间的后续请求和响应报文能够通过相同的连接进行传送。特别是,一个完整的 Web页面可以用单个持续TCP连接进行传送。更有甚者,位于同一台服务器的多个Web页面在从该服务器发送给同一个客户时,可以在单个持续TCP连接上进行。可以一个接一个地发出对对象的这些请求,而不必等待对未决请求(流水线)的回答。一般来说,如果一条连接经过一定时间间隔(一个可配置的超时间隔)仍未被使用,HTTP服务器就关闭该连接,HTTP的默认模式是使用带流水线的持续连接。

HTTP报文格式

HTTP报文有两种:请求报文和响应报文。

HTTP请求报文

HTTP请求报文的第一行叫做请求行(request line),其后继的行叫做首部行(header line)。请求行有3个字段:方法字段,URL字段和HTTP版本字段。方法字段可以取几种 不同的値,包括GET、POST、HEAD, PUT和DELETE。绝大部分的HTTP请求报文使用 GET方法。当浏览器请求一个对象时,使用GET方法,在URL字段带有请求对象的标识。(注:Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL(Uniform Resource Locator, 统一资源定位器)。它是www的统一资源定位标志,简单地说URL就是web地址,俗称“网址”。)
使用POST报文,.用户仍可以向服务器请求一个 Web页面,但Web页面的特定内容依赖于用户在表单字段中输入的内容。如果方法字段的值为POST时,则实体体中包含的就是用户在表单字段中的输入值。
HEAD方法类似于GET方法。当服务器收到使用HEAD方法的请求时.将会用一个 HTTP报文进行响应,但是并不返回请求对象。PUT方法常与Web发行工具联合使用,它允许用户上传对象到指定的Web服务器上指定的路径(目录)。PUT方法也被那些需要向Web服务器上传对象的应用程序使用。DELETE方法允许用户或者应用程序删除Web服务器上的对象。

HTTP响应报文

状态行有3个字段:协议版本 字段,状态码和相应状态信息。
Connection:close首部行吿诉客户,发送完报文后 将关闭该TCP连接。
Date:首部行指示服务器产生并发送该响应报文的日期和时间。值得一提的是.这个时间不是指对象创建或者最后修改的时间;而是服务器从它的文件系统中检索到该对象,插入到响应报文,并发送响应报文的时间。
Server:首部行指示该报文哪个服务器产生的.它类似HTTP请求报文中的User-agent:首部行。
Last-Modified:首部行指示了对象创建或者最后修改的日期和时间。Last-Modified:首部行对既可能在本地客户也可能在网络缓存服务器上的对象緩存来说非常重要,我们将很快详细地讨论缓存服务器(也叫代理服务器)
Content-Length:首部行指示了被发送对象中的字数。
Content-Type:首部行指示实体体中的对象是XX文本(该对象类型应该正 式地由Conlenl-Type:首部行而不是用文件扩展名来指示。)

用户与服务器的交互:cookie

cookie技术有4个组件:
①在HTTP响应报文中的一个cookie首部行;
②在HTTP请求报文中的一个cookie首部行;
③在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理;
④位于Web站点的一个后端数据库。
过程
1、请求报文到达服务器,Web站点产生唯一识别码,并以此作为索引在他的后端数据库中产生一个表项。
2、服务器用一个包含Set-cookie:首部的HTTP响应报文对客户的浏览器进行响应。
3、浏览器受到HTTP响应报文,会看到Set-cookie:首部并在它管理的特定cookie文件中添加一行,该行包括服务器的主机名和在Set-cookie:首部中的识别码。
4、之后发往该服务器的每个HTTP请求都包括cookie:首部。
5、服务器可通过cookie在数据库中检索信息。
cookie可以标识一个客户

Web缓存

Web缓存器(Web cache)也叫代理服务器(proxy server),它是能够代表初始Web服务器来满足HTTP请求的网 络实体。Web缓存器有自己的磁盘存储空间.并在存储空间中保存最近请求过的对象的副本。可以配置用户的浏览器,使得用户的所有HTTP 请求首先指向Web缓存器。一旦某浏览器被配置.每个对某对象的浏览器请求首先被定向到该Web缓存器。举例来说,假设浏览器正在请求对象http://www. someschool. edu/campus. gif,将会发生如下情况:
•浏览器建立一个到Web缓存器的TCP连接,并向Web緩存器中的对象发送一个 HTTP请求。
• Web缓存器进行检査,看看本地是否存储了该对象副本。如果有.Web缓存器就 向客户浏览器用HTTP响应报文返回该对象。
•如果Web缓存器中没有该对象,它就打开一个与该对象的初始服务器(如 www.someschool.edu)的TCP连接。Web缓存器则在这个缓存器到服务器的TCP 连接上发送一个对该对象的HTTP请求,在收到该请求后,初始服务器向该Web 缓存器发送具有该对象的HTTP响应。
•当Web缓存器接收到该对象时,它在本地存储空间存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本(通过现有的客户浏览器和Web缓存器之间的 TCP连接).
Web缓存器可以大大减少对客户请求的响应时间,可以大大减少一个机构的接入链路到因特网的通信量。
总的响应时间,即从浏览器请求一个对象到接收到该对象为止的时间:是局域网时延、接入时延 (即两台路由器之间的时延)和因特网时延之和。从因特网接入链路一侧的路由器转发 HTTP请求报文(在一个IP数据报中)开始,到它收到其响应报文(通常在多个IP数据报中)为止的时间平均为2秒。我们非正式地将该持续时延 称为“因特网时延”(注:相关计算详解见课本75页)

条件GET方法

尽管高速缓存能减少用户感受到的响应时间,但存放在缓存器中的对象副本可能是陈旧的。 换句话说,保存在服务器中的对象自该副本缓存在客户上以后可能已经被修改了。HTTP协议有一种机制,允许缓存器证实它的对象是最新的:这种机制就是条件 GET (conditional GET)方法。
如果:①请求报文使用GET方法;
②靖求报文中包 含一个“If-Modified・Since:”首部行。那么,这个HTTP请求报文就是一个条件GET请求报文。
GET方法:
1、代理缓存器向服务器发送请求报文
2、服务器向缓存器发送具有被请求对象的响应报文(Last-Modified:首部行)
3、缓存器再将对象转发到请求的浏览器的同时,也在本地的缓存了该对象,同时存储了最后修改日期。
4、一段时间后再次请求同一对象,对象仍在缓存器中,缓存器发送一个条件GET执行最新检查。
其中有If-Modified-Since:首部行的值与之前发送的响应报文中Last-Modified:首部行的值。该条件GET报文告诉服务器,仅当自指定日期之后该对象被修改过,才发送该对象。若未被修改过,服务器只报送响应报文,不发送对象。

计算机网络-应用层-Web和HTTP相关推荐

  1. 计算机网络--应用层Web简单介绍

    计算机网络养成:第六天 内容导航 计算机网络养成:第六天 学习内容 Web and HTTP URL (Uniform Resource Locator)统一资源定位符 HTTP概况[hype tex ...

  2. 考研—计算机网络—应用层

    考研-计算机网络-应用层 两种模型--网络应用模型 1)客户/服务器模型 服务器是一个总是打开的主机,用来服务客户机. 客户是服务请求方,服务器是服务提供方. C/S模式应用包括:Web.文件传输FT ...

  3. 基础知识-计算机网络-应用层

    基础知识-计算机网络-应用层 1 应用层协议原理 1.1 网络应用程序体系结构 1.2 进程通信 1.3 应用层协议 1.4应用程序所需要的服务(运输服务) 1.5 因特网运输协议提供的服务 2 We ...

  4. 计算机网络应用层课后习题练习(一)

    计算机网络应用层课后习题练习 应用层知识点概览 课后练习(一) 应用层知识点概览 域名系统DNS 文件传送协议FTP和TFTP 远程终端协议TELNET 万维网WWW 电子邮件SMTP/POP3/IM ...

  5. 计算机网络 - 应用层

    文章目录 1 网络应用模型 1.1 概述 1.2 网络应用模型 1.2.1 客户/服务器模型(Client/Server) 1.2.2 P2P模型(Peer-to-Peer) 2 域名系统DNS 2. ...

  6. 万字+图片解析计算机网络应用层

    1. 应用层概述 (1).前情回顾 物理层:解决使用何种信号来传输比特的问题 数据链路层:解决分组在一个网络(或一段链路)上传输的问题 网络层:解决分组在多个网络上传输(路由)问题 运输层:解决进程之 ...

  7. 计算机网络应用层论文,计算机网络实验报告应用层.doc

    计算机网络实验报告应用层.doc 沈 阳 工 程 学 院 学 生 实 验 报 告 (课程名称:计算机网络) 实验题目: 应用层各种服务的配置 班 级 学 号 单超杰 地 点 F608 指导教师 费雅洁 ...

  8. 计算机网络应用层报告,计算机网络实验报告应用层

    计算机网络实验报告应用层 沈 阳 工 程 学 院 学 生 实 验 报 告 (课程名称:计算机网络) 实验题目: 应用层各种服务的配置 班 级 网本111班 学 号 06 姓 名 单超杰 地 点 F60 ...

  9. 计算机网络应用层--龙之介计算机网络学习(2)

    概述: 其实计算机网络主要聊的就是因特网五层协议栈的那几种协议,通过对各个协议的构成,了解一个数据包(报文)是如何从网络中完成传输的作用. 这是一个系列的,主要用于自己复习计网. 协议分层概念–龙之介 ...

最新文章

  1. (CZ深入浅出Java基础)线程笔记
  2. while else语句
  3. 【工业控制】PolyWorks培训教程-设备转站
  4. java 基本数据类型及自己主动类型提升
  5. 文献记录(part88)--Robust clustering using a kNN mode seeking ensemble
  6. 【渝粤教育】 国家开放大学2020年春季 1260软件工程 参考试题
  7. android界面元素识别,Android 10不能使用uiautomatorviewer定位元素的终极解决方法
  8. 未来计算机领域最急缺的人,未来十年最紧缺职业 没人愿意干的高薪职业
  9. 河南城镇化争植“智慧”基因
  10. CM3中数据传输对齐/非对齐方式
  11. vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 “invalid signature“错误解决方案
  12. 2020年中国网络安全产业白皮书分析解读
  13. Java支付宝app wap支付接入
  14. python 百度人脸 sdk_深更半夜实现python百度api人脸识别
  15. 《C++沉思录》学习笔记1
  16. 模电一、半导体二极管和三极管
  17. 应用系统运维建设必备的几个方面
  18. win7计算机服务启动不了,win7 32位旗舰版提示依赖服务无法启动怎么修复
  19. laravel中的fillable和guarded属性
  20. 在Win10的Linux子系统Ubuntu中使用Qt

热门文章

  1. CSS写的青色漂亮导航菜单代码
  2. NOI 2008 假面舞会
  3. 网吧计算机无法远程,win7网络711无法加载远程访问解决方法 | 专业网吧维护
  4. 网易邮箱支持手机收发邮件的服务器,手机如何使用IMAP服务收发网易的邮件
  5. Oracle对话框列间距太近,如何调整MathType矩阵行列间距
  6. flex布局强制换行(flex-wrap:wrap)之后,去掉最下面一层多余的间隙。
  7. ps2018首选项出现要求96和8之间的整数怎么办?
  8. 天梯赛(cccc)总结(写于4.1号)
  9. css div水平垂直居中
  10. odoo15 csv 格式文件加载 中华民簇表