您当前的位置: 首页 >  http

风间琉璃•

暂无认证

  • 3浏览

    0关注

    337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

web应用--详解HTTP

风间琉璃• 发布时间:2021-10-10 18:29:09 ,浏览量:3

文章目录
  • 前言
  • 一、万维网WWW
  • 二、超文本传输协议(HTTP)
    • 1.HTTP协议概述
    • 2.HTTP连接
      • **(1) 非持久性连接(Nonpersistent HTTP)**
      • **(2)持久性连接**
    • 3.HTTP消息格式
      • (1)请求消息(request)
      • (2).响应消息(response)
    • 4.Cookie技术
    • 5.Web缓存/代理服务器技术
  • 三、统一资源定位符(URL)
  • 四、超文本标记语言(HTML)
  • 总结

提示:以下是本篇文章正文内容

一、万维网WWW

万维网WWW(World Wide Web)并非某种特殊的计算机网络。万维网是一个大规模的,联机式的信息存藏所,简称wed。万维网用链接的方法能非常方便的从互联网上的一个站点访问另一个站点(也就是所谓的“链接到另一个站点),从而主动地按需获取丰富的信息。

万维网是一个分布式的超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。所谓超文本是指包含指向其他文档的链接的文本(text)。超文本是万维网的基础

web是一个资料空间,在这个空间中: 一些有用的事物称为一样“资源”,并由一个全域“统一资源定位符”(URL)标识。这些资源通过**超文本传输协议(HTTP)**传送给使用者,通过单击链接来获取资源,**超文本标记语言(HyperText Markup Language,HTML)**使得万维网页面的设计者可以很方便地用一个超链接从本页面的某处链接到因特网上的任何一个万维网页面,并能够在自己的计算机上显示这些页面

万维网的内核部分是由三个标准构成的:

(1)超文本传输协议(HTTP)

一个应用层协议,它使用TCP连接进行可靠的传输,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议

(2)统一资源定位符(URL)

负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL

(3)超文本标记语言(HTML)

一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述

在一个客户程序主窗口上显示出的万维网文档称为网页(web Page) ,包含多个多个对象(Objects): 对象:HTML文件,JPEG文件,视频文件,动态脚本等 基本HTML文件:包含对其他对象引用的链接

万维网以C/S结构(客户/服务器结构) 工作: 客户----Browser:请求,接收,展示Web对象 服务器----Web Server:响应客户的请求,发送对象

二、超文本传输协议(HTTP) 1.HTTP协议概述

HTTP协议:超文本传输协议,是基于TCP的协议,默认为80端口

它的作用是用来规定客户端和服务器的数据传输格式,是一种用于请求与响应模式的、无状态、无连接 的应用层协议。,由于HTTP协议是一种请求-响应模式,所以一般需要关注HTTP请求和HTTP响应

HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

从层次的角度看,HTTP是面向事务的(Transaction-oriented) 应用层 协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

在这里插入图片描述

HTTP使用面向连接的TCP 作为运输层协议,通过三次握手建立连接: (1)服务器在80端口等待客户的请求 (2)浏览器发起到服务器的TCP连接(创建套接字Socket) (3)服务器接受来自浏览器的TCP连接 (4)浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息 (5)关闭TCP连接

特点一:无状态(stateless)

对事务处理没有记忆能力,服务器不知道客户端是什么状态,给服务器发送HTTP请求之后,服务器回应之后,不会有任何记录;每个请求都是独立的;即服务器不维护任何有关客户端过去所发请求的信息

优点:释放服务器压力

缺点:服务器处理后续请求,需要重传, 例如登录系统后,如果不记录登录的相关信息,后续进行添加购物车操作的时候,需要登录的相关信息

有状态的协议更复杂:需维护状态(历史信息),如果客户或服务器失效,会产生状态的不一致,解决这种不一致代价高

那么有没有解决办法:Cookie技术

2.HTTP连接

HTTP连接有两种类型:非持久性连接(Nonpersistent HTTP)和持久性连接(Persistent HTTP)

客户和服务器在一个相当长的时间范围内通信,其客户发出一系列请求并且服务器对每个请求进行响应。这一系列的请求可以以规则的间隔周期性地或者间断性地一个接一个发出。 当客户与服务的交互时,每个请求/响应是经单独的TCP连接发送还是所有请求即响应都是经过相同的一个TCP连接发送。每个单独的TCP连接被称为非持续连接,经过相同的一个TCP连接被称为持续连接,持续连接在一定时间内没有发生请求HTTP服务器就会关闭连接。HTTP能够使用非持续连接也能使用持续连接,各有优缺点

每一个HTTP请求都需要经过三次握手建立连接传输文件,这个过程需要两次往返时间(RTT),会产生一定的网络延时,第一次握手:客服端发起TCP连接;第二次握手:服务端响应连接;第三次握手:客服端请求文件;接下来就是服务端响应文件请求,开始文件传输,这个过程我们需要重点关注的是往返时间(RTT)和传输文件的时间 在这里插入图片描述 RTT(Round Trip Time):从客户端发送一个很小的数据包到服务器并返回所经历的时间

响应时间(Response time):

  • 发起、建立TCP连接: 1个RTT
  • 发送HTTP请求消息到HTTP响应消息的前几个字节到达: 1个RTT
  • 响应消息中所含的文件/对象传输时间

Total=2RTT +文件发送时间

(1) 非持久性连接(Nonpersistent HTTP)

1.每个TCP连接最多允许传输一个对象

2.HTTP 1.0版本使用非持久性连接

在这里插入图片描述 在这里插入图片描述 由于是非持久性连接,每个TCP连接最多允许传输一个对象,所以当第一次访问获取到文本信息后,TCP连接关闭,但是图片还不会立即显示出来,还要为每一张图片进行图片的链接访问,才能拿到完整的网页。

缺点:每个对象需要2个RTT,操作系统需要为每个TCP连接开销资源(overhead)

(2)持久性连接

发送响应后,服务器保持TCP连接的打开,后续的HTTP消息可以通过这个连 接发送

1.无流水(pipelining)的持久性连接 客户端只有收到前一个响应后才发送新的请求, 每个被引用的对象耗时1个RTT

2.带有流水机制的持久性连接 HTTP 1.1的默认选项,客户端只要遇到一个引用对象就尽快发出请求,理想情况下,收到所有的引用对象只需耗时约1个RTT

**小结:**持续连接可以在一定程度上减少这种重复的握手连接过程,但多个请求采用一个TCP连接需要等待一个一个的传输,在一定程度上可以减少网络延时,但同时也产生了等待执行的时间,持续连接相对非持续连接在很大程度上减少了服务器的压力,但是性能问题是由多种因素造成的,量化比较持续连接和非持续连接对于优化性能非常有必要

特点二:无连接(非持续连接)

3.HTTP消息格式 HTTP协议有两类消息:请求消息(request)和响应消息(response)

HTTP请求报文和响应报文都由三个部分组成(加上空行算四部分) 在这里插入图片描述 这两种报文格式的区别是开始行不同,用于区分是请求报文还是响应报文 在请求报文中的开始行称为请求行,响应报文中的开始行称为状态行 开始行的三个字段之间都以空格分隔,最后的“CR"和“LF”分别代表“回车”和“换行”

(1)请求消息(request)

1.请求行:请求行由 请求方法、统一资源定位符(URL)、HTTP协议及版本组成

请求方法:HTTP请求中,有八种请求方式,分别为GET、POST 、HEAD、OPTIONS、PUT、DELETE、TRACE 、CONNECT 。其中最后常用的就是GET、POST请求方法 在这里插入图片描述 统一资源定位符(URL):统一资源定位符用于描述网上的资源,格式如下:协议://host[:port#]/path/…/[?query-string]

HTTP协议及版本:通常为HTTP/1.1

2.请求头:包含若干个属性,格式为“属性名:属性值”,服务端根据此获取客户端的信息。下图为常见的请求头及作用,还可以自定义请求头。 在这里插入图片描述

3.请求体:即为请求参数,通常为以键值对的形式数据。一般在POST请求中才有请求体

注意: 在请求体和请求行之间空一行,发送回车符和换行符(crlf),通知服务器以下不再有请求头

请求消息通用格式: 在这里插入图片描述 案例: 在这里插入图片描述

(2).响应消息(response)

HTTP响应消息分为三部分:状态行、响应头、响应体(加上空行算四个部分),响应体不是所有的HTTP响应都有。

1.状态行:状态行由 协议及版本、状态码、状态码解释

协议及版本:通常为HTTP/1.1

状态码:常用状态码根据数字大小可以分为以下几大类, 常用的响应状态码为:=200:请求成功、302:重定向、403:服务器拒绝请求、**404:**服务器找不到请求的网页、503:服务不可用

在这里插入图片描述 描述:即为响应信息的描述

2.响应头:响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据 在这里插入图片描述

3.响应体:响应的消息体 同样的,响应体和响应头之间空一行:发送回车符和换行符,代表后面不再有响应头

典例 在这里插入图片描述

4.Cookie技术

HTTP协议无状态,很多应用需要服务器掌握客户端的状态,如网上购物,如何实现?

Cookie技术:某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)

Cookie文件记录了用户的有关信息,如身份识别号码ID、密码、浏览过的网页、停留的时间、用户在Web站点购物的方式或用户访问该站点的次数等,当用户再次链接Web服务器时,浏览器读取Cookie信息并传递给Web站点

Cookie的组件: (1)HTTP响应消息的cookie头部行 (2)HTTP请求消息的cookie头部行 (3)保存在客户端主机上的cookie文件,由浏览器管理 (4)Web服务器端的后台数据库

Cookie原理:

在这里插入图片描述 假设用户在客户端第一次发出了这个HTTP请求,服务端识别是一个新用户,就会为他创建ID: 1678

然后服务器回应客户端的请求,服务器生成cookie,并将其封装到响应头中,以响应的形式发送给客户端,常规http请求+Set-cookie:1678

这时客户端的Cookie file文件中会加一条记录: 1678 ,一周之后,再次向服务器发送请求,但是这次的请求和之前的普通请求不同之处在于后面跟上了cookie:1678

Cookie机制定义了两种报头:Set-Cookie报头和Cookie报头。Set-Cookie报头包含于Web服务器的响应头(ResponseHeader)中,Cookie报头包含在浏览器客户端请求头(ReguestHeader)中

Cookie工作过程: (1)客户端在浏览器的地址栏中键入Web服务器的URL,浏览器发送读取网页的请求。

(2)服务器接收到请求后,产生一个Set-Cookie报头,放在HTTP报文中一起回传客户端,发起一次会话。

(3)客户端收到应答后,若要继续该次会话,则将Set-Cook-ie中的内容取出,形成一个Cookie.txt文件储存在客户端计算机里。

(4)当客户端再次向服务器发出请求时,浏览器先在电脑里寻找对应该网站的Cookie.txt文件。如果找到,则根据此Cookie.txt产生Cookie报头,放在HTTP请求报文中发给服务器。

(5)服务器接收到包含Cookie报头的请求,检索其Cookie中与用户有关的信息,生成一个客户端所请示的页面应答传递给客户端。 浏览器的每一次网页请求,都可以传递已存在的Cookie文件,例如,浏览器的打开或刷新网页操作

但是,Cookie涉及隐私问题…

5.Web缓存/代理服务器技术

作用:在不访问服务器的前提下满足客户端的HTTP请求

优点: (1)缩短客户请求的响应时间 (2)减少机构/组织的流量 (3)在大范围内(Internet)实现有效的内容分发

代理服务器又称万维网高速缓存(Web cache),代理服务器把最近的一些请求和响应暂存在本地磁盘中,当新请求到达时,若发现这个请求与暂停时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去互联网访问该资源, 否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象

代理服务器可在客户端或服务器端工作,也可以在中间系统说工作。一般由ISP(Internet服务提供商)架设

条件性GET方法

尽管缓存可以减少用户感知到的响应时间,但是缓存引入了一个新的问题: 存储在cache中的对象可能是陈旧的, 自从对象的副本被缓存到这个cache, 存储在web服务器端的对象可能被修改过

HTTP提供了条件性GET(conditional GET)机制,这个机制使得cache能够确认它的对象是最新的

条件性GET方法: (1)请求报文使用了GET方法 (2)请求报文包括了一个If-Modified-Since头行

在这里插入图片描述

If-modified-since: 上次修改的时间

客户端向服务器发送一个请求是否在上一次访问后数据是否更改,如果服务器没有修改,客户端只要使用本地缓存即可,如果服务器对照客户端给出的时间已经修改了客户端请求的网页,则发送这个更新了的网页给用户

第一次请求时,服务器端返回请求访问,之后的请求,服务器根据请求中的 If-Modified-Since 字段判断响应文件没有更新,如果没有更新,服务器返回一个 304 Not Modified响应,告诉浏览器请求的资源在浏览器上没有更新,可以使用已缓存的上次获取的文件

如果服务器端资源已经更新的话,就返回正常的响应

三、统一资源定位符(URL)

统一资源定位符URL是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址

只要能够对资源定位,系统就可以对资源进行各种操作,如存取,查找,更新,替换其属性

URL一般形式由四个部分组成: ://:/

对于万维网的网点的访问要使用HTTP协议,HTTP的URL的一般形式是:

            http://:/

HTTP的默认端口号是80,通常可以省略。

:指用什么协议来获取该万维网文档,常用的协议http(超文本传送协议),其次是ftp(文件传送协议FTP)

:指在互联网上的域名

后面两者经常省略

这里所说的资源是指在互联网上可以被访问的任何对象,包括文件目录,文件,文档,图像,声音等,以及与互联网相连的任何形式的数据。互联网上所有的资源,都有一个一个唯一确定的URL

四、超文本标记语言(HTML)

超文本标记语言HTML(HyperText Markup Language)就是一种制作万维网页界面的标准语言,它消除不同计算机之间的信息交流的障碍。但是,HTML并不是应用层的协议,它只是万维网浏览器使用的一种语言。 HTML语法简单介绍

关注
打赏
1665385461
查看更多评论
立即登录/注册

微信扫码登录

0.0526s