http:Hyper Text Transfer

Protocol,超文本传输协议。是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

html:Hyper Text Mark

Language,超文本标记语言。标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。

  • html文本框架:

            <html>
<head>
<title>TITLE</title>
</head>
<body>
<h1>H1</h1>
<p></p>
<h2>H1</h2>
<p> <a href="admin.html">ToGoogle</a> </p>
</body>
</html>

html文档的生成方式:

  • 静态:直接编写

  • 动态:编程语言编写的程序可输出html格式的结果,如,php,jsp,asp,.net

  • CGI:通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了客户端和服务器程序之间传输数据的一种标准。

http首部分为三类:通用首部,请求首部,响应首部

  • 通用首部:

            Connection:定义C/S之间关于请求、响应的有关选项

            Cache-Control:缓存控制
  • 请求首部:

            Client-IP:客户端IP地址
Host:请求的主机
Referer:指明了请求当前资源原始资源的URL,可做防盗链控制
User-Agent:用户代理
Accept:服务端能够发送的媒体的类型
Accept-Charset:可发送的字符集
Accept-Encoding:可发送的编码方式
Accept-Language:可发送的语言
条件式请求;安全相关请求
  • 响应首部:

            Age:从最初创建开始,响应持续时间
Server:向客户端说明自己的程序名称和版本
协商首部:
Vary:首部列表,服务器会根据列表中的内容挑一个最适用的版本发送给客户端
跟安全相关:
WWW-Authentication
Set-Cookie
  • 实体首部:

            Location:资源的新位置
Allow:允许对此资源使用的请求方法
内容相关的首部:
Content-Encoding:编码方式
Content-Language:主体最适宜使用的自然语言
Content-Length:主体的长度或尺寸
Content-Location:资源实际所处的位置
Content-Type:主体的对象类型
缓存相关:
Etag:与实体相关的实体标记
Expires:实体不再有效,需要再次获取日期和时间
Last-Modified:实体最后一次被修改的时间
  • 扩展首部:

非标准首部,可由程序猿自行创建,如:X-Forward-for,X-Via

http协议请求报文

        <method><request-URL><version>
<HEADERS>
<entity-body>

http协议响应报文格式

        <version><status><reason-phrase>
<HEADERS>
<entity-body>

解释:

  • sp(Space)空格符;cr ( carriage return )回车符;lf(line feed)换行符。

  • :请求方法

  • :请求的资源,可以是相对路径,如/image/log.jpg,也可以是绝对路径

  • :http协议版本,格式HTTP/.,例如HTTP/1.0,HTTP/1.1

  • :各种可以使用的首部

  • :状态码

  • :原因短语,指状态码的易读信息

  • 注意:http协议是无状态,stateless;无连接

http方法:

  • GET:从服务器端获取数据,请求获取一个资源

  • HEAD:跟GET近似,但其不需要服务响应请求的资源,而返回响应首部

  • POST:基于HTML表单向服务器提交数据,服务通常需要存储此数据;(位置:- 通常为关系型数据库)

  • PUT:与GET相反,向服务器发送资源,服务器通常需要存储此资源;(位置:通常为文件系统)

  • DELETE:删除URL指向的资源

  • OPTIONS:探测服务器端对请求的URL所支持使用的请求方法

  • TRACE:跟一次请求中间所经过的代理服务器、防火墙或网关等

http状态码:

  • 1XX:信息性状态码

  • 2XX:成功状态码,如200,ok;201,created

  • 3XX:重定向类状态码;
    301,Moved Permanently,永久重定向;
    302,临时重定向,会在响应报文中使用“Location:新位置”,
    304,Not Modified

  • 4XX:客户端类错误
    403:请求被拒绝,Forbidden
    404:Not Found
    405:Method Not Allowed

  • 5XX:服务器类的错误
    500:Internal Server Error,服务器内部错误,语法错误等
    502:Bad Gateway,代理服务器从上游服务器收到一条伪响应
    503:Service Unavailable,服务暂时不可用

web服务器:

  • 理解用户请求的资源格式不仅仅是纯html格式的文档
    静态资源
    动态资源:

       application/php

web资源:

  • 资源类型:MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展,是设定某种扩展名的文件用一种应用程序来打开的方式类型,HTTP协议中也使用了MIME的框架,标准被扩展为互联网媒体类型。

                major/minor
text/html
text/plain
image/jpeg
image/gif
vedio/mpeg4
application/vnd.ms-powerpoint
  • 资源名称:URI (Uniform Resource Idnentifier)
    URL:描述一个特定服务器上某资源的特定位置

       http://www.magedu.com:80/download/bash-4.3.1-1.rpm
    **分为三部分:**
    scheme(方案):http://
    服务器:www.magedu.com:80
    特定服务器上的资源:/download/bash-4.3.1-1.rpm
  • http事务:打开到关闭一个连接的过程

http协议版本:

  • http 0.9:仅用于传输HTML文档

  • http 1.0:引入MIME机制,从而支持多媒体数据;首部引入keep-alive(持久连接),请求到资源后不会四次挥手断开,支持缓存

  • http 1.1:更多请求方法,更精细缓存控制,持久连接(persistent);

web服务器的I/O结构:

  • 单进程模型:串行

  • 多进程模型:每个进程响应一个用户请求实现并发的效果

  • 复用的I/O机制:一个进程生成多个线程,单个线程响应一个用户请求

  • 复用的I/O机制:多个线程,每个线程响应多个用户请求

认识http协议的更多相关文章

  1. HTTP协议系列(1)

    一.为什么学习Http协议       首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...

  2. 重温Http协议--请求报文和响应报文

    http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...

  3. 协议森林17 我和你的悄悄话 (SSL/TLS协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...

  4. 协议森林16 小美的桌号(DHCP协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...

  5. 简约之美Jodd-http--深入源码理解http协议

    Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...

  6. 【JavaScript】javascript中伪协议(javascript:)使用探讨

    javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...

  7. SNMP简单网络管理协议

    声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...

  8. 海鑫智圣:物联网漫谈之MQTT协议

    什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...

  9. linux-图形化远程管理协议

    远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...

  10. RTP与RTCP协议介绍(转载)

    RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...

随机推荐

  1. NET Core中怎么使用HttpContext.Current

    NET Core中怎么使用HttpContext.Current 阅读目录 一.前言 二.IHttpContextAccessor 三.HttpContextAccessor 回到目录 一.前言 我们 ...

  2. 增强for循环(forearch)

    增强for循环是为了简化在遍历数组需要先获得数组的长度或者在遍历集合中的元素的时候需要使用迭代器的操作. 引入时间:JDK1.5 语法格式: for(数据类型 变量 :需要迭代的数组或者集合){ } ...

  3. &12-2 查找二叉搜索树

    #1,定理 在一棵高度为h的二叉搜索树上,动态集合上的操作SEARCH.MINIMUM.MAXIMUM.SUCCESSOR和PREDECESSOR可以在O(h)时间内完成. #2,伪代码 分别是搜索, ...

  4. java的守护线程与非守护线程

    最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) ,(PS:以 ...

  5. 浅谈设计模式--装饰者模式(Decorator Pattern)

    挖了设计模式这个坑,得继续填上.继续设计模式之路.这次讨论的模式,是 装饰者模式(Decorator Pattern) 装饰者模式,有时也叫包装者(Wrapper),主要用于静态或动态地为一个特定的对 ...

  6. FPGA中的INOUT接口和高阻态

    除了输入输出端口,FPGA中还有另一种端口叫做inout端口.如果需要进行全双工通信,是需要两条信道的,也就是说需要使用两个FPGA管脚和外部器件连接.但是,有时候半双工通信就能满足我们的要求,理论上 ...

  7. 特殊约束From To

    说实话这个不太懂,没用过也没有遇到相应的情况(或者说我不知道).大家可以更多的去参考特定约束FROM TO和MicroZed开发板笔记,第72部分:多周期约束等内容. 本文待修正 系列目录      ...

  8. jQuery学习笔记(四):attr()与prop()的区别

    这一节针对attr()与prop()之间的区别进行学习. 先看看官方文档是如何解释两者之间功能差异的: attr() Get the value of an attribute for the fir ...

  9. ASP.NET 系列:单元测试之StructureMap

    ASP.NET使用StructureMap等依赖注入组件时最重要就是EntityFramework的DbContext对象要保证在每次HttpRequest只有一个DbContext实例,这里将使用第 ...

  10. position为absolute的元素如何实现居中

    当给div设置absolute时,该元素已经脱离文档流,呈现浮动状态,只能通过left,top,right,bottom来设置属性,要实现居中有两种方法: 一.css法 <div class=& ...