万维网:(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请求访问的完整过程
-
建立连接
接收或拒绝连接请求 -
接受请求
接收客户端请求报文中对某资源的一次请求的过程 -
处理请求
服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理
常用请求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS
-
访问资源
服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源 -
构建响应报文
响应实体
URL重定向
MIME类型 -
发送响应报文
Web服务器通过连接发送数据时也会面临与接收数据一样的问题
对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。对持久连接来说,连接可能仍保持打开状态,在这种情况下,服务器要正确地计算Content-Length首部,不然客户端就无法知道响应什么时候结束 -
记录日志
最后,当事务结束时,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