计算机网络3---Web应用概述和HTTP协议

Tim Berners-Lee

这位才是互联网最该铭记的大佬,而不是马云盖茨

World Wide Web

由什么构成?

  • 网页
  • 网页互相链接

网页(Web Page)包含多个对象(objects)

  • 对象:HTML文件,JPEG图片,视频文件,动态脚本等
  • 基本HTML文件:包含对其他对象引用的链接

Web对象怎么寻址?
URL(Uniform Resource Locator):统一资源定位器 RFC1738
Scheme://host:port/path
example:

www.someschool.edu/someDept/pic.gif
-----host name----/-----path name---

Web应用所使用的应用层协议就是HTTP,超文本传输协议
Web应用采用C/S结构:
客户—Browser:请求,接收,展示Web对象
服务器—Web Server:响应用户的请求,发送对象
计算机网络3---Web应用概述和HTTP协议_第1张图片

HTTP所基于的传输层协议是什么? TCP传输服务

  • 服务器在80端口等待客户的请求
  • 浏览器发起到服务器的TCP链接(创建套接字)
  • 服务器接收来自浏览器的TCP链接
  • 浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息
  • 关闭TCP连接

HTTP是一种无状态的协议

服务器不维护任何有关客户端过去所发请求的信息
为什么是无状态?
有状态的协议更复杂:需要维护状态,如果客户或服务器失效则会产生状态不一致。

HTTP连接的两种类型

  • 非持久性连接
  • 持久性连接

非持久性连接每个TCP连接最多允许传输一个对象,而持久性可以传输多个。

首先说明非持久性连接的工作过程:
以下图片说明了这个连接简历与消息发送和响应的过程,使用斜线表示请求的发送和消息的效应是有时延的
计算机网络3---Web应用概述和HTTP协议_第2张图片
因为使用的是非持久性连接,所以HTTP服务器在返回一次消息之后就会关闭TCP连接了,但是HTTP客户端在收到响应消息并解析了HTML文件之后,才发现其中有10个jpeg对象的超链接,这不又得像HTML请求了,所以此后又得为每个jpeg对象重复上图步骤:
计算机网络3---Web应用概述和HTTP协议_第3张图片
如果在这种模式下进行响应时间分析与建模:
计算机网络3---Web应用概述和HTTP协议_第4张图片
非持久性连接的问题:

  • 每个对象都需要2个RTT
  • 操作系统需要为每个TCP连接开销资源(OverHead)
  • 浏览器要打开多个并行的TCP链接以获取网页所需对象(刚才有10个图片要访问,就要并行10个访问进程),给服务器造成很大压力

持久性连接:
发送响应后,服务器保持TCP连接的打开状态,后续的HTTP消息可以通过这个连接发送。
更详细的划分:

无流水的持久性
  • 客户端只有收到前一个响应后才发送新的请求
  • 每个被引用的对象耗时1个RTT
带有流水机制的持久性连接
  • HTTP 1.1的默认选项
  • 客户端只要遇到一个引用就尽快发出请求
  • 理想情况下,收到所有的引用对象只需要耗时约1个RTT
    HTTP客户每遇到一个对象引用就立即发出一个请求,因而HTTP客户可以一个接一个连续发出各个引用对象的请求。服务器收到这些请求后,也可以一个接一个连续发送各个对象。如果所有的请求和响应都连续发送的,那么所有引用到的对象供给经历1个RTT延迟,而不是像不带流水线版本那样,每个引用都必须有1个RTT延迟。

HTTP消息格式

HTTP有两类消息:请求消息和响应消息
请求消息:ASCII:人直接可读
比如:

GET /somedir/page.html HTTP/1.1    //request line    GET/POST是HEAD Commands
Host: www.someschool.edu           //header lines
User-agent: Mozilla/4.0			   //不同的浏览器对网页可能有不同的需求
Connection:close				   //代表发完之后可以关闭链接
Accept-language:fr				   //请求网页使用语言
								  //空行必须有,表示结束 Carriage return line feed indicates end of message

通用格式

计算机网络3---Web应用概述和HTTP协议_第5张图片
要注意的是:请求消息也是需要Entity Body的,比方说post请求提交表单时就得携带消息,用户登陆时也必须携带账号密码信息提交给服务器验证。

上传输入的方法

POST方法

  • 网页经常需要填写表格form
  • 在请求消息的消息体中上传客户端的输入

URL方法

  • 使用方法
  • 输入信息通过request行的URL字段上传
    比如说此页面下:https://editor.csdn.net/md?not_checkout=1&articleId=121594326

方法的类型

HTTP 1.0中

  • GET
  • POST
  • HEAD 请server不要将所请求的对象放入响应消息中

HTTP 1.1

  • GET POST HEAD
  • PUT 将消息体中的文件上传到URL字段所指定的路径
  • DELETE 删除URL字段中所指定的文件

HTTP 响应消息

HTTP/1.1 200 OK							//status line(protocol status code status phrase
Connection: close
Data: Thu, 06 Aug 1998 12:00:15 GMT			
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 ...
Content-Length:6821
Content-Type: text/html
											//空行
data data data data							

HTTP响应状态码

200 OK
301 Moved Permanently
400 Bad Request
404 Not Found
505 HTTP Version Not Supported

计算机网络3---Web应用概述和HTTP协议_第6张图片

你可能感兴趣的:(计算机网络,服务器)