Web服务基础(一)

一. Web Service

1.应用层相关协议

1.应用层协议:http,https

http也是由运行在用户空间的应用程序来实现的

2.传输层协议:TCP,UDP,SCTP

3.IANA:The Internet Assigned Numbers Authority,互联网数字分配机构

分配相关端口
1.0-1023:众所周知的,永久地分配给固定的应用使用,特权端口,即管理员才能进行启动停止
2.1024-41951:注册端口,要求并不是很严格,分配给程序注册为某应用使用;3306/tcp(MySQL),11211/tcp(memcache)
3.41952+:客户端程序随机使用的端口,动态端口或私有端口;其范围定义在/proc/sys/net/ipv4/ip_local_port_range
[root@sakura ~]# cat /proc/sys/net/ipv4/ip_local_port_range 
32768	60999

4.BSD Socket:IPC(Inter-Process Communication,进程间通信)的一种实现,允许位于不同主机(也可以是同一主机)上的进程之间进行通信

Socket API(封装了内核中socket通信相关的系统调用)
"根据协议类型进行分类"
1.SOCK_STREAM:TCP套接字
2.SOCK_DGRAM:UDP套接字
3.SOCK_RAW:raw套接字
"根据套接字所使用的地址格式分类,Socket Domain"
1.AF_INET:Address Family,IPV4
2.AF_INET6:IPV6
3.AF_UNIX:同一主机上的不同进程间基于socket套接字通信所使用的的一种地址;unix_SOCK,使用此方法可加快同主机进程间通信的效率,即一个进程向套接字文件写入数据,一个进程对此文件读取数据

5.TCP FSM(Finite State Machine 有限状态机):

1.CLOSED:没有任何连接的状态
2.LISTEN:监听来自其他主机的TCP端口的连接请求
3.SYN_SENT:在主动方发送通信连接后,进入的状态
4.SYN_RECEIVED:在被动方收到请求的连接后,向主动方发送确认连接信息,进入的状态
5.ESTABLISHED:代表一个已经建立的连接
6.FIN_WAIT1:主动方向被动方发送结束连接请求后,进入的状态
7.CLOSE_WAIT:被动方收到结束信息后,向主动方发送确认信息后,等待上层应用发送关闭连接指令,进入此状态
8.FIN_WAIT2:主动方收到被动方发送的确认消息后,进入此状态
9.LAST_ACK:被动方向主动方发送关闭请求后进入此状态
10.TIMEWAIT:在收到被动方发送的结束请求后进入的状态

下图为基本TCP客户/服务器程序的套接字函数
Web服务基础(一)_第1张图片

下图TCP的相关补充在https://blog.csdn.net/Kasumi_yuki/article/details/92733694

Web服务基础(一)_第2张图片
6.TCP协议的特性

1.建立连接:三次握手
   1)客户端请求,服务端响应
   2)服务端确认,客户端接收
   3)客户端进行确认及进行通信
2.将数据打包成段:校验和(CRC32算法)
3.确认,重传及超时
4.排序:逻辑序号(用于恢复传送后的文件)
5.流量控制:滑动窗口算法
6.拥塞控制:慢启动和拥塞避免算法
7.四次挥手
   1)客户端发送结束请求
   2)服务端响应客户端结束请求,并发送确认信息
   3)服务端向客户端发送结束请求
   4)客服端进行确认,结束通信

2.http基础概念

1.http:hyper text transfer protocol,应用层协议,监听于80/tcp端口,文本协议

1.html:hyper text mark language,编程语言,超文本标记语言
2.HTML相关格式
<html>
			<head>
				<title>TITLE</title>
			</head>
			<body>
				<h1></h1>
					<p> blabla... <a href="http://www.kasumi.com/download.html"> bla... </a> </p>
				<h2> </h2>
			</body>
</html>
3.css:Cascading Style Sheet
4.js:JavaScript, 客户端脚本

2.协议版本

1.http/0.9:原型版本,功能简陋,仅支持html
2.http/1.0:增加了cache,MIME,method
   1)MIME:Multipurpose Internet Mail Extesion(多用途网络邮件扩展功能)
   2)method(客户端,服务端数据的请求方法):GET(只有服务端能接受信息), POST, HEAD,PUT, DELETE,TRACE, OPTIONS 
3.http/1.1:增强了缓存功能
4.http/2.0:rfc,请求注解文档中的相关解释

3.工作模式:
1)相关工作模式

http工作模式(一次http事务:请求<-->响应)
1.http请求报文:http request
2.http响应报文:http response

2)web资源:web resource

1.静态资源(无需服务端作出额外处理):.jpg, .png, .gif, .html, txt, .js, .css, .mp3, .avi
2.动态资源(服务端需要通过执行程序做出处理,发送给客户端的是程序的运行结果):.php,.jsp
ps:一个页面中展示的资源可能有多个,每个资源都需要单独请求

3)资源的标识机制:URL

Uniform Resource Locator(统一资源定位符):用于描述服务器某特定资源的位置
1.例如: http://www.sina.com.cn/index.html
   1)对应格式:Scheme(方案,协议)://Server[:Port][/PATH/TO/SOME_RESOURCE]

4.一次完成的http请求处理过程

1.建立或处理连接:接受请求或拒绝请求
2.接受请求:接受来自于网络上的主机请求报文中,对特定资源的一次请求过程
3.处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息
4.访问资源:获取请求报文中请求的资源
5.构建响应报文:构建响应报文守护,之后依次进行传输层封装,IP封装,帧封装
6.发送响应报文
7.记录相关日志

1)接收请求的模型

并发访问响应模型
1.单进程I/O模型:启动一个进程处理用户请求;这表明,一次只能处理一个客户端请求,多个请求被串行响应
2.多进程I/O结构:并行启动多个子进程,每个子进程响应一个请求
3.复用的I/O结构:一个进程响应n个请求
	1)多线程模式:一个进程生个n个线程,一个线程处理一个请求(一个进程内的线程共享资源)
	2)事件驱动(event-driven):一个进程直接响应n个请求(使用事件回调机制)
4.复用的多进程I/O结构:启动多个(m)进程,每个进程生成(n)个线程
	1)其响应的请求数量:m*n

2)处理请求:分析请求报文的http请求报文首部

http协议
1.http请求报文首部
2.http响应报文首部
请求报文首部的格式
<method> <URL> <VERSION>
HEADERS:(name: value)
<request body>

3)访问资源:获取请求报文中请求的资源

web服务器,即存放了web资源的主机,负责向请求者提供对方请求的静态资源,或动态资源运行生成的结果;这些资源通常应该放置于本地文件系统某路径下;此路径成为DocRoot
1./var/www/html/:
	1)images/logo.jpg
2.web服务器的资源路径映射方式
	1)docroot
	2)alias
	3)虚拟主机的docroot
	4)用户家目录的docroot

5.http请求处理中的连接模式

1.保持连接(长连接):keep-alive
	1)时间
	2)数量
2.非保持连接(短连接)

3.http服务器程序

1.http服务器程序:httpd(apache);nginx;lighttpd

2.应用程序服务器

1.IIS:.Net(windows server上自带的web服务器)
2.Tomcat:.jsp
3.www.netcraft.com(数据挖掘站点)

3.httpd的安装和使用
1)ASF:apache software foundation
2) apache:a patchy server

4.httpd的特性
1)高度模块化:core + modules

DSO:dynamic shared object(动态共享对象)

MPM:Multipath processing Modules(多路处理模块)
	1.prefork:多进程模型,每个进程响应一个请求
		1)一个主进程:负责生成子进程及回收子进程;负责创建套接字;负责接受请求,并将其派发给某子进程进行处理
		2)n个子进程:每个子进程处理一个请求
		3)工作模型:会预先生成几个控线进程,随时等待用于响应用户请求;最大空闲和最小空闲
	2.worker:多进程多线程模型,每个线程处理一个用户请求
		1)一个主进程:负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理
		2)多个子进程:每个子进程负责生成多个线程
		3)多个线程:负责响应用户请求
		4)并发相应数量:m(子进程数量)*n(每个子进程所能创建的最大线程数量)
	3.event:事件驱动模型,多进程模型,每个进程响应多个请求
		1)一个主进程:负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理
		2)子进程:基于事件驱动机制直接响应多个请求
		3)httpd-2.2其仍为测试使用模型;httpd-2.4 event可生产环境中使用

5.httpd的程序版本

1.httpd 1.3:官方已经停止维护
2.httpd 2.0
3.httpd 2.2
4.httpd 2.4:目前最新稳定版

6.httpd的功能特性

1.CGI:Common Gateway Interface(公共网关接口)
2.虚拟主机:IP,PORT,FQDN
3.反向代理
4.负载均衡
5.路径别名
6.丰富的用户认证机制:basic,digest
7.支持第三方模块

7.安装httpd
1)rpm包:Centos发行版中直接提供
2)编译安装:定制新功能,或其他原因

二.httpd

1.Centos 6 httpd-2.2程序环境

1.配置文件

1./etc/httpd/conf/httpd.conf
2./etc/httpd/conf.d/*.conf

2.服务脚本

1./etc/rc.d/init.d/httpd
2.脚本配置文件:/etc/sysconfig/httpd

3.主程序文件

1./usr/sbin/httpd
2./usr/sbin/httpd.event
3./usr/sbin/httpd.worker

4.日志文件

1./var/log/httpd:
	1)access_log:访问日志
	2)error_log:错误日志

5.站点文档:/var/www/html

6.模块文件路径:/usr/lib64/httpd/modules

7.服务控制和启动

1.chkconfig httpd on|off
2.service httpd {start|stop|restart|status|configtest|reload}  

2.Centos 7 httpd-2.4程序环境

1.配置文件

1./etc/httpd/conf/httpd.conf
2./etc/httpd/conf.d/*.conf
3.模块相关的配置文件:/etc/httpd/conf.modules.d/*.conf

2.systemd unit file:/usr/lib/systemd/system/httpd.service

3.主程序文件:/usr/sbin/httpd (httpd-2.4支持MPM的动态切换)

4.日志文件

1./var/log/httpd:
	1)access_log:访问日志
	2)error_log:错误日志

5.站点文件:/var/www/html

6.模块文件路径:/usr/lib64/httpd/modules

7.服务控制

1.systemctl enable|disable httpd.service
2.systemctl {start|stop|restart|status} httpd.service

8.设置http服务监听在5162端口

[root@sakura ~]# systemctl start httpd
[root@sakura ~]# vim /etc/httpd/conf.d/test.conf
	LISTEN 5162
[root@sakura ~]# systemctl restart httpd
[root@sakura ~]# ss -tnl
State       Recv-Q Send-Q                         Local Address:Port                                        Peer Address:Port              
LISTEN      0      128                                        *:111                                                    *:*                  
LISTEN      0      5                              192.168.122.1:53                                                     *:*                  
LISTEN      0      128                                        *:22                                                     *:*                  
LISTEN      0      128                                127.0.0.1:631                                                    *:*                  
LISTEN      0      100                                127.0.0.1:25                                                     *:*                  
LISTEN      0      128                                       :::111                                                   :::*                  
LISTEN      0      128                                       :::80                                                    :::*                  
LISTEN      0      128                                       :::22                                                    :::*                  
LISTEN      0      128                                      ::1:631                                                   :::*                  
LISTEN      0      100                                      ::1:25                                                    :::*                  
LISTEN      0      128                                       ":::5162  "                                                :::* 

你可能感兴趣的:(linux基础学习)