计算机网络应用层协议:HTTP

1.进程通信

在两个不同端系统上的进程,通过跨越计算机网络交换报文而相互通信。
进程通过一个称为套接字的软件接口向网络发送报文和从网络接收报文。
由于套接字是建立网络应用程序的可编程接口,因此套接字也被称为应用程序和网络之间的应用程序编程接口。
进程寻址,即表示接收进程需要定义两种信息:①主机的地址②在目的主机中指定接收进程(更具体的说,接收套接字)的标识符。

2.应用层协议

应用层协议定义了运行在不同端系统上的应用程序如何相互传递报文。

  • 交换的报文类型。例如请求报文和响应报文。
  • 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的。
  • 字段的语义,即这些字段中的信息的含义。
  • 确定一个进程何时以及如何发送报文,对报文进行响应的规则。

3.HTTP

3.1 HTTP概况

Web的应用层协议是超文本传输协议HTTP。
HTTP使用TCP作为它的支撑运输协议。
客户端的套接字接口是客户进程与TCP连接之间的门。
HTTP是一个无状态协议,不保存关于客户的任何信息。

3.2 非持续连接和持续连接

3.2.0 RTT往返时间

该时间是指一个短分组从客户到服务器然后再返回客户所花费的时间。
RTT包括分组传播时延、分组在中间路由器和交换机上的排队时延以及分组处理时延。

在这里插入图片描述
如图,三次握手的前两次占用了一个RTT。总的响应时间就是两个RTT加上服务器传输文件的时间。

3.2.1 非持续连接

每个请求/响应对是经一个单独的TCP连接发送。
每个TCP连接在服务器发送一个对象后关闭。每个TCP连接只传输一个请求报文和一个响应报文。

缺点

1.给服务器带来严重的负担。必须为每一个请求的对象建立和维护一个全新的连接。对于每个连接,在客户和服务器中都要分配TCP的缓冲区和保持TCP变量。
2.每一个对象经受两倍RTT的交付时延。

3.2.2 持续连接(默认)

所有的请求及响应经相同的TCP连接发送。
在采用HTTP1.1持续连接的情况下,服务器在发送响应后保持该TCP连接打开。在相同的客户与服务器之间,后续的请求和响应报文能够通过相同的连接进行传送。
一般来说,如果一条连接经过一定时间间隔(一个可配置的时间间隔)仍未被使用,HTTP服务器就关闭该连接。

3.3 HTTP报文格式

3.3.1 请求报文

方法字段有:GET POST PUT DELETE
GET方法实体体为空。
HEAD方法类似于GET方法。当服务器接收到一个使用HEAD方法的请求时,将会用一个HTTP报文进行响应,但是并不返回请求对象。
在这里插入图片描述
在这里插入图片描述

3.3.2 响应报文

在这里插入图片描述
在这里插入图片描述
Date:首部行指示服务器产生并发送该响应报文的日期和时间。
(服务器从它的文件系统中检索到该对象,将该对象插入响应报文,并发送该响应报文的时间)
Last-Modified:首部行指示了对象创建或者最后修改的日期和时间。
Content-Length:被发送对象中的字节数。
Content-Type:指示实体体中的对象类型。

3.4 cookie

cookie可以在无状态的HTTP之上建立一个用户会话层。
在这里插入图片描述

如图。cookie技术有四个组件:
1.在HTTP响应报文中有一个cookie首部行
2.在HTTP请求报文中的一个cookie首部行
3.在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理
4.位于Web站点的后端数据库

3.5 Web缓存

Web缓存器也叫代理服务器。
它能代替初始Web服务器来满足HTTP请求的网络实体。Web缓存器有自己的磁盘存储空间,并在存储空间中保存 最近请求过的对象的副本。
在这里插入图片描述

优点

1.大大减少对客户端请求的响应时间
2.能够大大减少一个机构的接入链路到因特网的通信量,通过减少通信量,就不必急于增加带宽,降低费用。
3.能从整体上大大减低因特网上的Web流量,改善了所有应用的性能。

条件GET方法

GET请求中包含If-Modified-Since首部行。
缓存器发送条件GET报文告诉服务器,仅当自指定日期之后该对象被修改过,才发送该对象。
如果没有修改过,响应报文不会包含所请求的对象。状态行为304 Not Modified,它告诉缓存器可以使用该对象,能向请求的浏览器转发它(该代理缓存器)缓存的对象副本。

4.HTTP的不同版本

4.1 HTTP1.1

默认使用长连接,解决了TCP复用问题,减少了TCP三次握手的开销。

4.2 HTTP2.0

1.采用二进制而非文本格式
2.采用多路复用,而非有序并阻塞的,只需一个连接即可实现并行,多路复用允许单一的 HTTP/2 连接同时发起多重的请求-响应消息
3.首部压缩,使用报头压缩,降低开销
4.支持服务器推送。可以将响应主动"推送"到客户端缓存中(服务器可以对一个客户端请求发送多个响应,例如请求了 HTML,可以响应需要的 CSS 和 JavaScript)

5.HTTP常见状态码

2XX 成功

200 服务器成功返回网页
204 NO CONTENT,请求成功响应,没有资源返回

3XX 重定向

301 Move permanently 永久性重定向,表示请求的资源已被分配了新的URI,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。
302 found 临时性重定向,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回302代码,搜索引擎认为新的网址只是暂时的。
304 未修改,自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容,进而节省带宽和开销。
307 Temporary Redirect 临时的重定向,该响应代码与302重定向有所区别的地方在于,收到307响应码后,客户端应保持请求方法不变向新的地址发出请求

4XX 客户端错误

400 bad request ,表示请求报文中存在语法错误
401错误代表用户没有访问权限,需要进行身份认证。
403 forbidden ,表明对请求资源的访问被服务器拒绝了
404 not found
405 Method Not Allowed,客户端请求中的方法被禁止

5XX 服务器错误

500 internal Server error ,表示服务器端在执行请求时发生了错误
502 Bad Gateway,作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503 service unavailable ,服务器超时,服务器超负载或正在进行停机维护
504 Gateway Timeout 表示扮演网关或者代理的服务器无法在规定的时间内获得想要的响应

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值