本文最后更新于:2020年9月18日 上午

计算机网络系列(九)-应用层(二)-Web-HTTP

本篇主要内容包含:

  • 1、Web
    • 1.1、World Wide Web
    • 1.2、网页的内容
    • 1.3、对象的寻址
  • 2、HTTP应用层协议
    • 2.1、HTTP协议的名称
    • 2.2、HTTP协议结构
    • 2.3、执行过程图
    • 2.4、传输层协议
      • 2.4.1、使用TCP传输服务
    • 2.5、HTTP协议的特点
    • 2.6、有状态和无状态的区别
  • 3、HTTP连接
    • 3.1、HTTP连接的两种类型
  • 4、非持久性连接
    • 4.1、响应时间分析
      • 4.1.1、RTT(Round Trip Time)
      • 4.1.2、响应时间包含内容
    • 4.2、非持久性连接的总结
      • 4.2.1、非持久性连接的问题
      • 4.2.2、浏览器非持久性连接问题的处理方式
  • 5、持久性连接
    • 5.1、持久性连接特点
    • 5.2、持久性连接的分类
  • 6、HTTP消息格式
    • 6.1、HTTP协议分类
    • 6.2、请求消息
      • 6.2.1、HTTP请求报文
      • 6.2.2、HTTP请求消息的通用格式
      • 6.2.3、上传输入的方法
      • 6.2.4、方法的类型
    • 6.3、响应消息
      • 6.3.1、HTTP响应报文
      • 6.3.2、HTTP响应状态代码

1、Web

1.1、World Wide Web

网页和网页的互相连接

1.2、网页的内容

网页包含多个对象。

对象:HTML文件、图片、视频、脚本等。

1.3、对象的寻址

  • URL:统一资源定位器。
  • Scheme://host:port/path

2、HTTP应用层协议

2.1、HTTP协议的名称

超文本传输协议

2.2、HTTP协议结构

C/S结构:

客户机:请求、接收、展示web对象。
服务器:响应客户的请求,发送对象。

2.3、执行过程图

2.4、传输层协议

2.4.1、使用TCP传输服务

使用过程:

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

2.5、HTTP协议的特点

无状态(服务器不维护任何有关客户端过去所发送的请求消息)

2.6、有状态和无状态的区别

1.是否需要维护状态(历史信息)
2.是否会出现客户或服务器失效,
产生状态的不一致,解决这种不一致代价高。

3、HTTP连接

3.1、HTTP连接的两种类型

  • 非持久性连接

    • 每个TCP连接最多允许传输【一个】对象。
    • HTTP 1.0版本使用的是非持久性连接。
  • 持久性连接

    • 每个TCP连接允许传输多个对象
    • HTTP 1.1版本默认使用持久化性连接

4、非持久性连接

连接过程:

    1.HTTP客户端向服务器的HTTP服务器进程发起TCP连接请求。

    2.HTTP服务器该80端口一直等待TCP连接请求,接收并通知客户端。

    3.HTTP客户端将HTTP请求消息(含URL地址),通过TCP连接的套接字发出,
    消息中所含的URL表明客户端需要的具体对象。

    4.HTTP服务器接收到请求消息,并解析,
    产生所需要对象的响应消息,并通过套接字发给客户端。

    5.HTTP服务器关闭TCP连接。

    6.HTTP客户端收到响应消息,解析HTML文件,显示HTML文件。
    这个时候发现还有超链接在HTML文件中,没有跟服务器申请到的。

    7.为每一个超链接对象重复上面步骤,进行申请。

4.1、响应时间分析

4.1.1、RTT(Round Trip Time)

从客户端发送一个很小的数据包到服务器并返回所经历的时间。

4.1.2、响应时间包含内容

  • 发起、建立TCP连接:1个RTT。

  • 发起HTTP请求消息到HTTP响应消息的前几个字节到达:1个RTT。

  • 响应消息中所含的文件/对象的传输时间。

    总时间 = 2RTT + 文件发送时间

4.1.3、响应时间图

4.2、非持久性连接的总结

  • 每一个TCP连接只能传输一个对象
  • 响应时间为2RTT + 文件发送时间

4.2.1、非持久性连接的问题

  • 传输时间长,每个对象都需要2个RTT
  • 操作系统需要每次为每个TCP建立连接,造成资源的开销

4.2.2、浏览器非持久性连接问题的处理方式

打开多个并行的TCP连接以获取网页所需对象。(这样会造成服务器端压力)


5、持久性连接

5.1、持久性连接特点

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

5.2、持久性连接的分类

  • 无流水的持久性连接

    特点:
    
        1.客户端只有收到前一个响应后,才能发送新的请求。
        2.每个被引用的对象耗时1个RTT。
  • 带有流水机制的持久化连接

    特点:
    
        1.HTTP1.1的默认选项
        2.客户端只要遇到一个引用对象就会尽快发出请求
        3.理想情况下,收到所有的引用对象只需要1个RTT

6、HTTP消息格式

6.1、HTTP协议分类

  • 请求消息
  • 响应消息

6.2、请求消息

  • ASCII:可读懂

6.2.1、HTTP请求报文

6.2.2、HTTP请求消息的通用格式

6.2.3、上传输入的方法

  • POST方法

    在请求消息的消息体(entity body)中上传客户端的输入。
  • URL(GET)方法

    输入信息通过request行的URL字段上传。

6.2.4、方法的类型

  • HTTP/1.0

    GET、POST、HEAD(请Server不要将所请求的对象放入响应消息中)
  • HTTP/1.1

    - GET、POST、HEAD
    - PUT(将消息体重的文件上传到URL字段所指定的路径)
    - DELETE(删除URL字段所指定的文件)

6.3、响应消息

  • ASCII:可读懂

6.3.1、HTTP响应报文

6.3.2、HTTP响应状态代码

  • 响应消息的第一行
  • 示例:
    • 200 OK
    • 301 网页不在了
    • 400 错误的请求
    • 404 没有找到请求网页
    • 505 Http版本不受支持

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!博客中转载文章会注明出处,若有版权问题,请及时与我联系!谢谢!

计算机网络系列(九)-应用层(三) 上一篇
Java并发系列(十六)-Lock接口 下一篇