计算机网络-自定向下-Web应用笔记1

Web应用

计算机网络全部笔记链接

HTTP概况

Web的应用层协议是 超文本传输协议 ,HTTP由两个程序实现:一个客户程序和一个服务器程序,他们运行于不同的端系统中,通过交换HTTP报文进行会画

网页包含多个对象

  • 对象:HTML文件、JPEG图片、视频文件等
  • 基本的HTML文件:包含对于对于其他对象的 引用

对象的寻址

HTML基本文件通过对象的URL地址引用页面中的其他的对象

URL:统一资源定位器

基本的寻址格式:Scheme://host:post/path -> www.someschool.edu/someDept/pic.gif

HTTP

万维网遵循的是超文本传输协议,其采用的是C/S结构:用户请求Web页面时,浏览器向服务器发送HTTP请求报文,服务器接受请求并将所对应的请求进行响应

计算机网络-自定向下-Web应用笔记1

在使用TCP中,一旦客户向它的套接字接口发送了一个请求的报文,该报文就脱离了客户的控制并且进入TCP的控制。其中传输采用分层体系结构,其优点就是:不懂担心数据的流失,也不用关注TCP从网络的数据丢失和乱序故障中恢复的细节

值得注意的是HTTP采用的是 无状态协议,即服务器向客户发送被请求的报文而不存储任何关于客户的 状态信息

计算机网络-自定向下-Web应用笔记1

为什么需要无状态协议呢?

  • 有状态协议需要维护状态(历史 信息)
  • 如果客户或者服务器失效了,那么它既然保存了以前状态就可能会与现在的出现不一致
  • 解决上述问题代价高

非持续性连接和持续连接

当客户-服务器的交互是经过TCP进行的,就要选择连接方式

  • 非持续性连接:每个请求/响应对是经过一个单独的TCP连接发送
  • 持续性连接:所有的请求和响应都是经由相同的TCP连接发送

默认是采用持续连接但是也可以进行配置

采用非持续性连接

假定页面含有一个HTMl基本文件和10个图形,通过一个响应过程查看非持续性连接

计算机网络-自定向下-Web应用笔记1

计算机网络-自定向下-Web应用笔记1

简要分析一下从请求基本HTML文件到客户收到文件所花费的时间

RTT(Round Trip Time):从客户端发送一个很小的数据包到服务器端并返回所经历的时间

响应时间:

  • 发起、建立TCP连接:一个RTT
  • 发送HTTP请求消息到响应消息的前几个字节到达:一个RTT
  • 响应消息中所含文件或者对象的传输时间
  • 总时间就是2*RTT + 文件发送时间

这一个过程涉及了一次“三次握手”的过程:客户向服务器发送了一个小的TCP报文段,服务器用一个小的TCP报文段做出响应和确认,最后客户向服务器返回确认

计算机网络-自定向下-Web应用笔记1

采用持续性连接

很明显,非持续性连接具有两个显著的缺点

  1. 必须为每一个请求的对象建立和维护一个全新的连接
  2. 每一个对象经受两倍RTT的交付时延:一个RTT用于创建TCP,另一个RTT用于请求和接收一个对象

那我们可不可以让服务器TCP保持连续的打卡,一次性多传送几个文件呢?这就是连续性连接

计算机网络-自定向下-Web应用笔记1

HTTP报文格式

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

1.HTTP请求报文

看一个典型的HTTP的请求报文例子:

计算机网络-自定向下-Web应用笔记1

HTTP请求报文的第一行叫做 请求行,后继的几行叫做 首部行

请求行有三个字段: 方法字段、URL字段、HTTP版本字段

首部行中host:…指明了对象所在的主机,那主机都建立了TCP连接了为什么还要声明主机名呢?

主要是因为该首部行提供的信息是Web代理高速缓存所要求的

User-agent:指明用户代理,就是返回浏览器的类型

Connection:close 告诉浏览器不要使用持续连接

Accept-language:用户得到的对象的语言版本

HTTP请求消息的通用格式:

计算机网络-自定向下-Web应用笔记1

和上述例子不同的就是有一个 实体体(Entity Body),使用GET方法的时候实体体为空,而使用POST方法的时候,实体体不为空。

例如,我们在登录一个网页的时候经常需要填写密码来实现登陆

类外,也可用GET方法,在(表单字段中)所请求的URL中包括输入的数据

计算机网络-自定向下-Web应用笔记1

HTTP响应报文

注意Data是服务器产生并且发送该响应报文的日期和时间

Last-Modified是对象创建或者最后修改的时间

计算机网络-自定向下-Web应用笔记1

HTTP响应状态码

计算机网络-自定向下-Web应用笔记1

上一篇:http1.x,http2.0,https分别介绍以及他们的区别


下一篇:Linux防火墙相关命令