HTTP协议基础

148 阅读9分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、HTTP协议

超文本传输协议(HTTP)是一种通信协议,归属于应用层协议,主要解决如何包装数据。它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态. 超文本传输协议(HTTP,HyperText Transfer Protocol)时互联网上应用作为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一中发布和接收HTML页面的方法。HTTP协议再网络OSI模型属于应用层协议,应用层协议除了HTTP还有:FTP,SMTP,DNS,RIP,Telnet等。

HTTP协议工作与客户端——服务端架构上。浏览器作为HTTP客户端通过iuuoURL向HTTP服务端(即WEB服务器)发送请求。 1. 超文本 超文本英文名叫做Hypertext,我们再浏览器里面看到的网页就是超文本链接解析而成的,期网页源代码是一系列HTML代码,里面包括了一系列标签,如img显示图片,p指定显示段落等,浏览器解析这些标签后便形成了我们平常看到的网页,这网页的源代码HTML就可以称为超文本。

例如我们再Chrome浏览器里面打开百度首页,右键点击“查看源代码”,这些源代码都是超文本。 2. URL

我们在浏览器地址栏里输入的而网址叫做URL(Uniform Resource Locator,统一资源定位符号)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址(如:www.baidu.com/)。 当你在浏览器的地址中输入一个URL或是单击一个超链接时,URL就确定了要浏览的地址。浏览器通过超文本阐述协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。

基本格式如下

schema://host[:port#]/path/…/[?query-string][#anchor]

scheme 指定低层使用的协议(例如:http, https, ftp) host HTTP服务器的IP地址或者域名 port# HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明 path 访问资源的路径 query-string 发送给http服务器的数据 anchor- 锚

3. HTTP功能 HTTP协议(HTTP,HyperText Transfer Protocol,超文本传输协议)是用于从服务器传输文本到本地浏览器的传输协议。它可以是浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速的传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图像)等。

4. HTTP特点

(1)无连接:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

(2)媒体独立:这意味着,只要是客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定的适合MIME-type来传输。

(3)无状态:HTTP协议是无状态协议。无状态是指协议对于事物处理没有记忆能力。如果服务器不需要先先前信息,那么它的应答就比较快。但是缺少状态就意味着如果后续的处理需要前面的信息,则必须重传,这样可能导致每次连接传送的数据量增大,此时可以设置缓存。

5. HTTP与HTTPS

现在浏览网站时,通过浏览器地址栏可以看到有的网站时https开头(www.baidu.com),也有http开头(http://www.weathe…

HTTPS的全称时Hyper Text Transfer Protocol over secure Sockt Layer,是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层(Secure Sockets Layer 安全套接层),简称HTTPS。s是Security单词的首字母。

HTTPS的安全基础是SSL,因此通过它传输的额内容都是经过SSL加密的,它主要作用可以分为两种:

  1. 建立一个信息安全通道,来保证数据传输的安全。
  2. 确认网站的真实性,凡是使用了https的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过CA机构办法的安全签章来查询。

HTTP通常承载在TCP协议之上,有时会承载在TLS、SSL之上,就是HTTPS 在这里插入图片描述 HTTPS加解密过程 在这里插入图片描述

6. HTTP与TCP/IP的区别

1.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输 2.HTTP是应用层协议,主要解决如何包装数据。

关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:我们在传输数据时,可以只是用(传输层)TCP/IP协议。但是那样的话,如果没有应用层,边无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TRNLNET等,也可以自己定义应用层协议。WEB使用HTTP协议作为应用层协议,以封装HTTP文本信息,然后使用TCP/IP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

7. 什么是TCP/IP

TCP/IP是一个协议族,由底层的IP协议和TCP协议组成的;其全称为(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议。
TCP协议:是一种面向连接的、可靠的、基于字节流的传输层通信协议;
IP协议:将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。
IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制

8. HTTP请求过程

在浏览器输入百度首页的地址:www.baidu.com/

输入之后浏览器会打开百度首页。实际上这个过程是浏览器向网站所在的服务器发送了一个Request,即请求,网站服务器姐接收到这个Request之后进行处理和解析。然后返回对应的一个Response,计响应,然后传回给浏览器,Response里面就包含了页面的二源代码等内容,浏览器再对其他进行解析便将网页呈现出来。 在这里插入图片描述 9. 什么是OSI OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型 OSI参考模型和TCP/IP网络模型 在这里插入图片描述

二、HTTP的消息类型

1.请求(Request)消息 在这里插入图片描述 HTTP版本:HTTP/1.1,高版本的服务器接受低版本客户的请求,并向客户发送同样版本的应答;高版本的客户接受低版本服务器的应答。

方法

在这里插入图片描述 GET/POST 的区别 get是从服务器上获取数据,post是向服务器传送数据。

get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

get传送的数据量较小,不能大于2KB。post传送的数据量较大

get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 在这里插入图片描述 1、Connection:close

是在告知服务器本浏览器不想使用永久连接方式(HTTP/1.0使用非永久连接,HTTP/1.1默认使用永久连接)。

2、User-agent:Mozilla/4.0

指定用户代理服务器的类型。

3、Accept-Encoding:gzip,compress

指出发送此请求的浏览器支持哪些压缩编码方式。

4、Accept-languag:en

指出客户浏览器支持的语言是英语(english)

报文体(请求数据)

2.响应(Response)消息 在这里插入图片描述 状态行 HTTP/1.1 200 OK

状态行由 协议版本、状态码、原因短语 3个元素组成,各个元素之间用空格分隔。状态码字段由三个数字组成,标识客户请求方法的结果。

状态码5种可能的值: 在这里插入图片描述 报头行(报文头) 在这里插入图片描述 1、Date:Thu,13Oct200503:17:33GMT

指出服务器创建并发送本响应消息的日期和时间。HTTP允许下面三种不同格式的日期/时间,但必须是格林尼治标准时间:HTTP-date=rfc1123-date|rfc-850-date| asctime-date

2、Server:Apache/2.0.54(Unix)

指出本消息是由Apache服务器产生的,服务器版本为2.0.54

3、Last—Nodified:Mon,22Jun199809;23;24GMT

指出对象本身的创建或最后修改日期或时间。

4、Last—Nodified:

报头项对于对象的高速缓存至关重要,且不论这种高速缓存是发生在本地客户主机上还是发生在网络高速缓存服务器主机(也就是代理服务器主机)上。

5、Content—Length:682l

指出所发送对象的字节数。

6、Content—Type:text/html

指出包含在实体中的对象是HTML文本。


参考博客:blog.csdn.net/qq_43625917… 参考博客:www.cnblogs.com/youngleesin…