认识HTTP协议与apache

发布时间 2023-12-09 18:29:28作者: 打开方式不对

万维网:(www)并非计算机网络,而是一个大型的数据库,可以实现网页与网页之间的跳转

url:资源定位符 描述了一个资源在服务器上的具体位置

http:超文本传输协议 图片 视频 小程序

http: Hyper Text Transfer Protocol 应用层协议,默认端口: 80/tcp

可以使用http协议的软件

  • apache

  • nginx

  • tomcat

HTTP的工作机制

一次http事务包括:

  • http请求:http request

  • http响应:http response

事务:操作的集合

资源类型:

  • 静态文件:无需服务端做出额外处理,服务器端和客户端的文件内容相同

    常见文件后缀:.html, .txt, .jpg, .js, .css, .mp3, .avi

  • 动态文件:服务端执行程序,返回执行的结果,服务器端和客户端的文件内容不相同

    常见文件后缀:.php, .jsp ,.asp

HTTP连接的类型:

  • 并行连接:通过多条TCP连接发起并发的HTTP请求

  • 持久连接:keep-alive,重用TCP连接,以消除连接和关闭的时延,以事务个数和时间来决定是否关闭连接

  • 管道化连接:通过共享TCP连接,发起并发的HTTP请求

  • 复用的连接:交替传送请求和响应报文(实验阶段)

HTTP协议的版本

  • 0.9:只能下载
  • 1.0:上传 下载 无长连接
  • 1.1:支持长连接

长连接:一次三次握手,多次下载

 

http请求访问的完整过程

  1. 建立连接
    接收或拒绝连接请求

  2. 接受请求
    接收客户端请求报文中对某资源的一次请求的过程

  3. 处理请求

    服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理

    常用请求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS

  4. 访问资源
    服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源

  5. 构建响应报文
    响应实体
    URL重定向
    MIME类型

  6. 发送响应报文
    Web服务器通过连接发送数据时也会面临与接收数据一样的问题
    对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。对持久连接来说,连接可能仍保持打开状态,在这种情况下,服务器要正确地计算Content-Length首部,不然客户端就无法知道响应什么时候结束

  7. 记录日志

    最后,当事务结束时,Web服务器会在日志文件中添加一个条目,来描述已执行的事务

     

HTTP请求报文的类型

  • GET: 获取资源 当前网络请求中,绝大部分使用的是 GET 方

  • HEAD: 获取报文首部,主要用于确认 URL 的有效性以及资源更新的日期时间等

  • POST: 传输实体主体 (比如传输 用户名密码)

  • PUT: 上传文件(比如写博客)

  • PATCH: 对资源进行部分修改

  • DELETE:删除文件

  • OPTIONS:查询支持的方法(查看服务端可以支持哪些方法)

  • CONNECT:要求在与代理服务器通信时建立隧道(类似加密)

  • TRACE:追踪路径

HTTP协议状态码

  • 1xx:100-101 信息提示
  • 2xx:200-206 成功
  • 3xx:300-307 重定向
  • 4xx:400-415 错误类信息,客户端错误
  • 5xx:500-505 错误类信息,服务器端错误

 HTTP协议常用的状态码

200: 成功,请求数据通过响应报文的entity-body部分发送;OK
301: 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently
302: 响应报文Location指明资源临时新位置 Moved Temporarily
304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified
307:  浏览器内部重定向
401: 需要输入账号和密码认证方能访问资源;Unauthorized
403: 请求被禁止;Forbidden
404: 服务器无法找到客户端请求的资源;Not Found
500: 服务器内部错误;Internal Server Error,比如:cgi程序没有执行权限
502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
503: 服务不可用,临时服务器维护或过载,服务器无法处理请求,比如:php服务停止,无法处理php程序
504: 网关超时

 

apache

  • 提供http协议服务

  • 多个虚拟主机:IP、Port、FQDN

  • CGI:Common Gateway Interface,通用网关接口,支持动态程序

  • 反向代理

  • 负载均衡

  • 路径别名

  • 丰富的用户认证机制:basic,digest

  • 支持第三方模块

apache特性:

  • 高度模块化:core + modules

  • DSO:Dynamic Shared Object 动态加载/卸载

  • MPM:multi-processing module 多路处理模块

 

HTTP的安装与相关配置

由httpd安装包提供

yum  install  httpd  -y

centos7以上版本默认的是httpd2.4版本   centos6版默认为httpd2.2

Ubuntu 18.04 默认 Apache/2.4.29

httpd-2.4相关文件

配置文件

  • /etc/httpd/conf/httpd.conf 主配置文件

  • /etc/httpd/conf.d/*.conf 子配置文件

  • /etc/httpd/conf.d/conf.modules.d/ 模块加载的配置文件

服务单元文件:

  • /usr/lib/systemd/system/httpd.service

  • 配置文件:/etc/sysconfig/httpd

服务单元文件:

  • /usr/lib/systemd/system/httpd.service

  • 配置文件:/etc/sysconfig/httpd

主服务器程序文件:

  • /usr/sbin/httpd