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. 【点滴积累,厚积薄发】修改hosts,并刷新dns缓存

    Windows系统下hosts位置 C:\Windows\System32\drivers\etc 修改hosts后,要想马上生效,需要运行命令来刷新DNS缓存:ipconfig /flushdns

  2. Castle ActiveRecord 二级缓存使用 异常记录

    在 本公司的 IBeamMDAA 框架下,如果是配置为本机调试时,AR的查询缓存工作正常,但如果部署到服务器上,工作不正常,二级缓存配置为使用 MemoryCahcheD 服务器,二级缓存没有能够根据 ...

  3. [LINK]php的三种CLI常量:STDIN,STDOUT,STDERR

    FROM : http://www.cnblogs.com/thinksasa/archive/2013/02/27/2935158.html PHP CLI(command line interfa ...

  4. [py]特殊函数+文件保护

    1函数的好处 2函数的全局变量和局部变量 3,包和文件夹的区别 4,__name__ __file__ __doc__ #判断是否为主程序 if __name__=='__main__': pass ...

  5. NOI2018准备 Day11

    今天7点半到9点我都不知道自己在干啥, 一共A了3道题,2道钻石,1道大师. 下午调一道线段树3个小时没调出来,一个单调栈2小时没搞出来...... 学了个算法:求极大子矩阵. 昨天定的目标是学指针, ...

  6. VMware精简系统Win系列|体积更小更稳定

    此Win系列基于VMware10 给个我自用的超精简VM10.0.3 XP重新制作体积大了一点但更稳定,压缩包166M 制作了Win 2003,压缩包171.4M Win7重新制作体积更小更稳定,压缩 ...

  7. directly receive json data from javascript in mvc

    if you send json data to mvc,how can you receive them and parse them more simply? you can do it like ...

  8. Tomcat遇到的问题

    1. java.lang.OutOfMemoryError: PermGen space 启动tomcat服务时,报这个错,查了下是,内存泄露 PermGen space的全称是Permanent G ...

  9. CentOS6.5下搭建NFS文件服务器

    本文参考这里 CentOS下搭建NFS服务器总结 环境介绍: 1. 服务器: 192.168.0.100 2. 客户机: 192.168.0.101 安装软件包: 服务器和客户机都要安装nfs 和 r ...

  10. mindmup-editabletable-编辑table的使用

    官方网站:http://mindmup.github.io/editable-table/ github下载地址:https://github.com/mindmup/editable-table 我 ...