HTTP入门知识

简介:

http: HyperText Transfer Protocol: 文本传输协议

html: HyperText Mark Language:超文本标记语言。

http监听在80/tcp

request报文请求

response报文响应


报文传输过程:应用层协议发送get命令,ftp协议对get命令进行封装,报文传输到tcp层之后,在这一层为其添加目标端口和源端口,就标记了进程的地址,然后报文被送到ip层,再为其封装一个ip首部,就标记了源ip地址和目标ip地址,就能够找到目标主机。再通过链路层传送,最终通过物理层到达目的地。

报文接收:内核监控得知网卡接收报文,内核将报文进行处理,首先判断物理地址是否对应,对应了再看看目标ip地址是否对应,看完后再检查端口,这样就找到了对应的服务。

动态端点:

   客户端动态:极不安全

   applet

   服务器端动态:

   CGI: Common Gateway Interface :通用网关接口

web资源:

  web object

http版本:

   http/0.9: stateless 仅能响应文本

   http/1.0: MIME, keep-alive (保持连接), 缓存

      Multipurpose Internet Mail Extesions, 多功能,多用途互联网邮件扩展

   将非文本信息编码成二进制格式,由smtp进行传送,传送过去由浏览器解码查看。浏览器只能识别html格式的内容,所以还要调用外部的工具进行查看。或者浏览器自己有插件,这样也能查看内容了。

MIME

   major/minor(主格式/次格式

   image/jpg jpg格式的图片

   image/gif  gif格式的图片

   text/html 纯文本格式

   video/quicktime视频流

   appliation/x-httpd-php

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

    URI: Uniform Resource Identifier统一资源标识符

    URLUniform Resource Locator统一资源定位

 格式:scheme://[username:password@]HOST:port/path/to/source

     例如:http://www.magedu.com/downloads/nginx-1.5.tar.gz

  URN:统一资源命名符

HTTP事务:一个请求以及与其对应的响应报文

HTTP方法:

  GET: 完整请求一个资源

  HEAD: 仅请求响应首部

  POST:提交表单

  PUT: (webdav)

  DELETE(webdav)

  OPTIONS:返回请求的资源所支持的方法的方法

  TRACE: 一个资源请求中间所经过的代理

HTTP缓存机制:

     私有缓存

     公共缓存

HTTP的响应码:

   1xx: 信息性状态码

        100, 101

   2xx: 成功状态码

        200OK

   3xx: 重定向状态码

        301: 永久重定向, Location响应首部的值仍为当前URL,因此为隐藏重定向;

        302: 临时重定向,显式重定向, Location响应首部的值为新的URL

        304Not Modified:没有修改(在条件请求中用到)

   4xx: 客户端错误状态码

        404: Not Found

   5xx: 服务器端错误状态码

        500: Internal Server Error(服务器在执行、配置上有问题)

        502: Bad Gateway(任何一个代理找不到上一级的代理的时候)

        503:服务不可用

        504Gateway Timeout:网关超时

HTTP报文格式:

    起始行

    首部:标签加上一个值。例如:Host: www.magedu.com

    主体

请求格式:request:

            <method> <request-URL> <version>

             请求方法    请求的URL    协议版本

            <headers>

               首部

            <entity-body>

                主体

例如:在浏览器搜素172.16.0.1/centos6.repo可以访问到文件内容

  Google浏览器F12键可以评估网页的性能,IE 浏览器需要安装htpwatch

#telnet 172.16.0.1 80 172.16.0.1站点的80号端口发送请求

GET  /  http/1.1

Host: 172.16.0.1

172001713.png

#telnet 172.16.0.1 80 172.16.0.1站点的80号端口发送请求

GET  /centos6.repo  http/1.1

Host: 172.16.0.1

得到结果:

172026391.png

响应格式:response:

           <version> <status> <reason-phrase>

              版本     状态码    原因短语

           <headers>

                首部

           <entity-body>

              主体部分

version: HTTP/major.minor, HTTP/1.0

HTTP报文首部:

   通用首部:请求和响应均可使用:例如:

            Connection: 指定连接选项

            Date: 报文创建日期和时间

            Via: 所经过的代理服务器

   请求首部:

            Host: 所请求的主机

            Referer: 提供了包含当前请求URI文档的URL

            Accept: 接受的MIME类型

            Accept-Charset:所接受的字符集

            Accept-Encoding: 接受的编码方式

            Accept-Lanague: 告诉服务器能够发送哪些语言

   条件请求首部:

            If-Modified-Since

            If-None-Match

   安全请求首部:

            Authorization: 客户端提供给服务器的认证信息;

            Cookie: 追踪用户状态

            Cookie2:

   响应首部:

            Age: 从最初创建开始,响应持续时间

            Server: 服务器软件名称及版本

            Vary: 会影响缓存机制(是否压缩等)

            Set-Cookie:设定Cookie

            Set-Cookie2

   实体首部:

            Allow: 允许的请求方法

            Location: 资源的实际位置

            Content-Language: 内容是那种语言

            Content-Location: 内容位置

            Content-Type: 内容类型。例如:MIME

            ETag: 实体标记

            Expires: 过期的缓存

            Last-Mofified上次修改的时间

一次HTTP事务的完成过程:

1、建立连接

2、接收请求

3、处理请求

4、获取资源

5、构建响应

6、回送响应

7、记录日志


高度模块化: DSO(动态共享对象)

MPMMultipath Processing Module:多路处理模块

      prefork: 一个进程响应一个请求

      worker:一个进程生成多个线程,一个线程响应一个请求

      event:事件驱动模式


        httpd-1.3非常稳定,但没有许多新的性能。官方不再维护

        httpd-2.0httpd-1.3很相近

        httpd-2.2   centos6默认所带的

        httpd-2.4最新的系列

httpd:

    alias 路径别名

    Auth用户认证

    virtual host虚拟主机

    Mpm模块属性定义


版本:HTTP/0.9, HTTP/1.0, HTTP/1.1


httpd的相关信息:

    服务脚本:/etc/rc.d/init.d/httpd

    运行目录:/etc/httpd

    配置文件:/etc/httpd/conf/

    主配置文件:httpd.conf

    扩展配置:/etc/httpd/conf.d/*.conf

    监听端口socket: http: 80/tcp, https: 443/tcp

    网页文件目录(DocumentRoot)/var/www/html

    CGI: /var/www/cgi-bin/

安装并启动web服务

需要注意的是httpd的默认安装会试图通过反解当前主机的ip地址来为httpd服务器提供一个主机名称,如果反解是失败的它就会报错,并且告诉你主机名称解析失败,使用127.16.4.1当做当前主机的主机名。所以为避免此问题,建议先编辑/etc/hosts

如:127.16.4.1    www.magedu.com    www           别名为www

安装httpd

   #service httpd start重启服务

   #chkconfig --list httpd 查看运行级别

   #chkconfig httpd on 打开2 3 4 5级别

默认主页面:index.html

直接以127.16.4.1 访问的时候,显示的是测试页面,即默认的主页面。我们编辑/var/www/html/index.html文件

<html>

     <title> Test Page</title>

     <body>

          <h1> Hello</h1>

            Hello word

     </body>

</html>

这样我们打开的就是我们所编辑的内容了。

如果我们不对/var/www/html/index.html文件进行编辑,又不想显示欢迎界面,那就需要修改配置页面了。

(1)/etc/httpd/conf/httpd.conf中修改

(2)/etc/httpd/conf.d目录下的welcome.conf删除或文件名改变

配置httpd的工作属性:vim /etc/httpd/conf/httpd.conf

指令不区分字符大小写,但约定俗成的习惯:单词的首字母大写;指令的值很有可能区分大小写;有些指令可以重使用多次;

配置文件的构成:主服务器和虚拟主机不能同时启用

   全局配置:对主服务器或虚拟机都有效,且有些功能是服务器自身工作属性;

   主服务器:主站属性;

   虚拟主机:虚拟主机及属性定义

配置文件语法测试:

    # service httpd configtest 检查语法是否有错误

    # httpd -t

大多数配置修改后,使用service httpd reload即能生效;

而修改监听的地址和端口通常需要重启服务,使用命令service httpd restart




本文转自 宋鹏超 51CTO博客,原文链接:http://blog.51cto.com/qidian510/1280126,如需转载请自行联系原作者

相关文章
|
2月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
27 0
|
3月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)(上)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
29 0
|
3月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)(下)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
25 0
|
2月前
|
前端开发 JavaScript UED
轻松入门Axios二:前端开发中的HTTP利器
轻松入门Axios二:前端开发中的HTTP利器
49 0
|
2月前
|
JSON 前端开发 JavaScript
轻松入门Axios:前端开发中的HTTP利器
轻松入门Axios:前端开发中的HTTP利器
35 0
|
7月前
|
XML 开发框架 Java
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)
|
4月前
|
Web App开发 缓存 网络协议
HTTP协议入门详解
HTTP协议入门详解
31 0
|
6月前
|
中间件 测试技术 数据库
软件测试|测试平台开发-Flask 入门:Flask HTTP请求详解
软件测试|测试平台开发-Flask 入门:Flask HTTP请求详解
39 0
|
7月前
|
XML 监控 Java
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)4
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)4
|
7月前
|
存储 安全 Java
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)3
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)3