Web Service
Port number:
0-1023:众所周知,永久的分配给固定的应用使用,22/tcp(ssh),80/tcp(http),443/tcp(https)
1024-41951:亦为注册端口,但要求并不是特别严格,分配给程序注册为某应用使用,11211/tcp,11211/udp(memcached),3306/tcp(mysql)
41952+:客户端程序随机使用的端口;动态端口,或私有端口;
Socket:IPC的一种实现,允许位于不同主机(甚至同一主机)上不同进程之间进行通信;数据交换;Socket API,1983年,4.2 BSD
SOCK_STREAM:tcp套接字
SOCK_DGRAM:udp套接字
SOCK_RAW:裸套接字
TCP协议的特性:
建立连接:三次握手
将数据打包成段:校验和(CRC-32)
确认、重传以及超时;
排序:逻辑序号
流量控制:滑动窗口算法
拥塞控制:慢启动和拥塞避免算法
Socket Domain(根据其所使用的地址):
AF_INET:Address Family,IPv4
AF_INET6:IPv6
AF_UNIX:同一主机上不同进程之间通信时使用;
每类套接字都至少提供了两种socket:流,数据报
流:可靠地传递、面向连接、无边界;
数据报:不可靠地传递、有边界、无连接;
套接字相关的系统调用:
socket():创建一个套接字;
bind():绑定
listen():监听
accept():接收请求
connect():请求连接建立
write():发送
read():接收
send(),recv(),sendto(),recvfrom()
http:hyper text transfer protocol
html:编程语言,超文本标记语言;
CSS:Cascading Style Sheet
js:javascript
MIME:Multipurpose Internet Mail Extesion
Web资源:web resource
静态文件:.jpg .gfi .html .txt .js .css .mp3 .avi
动态文件:.php .jsp
媒体:
媒体类型(MIME类型):major/minor
text/html
text/plain
image/jpeg
image/gif
URI:Uniform Resource Identifier
URL:Uniform Resouce Locator,用于描述某服务器某特定资源的位置;
URN:Uniform Resource Naming
一次完整的http请求过程:
(1) 建立或处理连接;接收请求或拒绝请求
(2) 接收请求;
接收来自于网络的请求报文中对某资源的一次请求的过程;
并发访问响应模型(web I/O):
单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应;
多进程I/O结构:并行启动多个进程,每个进程响应一个请求;
复用I/O结构:一个进程响应n个请求;
多线程模型:一个进程生成N个线程,每个线程响应一个用户请求;
事件驱动:event-driven
复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求;
(3) 处理请求:对请求报文进行解析,并获取请深圳市的资源及请求方法等相关信息
(4) 访问资源:获取请求报文中请求的资源
web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源;这些资源旋转于本地文件系统某路径下,此路径通常称为DocRoot
web服务器资源路径映射方式:
(a) docroot
(b) alias
(c) 虚拟主机docroot
(d) 用户家目录docroot
(5) 构建响应报文
资源的MIME类型:
显示分类
魔法分类
协商分类
URL重定向:
web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径;
(6) 发送响应报文
(7) 记录日志
http服务器程序:
httpd(apache)
nginx
lighttpd
应用程序服务器:
IIS
tomcat,jetty,jboss,resin
webshpere,weblogic,oc4j
http的安装配置和使用:
httpd:apache
a patchy server = apache
ASF:apache software foundation
httpd的特性:
高度模块化:core + modules
DSO:Dynamic Shared Object
MPM:Multipath Processing Modules
prefork:多进程模型,每个进程响应一个请求;
一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;最大不会超过1024个;
worker:多线程模型(多进程生成,一个进程生成多个线程),一个线程响应一个请求;
event:事件驱动模型,一个线程响应多个请求;
安装httpd:
rpm包
源码编译安装