认识http协议

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机制:多个线程,每个线程响应多个用户请求

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xcywt

TCP/IP详解 卷1 第二十章 TCP的成块数据流

1.停止等待协议:是tcp保证传输可靠的重要途径,“停止等待”就是指发送完一个分组就停止发送,等待对方确认之后,才能继续发送下一个分组

942
来自专栏信安之路

nmap使用指南(终极版)

2.指定范围 192.168.1.1-255 192.168.1-255.1(任意位置) 3.IPv6地址只能用规范的IPv6地址或主机名指定。 CIDR 和...

5580
来自专栏云瓣

HTTP相关整理(上)

这次整理HTTP相关知识点的初衷是因为项目中有大量与网络请求相关的知识细节点,所以这次整理的更多的是日常中用得到的点(参考图解HTTP),另外给打算做FE的新人...

3296
来自专栏xcywt

TCP/IP详解 卷1 第二十章 TCP的成块数据流

1.停止等待协议:是tcp保证传输可靠的重要途径,“停止等待”就是指发送完一个分组就停止发送,等待对方确认之后,才能继续发送下一个分组

1165
来自专栏小李刀刀的专栏

前端构建工具 Gulp.js 上手实例

在软件开发中使用自动化构建工具的好处是显而易见的。通过工具自动化运行大量单调乏味、重复性的任务,比如图像压缩、文件合并、代码压缩、单元测试等等,可以为开发者节约...

4487
来自专栏技术小黑屋

每周一脚本:过滤单个Android程序日志

在Android软件开发中,增加日志的作用很重要,便于我们了解程序的执行情况和数据。Eclipse开发工具会提供了可视化的工具,但是还是感觉终端效率会高一些,于...

971
来自专栏Web行业观察

网站备案你得知道这几个概念

域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程。IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替ip地址标识...

2537
来自专栏即时通讯技术

网络编程懒人入门(六):深入浅出,全面理解HTTP协议

HTTP(全称超文本传输协议,英文全称HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这...

1994
来自专栏Linyb极客之路

Java面试中常问的计算机网络方面问题

(GET)请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:/test/demo_form.asp?name1=value1&name2=...

982
来自专栏微信公众号:Java团长

Java面试中常问的计算机网络方面问题

(GET)请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:/test/demo_form.asp?name1=value1&name2=...

972

扫码关注云+社区

领取腾讯云代金券