web service 之http基础原理
web service
mac:设备与设备之间的通信,主机与路由器,路由器与路由器
ip:主机与主机
tcp/utp:传输层:提供进程地址
tcp:传输控制协议,面向连接的协议,通信前需要建立虚拟链路,建立三次握手
utp:无连接的协议:
socket:套接字:IPC的一种实现通信,允许位于同一主机或不同主机间进程之间进行通信,数据交换,socket api
SOCK_SITEAM:tcp套接字
SOCK_DGRAM:udp套接字
SOCK_RAW:裸套接字
0-1023:永久的分配给固定的应用使用,22/tcp(ssh),只能使用root来启动
1024-41951:为注册端口,要求不严格,分配给程序注册为某应用使用
41951+:客户端程序随机端口:动态端口,私有端口
/proc/sys/net/ipv4/ip_local_port_range --用于向外连接的端口范围
socket Domain(根据其所使用的 地址):
AF_INET:address Family,IPv4
AF_unix:同一个主机间的通信(客户机和主机在同一主机)不同进程
每类套接字都至少提供了两种socket:流(tcp),数据报(utp)
流:可靠地传递,面向连接,无边界
数据报:不可靠地传递,有边界,无连接
套接字相关的系统调用:
socket(0:创建一个套接字
bind():绑定
listen():监听
accept():接收请求
connect():请求连接建立
write():发动
read():接收
http协议
http:hyper text transfer protocol 超文本标记语言
html:编程语言,超文本标记语言
css:Cascading Style sheet
js:javascript(在浏览器执行的脚本)
MIME:多用途互联网扩展----实现通过文本格式发送非文本格式数据
web资源:web resource
静态文件:jpg,.gif,.html,.txt,.js,.css,mp3,
动态文件:-php,jsp
媒体:
媒体类型(MIME类型):maior/minor
URL:是Uniform Resoure Locator(统一资源定位器)的缩写。就是WWW页的地址。
其URL地址格式排列为:scheme://host:Port/path
一次完整的http请求过程:
(1):建立连接服务端接收客户端请求:
(2):接收请求:接收来自于网络的请求报文中对某资源的一次请求的过程
并发访问响应模型(web I/O)
单进程I/0结构:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应
多进程I/0结构,并行多启动多个进程,每个进程响应一个请求
复用I/O结构:一个进程处理多个用户请求
多线程模型: 一个进程生成多个线程,线程处理用户请求
复用的多进程I/O结构,生成多个进程,每个进程生成线程处理多个请求
(3):处理请求:对请求的资源进程解析,并获取请求的资源以及请求方法等相关信息
元数据;请求报文首部
<methed> <URL> <version>
host:www.baidu.com 请求的主机名称
(4):获取资源(访问资源):获取请求报文中请求的资源
web服务器:即存放了web资源的服务器,负责向请求者提供对方请求的静态资源
或动态运行后生成的资源,这些资源放置于本地文件系统某路径下,,
(5):构建相应报文
(6):发送响应报文
(7):记录日志
httpd:apache
httpd
centos 6 yum包 2.2
centos 7 yum包 2.4
安装方式:
rpm和编译安装
centos 6 :
程序环境
配置文件:/etc/httpd/conf/httpd.conf/httpd
/etc/httpd/conf/http.d/*.conf
服务脚本: /etc/init.d/httpd/
配置文件:/etc/sysconfig/httpd/
主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
日志文件目录:
/var/log/httpd
access_log:访问日志
error_log:错误日志
站点文档目录:
/var/www/html
[root@servername1 yum.repos.d]# grep "Section" /etc/httpd/conf/httpd.conf
### Section 1: Global Environment
### Section 2: 'Main' server configuration
### Section 3: Virtual Hosts
常用配置:
1、修改监听的ip和Port
Listen [ip:port]
2、持久连接
Persistent Conection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的资源请求
断开:
KeepAlive Off是否持续连接
KeepAliveTimeout 15 断开连接前的时间
测试:
telnet HOST port
get hhtP/1.1
host:hostname or ip
3、MPM
httpd2.2默认事prefork, 查看静态默认的模块
httpd -l
查看静态编译以及动态装载的模块
httpd -M
更改模块的文件/etc/sysconfig/httpd/
PV:page view 页面
UV:user view 用户
4、DSO 动态共享对象
路径/usr/lib64/httpd/modules
配置指令实现模块加载
LoadModule <mod_name> <mod_path> 路径可用于相对路径/etc/httpd/co
5、定义'Main' server的文档页面路径
DocumentRoot
文档路径映射:
DocumentRoot 指向路径为URL路径的起始位置
DocumentRoot "/var/www/html"
6、站点访问控制
可基于两种类型的路径指明对哪些资源进行访问控制
文件系统路径:
<Directort ""> </Directort
URl路径:
<Location ""> </Location>
访问控制机制:
基于来源地址
基于账号
7、定义默认主页面
DirectoryIndex index.html index.html.var
Options Indexes 通过索引来获取页面
FollowSymLinks 允许跟踪符号连接文件;
8、日志设定
错误日志路径: /etc/httpd/logs/error_log
错误日志的级别:
debug,info,notice,warn,error,crit,alert,emerg
访问日志路径 /etc/httpd/logs/access_log
日志格式:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
%h:客户端地址
9、基于用户的访问控制
认证机制:WWW-Authenticate:响应吗为401,拒绝客户端请求,并要求用户提供账号和密码
认证:Authorization: 客户端用户填入账号和密码后再次发送请求报文,认证通过,则服务器响应的资源
认证类型:
basic:明文
digest:消息摘要
10、虚拟主机
有三种方式:
基于IP:
为每个虚拟主机准备至少一个ip地址:
基于port:
为每个虚拟机主机准备至少一个专用port,实践中很少使用
基于hostnaem:
为每个虚拟主机准备至少一个专用hostname
注意:一般使用虚拟主机,先禁用中心主机,
禁用中心主机:注释DocumentRoot
每个虚拟主机都有专用配置:
<VirtuaHost "IP:PORT">
ServerName
DocumentRoot""
<VirtuaHost>
ServerAlias:虚拟主机的别名:
Errorlog
CustomLog
<Directory "">
</Directory>
基于IP 的虚拟主机:
1、注释中心主机的页面
2、
<VirtualHost 192.168.1.221:80>
ServerName server1
DocumentRoot "/vhosts/web1/htdocs"
</VirtualHost>
<VirtualHost 192.168.1.222:80>
ServerName server1
DocumentRoot "/vhosts/web2/htdocs"
</VirtualHost>
基于端口的虚拟主机:
1、注释中心主机的页面
2、
<VirtualHost 192.168.1.221:80>
ServerName server1
DocumentRoot "/vhosts/web1/htdocs"
</VirtualHost>
<VirtualHost 192.168.1.221:8080>
ServerName server1
DocumentRoot "/vhosts/web2/htdocs"
</VirtualHost>
基于主机名的虚拟主机
1、开启NameVirtualHost *:80
2、<VirtualHost 192.168.1.221:80>
ServerName web1.magedu.com
DocumentRoot "/vhosts/web1/htdocs"
</VirtualHost>
<VirtualHost 192.168.1.221:80>
ServerName web2.magedu.com
DocumentRoot "/vhosts/web2/htdocs"
</VirtualHost>
11、内置的status页面