HTTP协议概述

如果你在网站上看我的博客,这篇文章的数据就是你使用http协议从服务器那里得到的 

HTTP是什么玩意?

HTTP是超文本传输协议,全称为HyperText Transfer Protocol。HTTP的中文名字叫「超文本传输协议」,它可以拆成三个部分:

  1. 超文本
  2. 传输
  3. 协议

HTTP 协议是互联网用作获取例如 HTML 文档这类资源的基础协议,是网页开发的必备知识,它基于 TCP/IP 协议的应用层协议,是 Web 上进行任何数据交换的基础应用层协议,不涉及数据包(packet)传输。同时,也是一种客户端—服务器(client-server)协议,也就是说,请求是由接受方——通常是浏览器发起的,一个完整网页文档是由获取到的不同文档组件:像是文本、布局描述、图片、视频、脚本等重新构建出来的。主要规定了客户端和服务器之间的通信格式,默认使用80端口。

 请求由一个实体,即用户代理(user agent),或是一个可以代表它的代理方(proxy)发出。大多数情况下,这个用户代理都是一个网页浏览器,不过它也可能是任何东西,比如一个爬取网页来充实、维护搜索引擎索引的机器爬虫。每个请求都会被发送到一个服务端,它会处理这个请求并提供一个称作响应的回复。在客户端与服务端之间,还有许许多多的被称为代理的实体,履行不同的作用,例如充当网关或缓存。

基于HTTP的组件系统

用户代理

任何能够代表用户行为的工具,以浏览器为主,也可能是工程师和 Web 开发人员调试应用所使用的那些程序比如爬虫。

web服务端

一个服务端可以是一台机器,也可以是多个设备假装表现为仅有一台机器,但实际上,它可以是共享负载的一组服务器集群(负载均衡)或是其他类型的软件(如缓存、数据库服务、电商服务等),按需完整或部分地生成文档,一个服务器可以不仅仅只有一台机器,而多个服务端软件实例也可部署在同一台机器上。利用 HTTP/1.1 和 Host 标头,它们甚至可以共用同一个 IP 地址。

代理

在浏览器和服务器之间,有许多计算机和设备参与传递了 HTTP 消息。依靠 Web 技术栈的层次化的结构,传递过程中的多数操作都位于传输层、网络层或物理层,它们对于 HTTP 应用层而言就是透明的,并默默地对网络性能产生着重要影响。还有一部分实体在应用层参与消息传递,一般被称为代理(Proxy)。代理可以是透明的,即转发它们收到的请求并不做任何修改,也可以表现得不透明,将它传递给服务端之前使用一些手段修改这个请求。代理可以发挥很多种作用:

  • 缓存(可以是公开的也可以是私有的,如浏览器的缓存)
  • 过滤(杀毒软件、青年少年模式)
  • 负载均衡(不同服务器服务不同的请求)
  • 认证(控制对不同资源的访问)
  • 日志(使得代理可以存储历史信息)

HTTP常见状态码

五大类状态码
1类提示信息,表示目前协议处理的中间状态,还需要后续的操作
2类成功,报文已经收到并被正确处理,这是我们最想看到的200、204、206
3类重定向,资源位置发生变动,需要客户端重新发送请求301、302、304
4类客户端错误,请求报文有误,服务器无法处理400、403、404
5类服务器错误,服务器在处理请求时内部发生了错误

状态码含义
200 OK是最常见的成功状态码,表示一切正常。如果是非HEAD请求,服务器返回的响应头都会有body数据。
204 No Content也是常见的成功状态码,与200OK基本相同,但是响应头没有body数据。
206 Partial Content是应用于HTTP分块下载或断电续传,表示响应返回的body数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。
301 Moved Permanently表示永久重定向,说明请求的资源已经不存在了,需改用新的URL再次访问。
302 Moved Temporarily表示临时重定向,说明请求的资源还在,但暂时需要用另一个URL来访问。301和302都会在响应头里面使用字段Location,指明后续需要跳转的URL,浏览器会自动重定向新的URL.
304 Not Modified不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,用于缓存控制。
400 Bad Request表示客户端请求的报文有错误,但只是个笼统的错误。
403 Forbidden表示服务器禁止访问资源,并不是客户端的请求错误。
404 Not Found表示服务器禁止访问资源,并不是客户端的请求错误。
500 Internal Server Error与400类型,是个笼统通用的错误码,服务器发生了什么错误,我们并不知道。
501 Not Implemented表示客户端请求的功能还不支持,类似“即将开业,敬请期待”的意思。
502 Bad Gateway通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
503 Service Unavailabe表示服务器当前很忙,暂时无法响应服务器,类似“网络服务很忙,请稍后重试”的意思。

HTTP常见请求头

1、Accept:指定浏览器或其他客户端程序所能处理的MIME类型(IE5和6在重新载入页面时,发送的Accept报头不正确,但在最初的请求中是正确的)。

2、Accept-Charset:标明浏览器可以使用的字符集(如ISO-8859-1).

3、Accept-Encoding:详细列出客户端能处理的编码类型(gzip,compress是两种常见的值),一般来讲花在解码上的时间要远远小于传输的开销。

4、Accept-Language:在servlet能够以多种语言生产结果时,列出客户程序首选的语言。这个报头的值应该是标准语言代码的一种,比如en, en-us, da等。

5、Authorization:在访问密码保护的WEB页面时,客户用这个报头来识别自己的身份。(Https)

6、Connection:标明客户是否能够处理持续性HTTP连接。持续性(Keep-Alive)是默认的选项。

7、Content-Length:只适用于POST请求,用来给定POST数据的大小,以字节为单位。request.getContentlength()方法得到这个报头。(GET的方法不行?)

8、Cookie:这个报头向服务器返回cookie,这些cookie是之前服务器发送给浏览器的。使用request.getCookies读取这个报头。

9、Host:在HTTP1.1中,浏览器和其他客户端程序需要制定这个报头,它标明原始URL中给出的主机名和端口号。

10、If-Modified-Since:这个报头标明,仅当页面在指定日期之后发生更改的情况下,客户程序才希望获取该页面。

11、If-Unmodified-Since:和If-Modified-Since:相反:规定仅当文档比指定的日期要旧时,操作才需要继续。

12、Referer:标明引用Web页面的URL。例如,WEB1单击指向WEB2的链接,在浏览器请求WEB2页面是会把Referer指定为WEB1的URL。

13、Use-Agent:标识生产请求的浏览器或其他客户端程序,根据这个报头,可以针对不同类型的浏览器返回不同的内容。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
TCP协议,全称为传输控制协议(Transmission Control Protocol),是一种面向连接的、可靠的、基于字节流的传输层协议。它是互联网协议族中最重要的协议之一,常被用于应用层协议(如HTTP、FTP、SMTP等)的传输。 TCP协议的特点如下: 1. 面向连接:TCP协议在传输数据之前,必须先建立连接,通信双方才能互相发送数据。连接建立包括三次握手,即发送方向接收方发送一个请求连接的报文,接收方回复一个确认连接的报文,最后发送方再回复一个确认连接的报文。这样就确保了通信双方都已经准备好了发送和接收数据。 2. 可靠传输:TCP协议可以确保数据的可靠传输,通过序列号和确认号实现对数据包的可靠传输。发送方将每个数据包编号,并且要求接收方发送确认信息。如果发送方没有收到确认信息,就会重新发送该数据包,直到接收方发送确认信息。 3. 基于字节流:TCP协议是基于字节流的,即将待传输的数据按照字节流的方式进行传输。因此,TCP协议在传输过程中不关心数据的含义,只是将其作为一连串的字节进行传输。 4. 流量控制:TCP协议使用滑动窗口技术来进行流量控制,保证发送方和接收方之间的数据传输速度相匹配。发送方可以根据接收方的反馈动态调整数据发送的速率,避免发送方发送过快导致接收方来不及处理数据。 5. 拥塞控制:TCP协议使用拥塞控制算法来避免网络拥塞。如果网络发生拥塞,TCP会逐步减少发送速率,从而避免网络拥塞的发生。 总之,TCP协议是一种可靠的、面向连接的协议,可以保证数据的可靠传输,并且支持流量控制和拥塞控制,是互联网协议族中最重要的协议之一。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中二电工吹短笛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值