初步学习http协议

http的初步学习

@(示例)[关键字,知识点,图表,帮助]

1. http的简介

1.1. 定义

  http协议的英文名称为HyperText Transfer Protocol,全称为超文本传输协议。它是应用层协议,基于TCP和IP传输数据。

1.2. 特点

  • 明文传输。安全性比较差。一般我们访问银行和电子交易的网站,登陆和付款时需要下载插件,利用插件加保密文件。
  • 无状态。在浏览器和服务器进行数据传输和交互时,但我们输用户名和密码实现登陆,服务器就可以知道怎么作,我们就不需要进行下一步的操作。这属于保存状态了。但是单纯的HTTP协议是无法保存我们的状态,每次登陆都要重新登陆一次。
  • 应用层协议。目前版本为HTTP/1.1,效率比较低。
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

1.3 类型

静态超文本

客户端直接通过 URL请求到服务端相对应的资源,服务端直接将部署在数据库或者文件系统中的标签语言文件返还给客户端

动态超文本

动态超文本需要通过软件技术来实现创建和处理动态文本,例如CGI,JavaServlet等技术,将URL中‘?’之后的动态部分做解析并生成动态文档,并且可以嵌入脚本语言交付给浏览器中的解析引擎来提高动态文档的效率,使文档中不必要的重复的部分独立解析完成,甚至可以实现活动文档,直接在文档上运行字节码形式的java程序或者javascript脚本。

2.http消息结构

2.1 客户端请求消息

  http协议的请求消息的格式如下:请求行,请求头部,空行,请求数据。
1. 请求行

请求方法空格URL空格协议版本回车符换行符

2. 请求头部

头部字段名回车符换行符

3. 空行

回车符换行符

4. 请求数据

数据

2.2 请求消息示例

GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi

2.3 服务器响应消息

  HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
1. 状态行

协议版本空格状态代码空格状态代码英文名称

2. 消息报头

Date:星期几空格空格空格空格GMT
Contect-Type:文档类型charset
Contect-Length:字长

3. 空行:同上;
4. 响应正文,如果是text/html则是html文件。

2.4 响应消息实例

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

2.5 实例分析

  1. 消息报头
关键概念含义实现
GMT格林威治时间,中国东八区,加8个小时
Last-ModifiedLast-Modified的属性标记此文件在服务器端最后被修改的时间。服务器端的资源没有变化,则自动返回 HTTP 304(Not Changed.)状态码。
ETag用于标示URL对象是否改变服务器检查该ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304(未修改——Not Modified)和一个空的响应体。
Accept-EncodingHTTP Header中Accept-Encoding 是浏览器发给服务器,声明浏览器支持的编码类型默认是identity
text/plain纯文本类型

2. 协议版本
- http/1.1
- http/1.0

3. 状态代码

状态代码1内涵具体状态内涵具体状态内涵
1XX临时响应100继续203非授权信息
2XX请求成功101切换协议204无内容
3XX已重定向200请求成功205重置内容
4XX客户端请求错误201已创建206部分内容
5XX服务器请求错误202已接受300多种选择

(续上)

具体代码内涵具体代码内涵具体代码内涵
301永久移动307临时重定向405方法禁用
302临时移动400错误请求406不接受
303查看其他位置401未授权407需要代理授权
304未修改403已禁止408请求超时
305使用代理404未找到409请求冲突

(续上)

具体代码内涵具体代码内涵具体代码内涵
410已删除415不支持的媒体类型502错误网关
411需要有效长度416请求范围不符合要求503服务不可用
412为满足条件417请求不满足期望值504网关超时
413请求实体过大500服务器内部错误505http版本不受支持
414请求URL过长501尚未实施

4. Content-Type

常用Content-Type对照表2

文件扩展名content-type描述
.*application/octet-stream二进制流,不知道下载文件类型
.pdfapplication/pdfPDF(Portable Document Format的简称,意为“便携式文件格式”)
.aiapplication/postscriptPostScript(PS)是主要用于电子产业和桌面出版领域的一种页面描述语言和编程语言。
.xmlapplication/atom+xmlAtom feeds
.jsapplication/ecmascript相当于application/javascript但是严格的处理规则
文件扩展名content-type描述
.ediapplication/EDI-X12EDI ANSI ASC X12数据
.ediapplication/EDIFACTEDI EDIFACT数据
.jsonapplication/jsonJSON(JavaScript Object Notation)
.jsapplication/javascriptECMAScript/JavaScript(相当于application/ecmascript但是宽松的处理规则)
.oggapplication/oggOgg, 视频文件格式
.rdfapplication/rdf+xml资源描述框架(Resource Description Framework,缩写 RDF),是万维网联盟(W3C)提出的一组标记语言的技术标准,以便更为丰富地描述和表达网络资源的内容与结构。
文件扩展名content-type描述
.xmlapplication/rss+xmlRSS(Really Simple Syndication,简易信息聚合)是一种消息来源格式规范,用以聚合经常发布更新数据的网站,例如博客文章、新闻、音频或视频的网摘
.xmlapplication/soap+xml简单对象访问协议(SOAP,全写为Simple Object Access Protocol)是交换数据的一种协议规范,使用在计算机网络Web服务(web service)中,交换带结构信息。
.woffapplication/font-woffWeb开放字体格式(Web Open Font Format,简称WOFF)是一种网页所采用的字体格式标准。(推荐使用;使用application/x-font-woff直到它变为官方标准)
.xhtmlapplication/xhtml+xml可扩展超文本标记语言(eXtensible HyperText Markup Language,XHTML),是一种标记语言,表现方式与超文本标记语言(HTML)类似,不过语法上更加严格。
.xmlapplication/xml可扩展标记语言(英语:eXtensible Markup Language,简称: XML),是一种标记语言。
文件扩展名content-type描述
.dtdapplication/xml-dtdXML文件的文件型别定义(Document Type Definition)可以看成一个或者多个XML文件的模板,在这里可以定义XML文件中的元素、元素的属性、元素的排列方式、元素包含的内容等等。
.xmlapplication/xop+xml二进制优化封装协议(Xmlbinary Optimized Packaging)
.zipapplication/zipZIP压缩文件
.gzipapplication/gzipGzip是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip。
.xlsapplication/x-xlsXLS 就是 Microsoft Excel 工作表,是一种非常常用的电子表格格式。

5.请求方法3

  1. GET:
    • 描述:请求指定的页面信息,并返回实体主体;
  2. HEAD:
    • 描述: 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
  3. POST:
    • 描述: 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请 求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  4. PUT
    • 描述:从客户端向服务器传送的数据取代指定的文档的内容。
  5. DELETE
    • 描述:请求服务器删除指定的页面。
  6. CONNECT
    • 描述:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  7. OPTIONS
    • 描述:允许客户端查看服务器的性能。
  8. TRACE

    • 描述: 回显服务器收到的请求,主要用于测试或诊断。

    6.总结

    6.1 不懂的知识

    1. HTTP协议应该写在什么文件中,怎么运行的?
    2. HTTP协议中的cookie和session?
    3. HTTP协议与JavaScript的关系?

    6.2 感想

      学了HTTP协议,感觉前端要学东西慢慢出现了,是越来越接近前端的本质了吗?之前学了前端的三种语言,现在学因特网五层协议,感觉大佬让我们学习的顺序是有一定的道理的,跟着他的指导方向走,前面应该就是前端的奥秘吧!

    参考文献

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值