标签:web基础知识
套接字及http基础知识
不同的程序使用端口号(port number)来进行标识
tcp:传输控制协议;面向连接的协议,通信前需要建立虚拟链路,结束后拆除链路
端口号范围:0-65535
udp:用户数据报协议;无连接协议
端口号范围:0-65535
虽然范围相同,但二者端口号没啥关系
IANA(The Internet Assigned Numbers Authority);互联网数字分配机构
0-1023:众所周知的端口,永久分配给固定的的应用使用
1024-40951:为注册端口,但要求没有特别严格,分配给程序注册使用
41952+:客户端动态使用的端口,动态端口(随机生成),其范围定义:/proc/sys/net/ipv4/ip_local_port_range
socket 套接字:IPC (进程间通信)的一种实现
作用:允许同一主机或不同主机上不同进程间进行通信
http:超文本传输协议 tcp的80端口
MIME:(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
有了MIME以后,http就不止能传输文本类的资源,也可穿多媒体类型的文件
http工作机制:
http请求
http响应
web资源:
静态文件:.jpg .mp3 .avi .htm .txt .....
动态文件:.php .jsp ...(服务器执行后将结果响应给客户端)
URI:uniform resource identifier 统一资源标识符
URL:uniform resource locator 用于描述某服务器特定资源的位置(统一资源定位符)
scheme://server:port/path/to/resource
如:http://www.magedu.com/images/a.jpg
URN:uniform resource naming 统一资源命名符
http协议版本:
http/0.9 原型版本,非常简陋
http/1.0 第一个广泛使用的版本,支持MIME
http/1.1 增强了缓存功能
spdy google开发的协议,已经被废弃(谷歌宣布SPDY死亡 将推全新协议HTTP/2)
http/2.0
一次完整的http请求过程(1-7)
1、建立或处理连接;接受请求或拒绝请求
2、接受请求:
接收来自网络中的请求报文对某资源的一次请求过程
并发响应模型:
单进程I/0模型:只启动一个进程处理用户请求,而且一次只处理一个请求,如有多个请求,则串行处理(逐个响应)
多进程I/O模型:并行启动多个进程,每个进程响应一个请求
复用I/O模型:一个进程可以响应多个请求
多线程模型:一个进程生成多个线程,每个线程响应一个请求
事件驱动event-driven
复用的多进程I/O模型:启动多个进程,每个进程响应N个请求
事件驱动模型的理解
传统的模型是当服务接收连接,server保持连通直到页面或者别的请求事务完成。如果请求的资源需要耗费server几毫秒甚至几微秒的时间去读取磁盘或者数据库,web server就被I/O阻塞了,如果是事件驱动模型,当web server接收到请求,就把他扔到一个队列中然后在继续响应请求。在队列中准备就绪后,服务器在把结果发送给客户端。
3、请求处理:对请求报文进行分析,并获取请求的资源以及请求方法等
元数据:请求报文首部
<method> <URL> <version>
host www.magedu.com 请求的主机
connection
4、访问资源 获取报文中的资源
web服务器即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或者动态运行后生成的资源
这些资源通常放置在服务器的某个路径下,此路径通常被称为DocumentRoot
web服务器资源路径映射方式
a、DocumentRoot
b、路径别名映射alias
c、虚拟主机DocumentRoot
d、用户的家目录DocumentRoot
5、构建响应报文
6、发送响应报文
7、记录日志
HTTP服务器程序
httpd(Apache)
nginx
lighthttpd
以上只能服务静态内容
应用程序服务
IIS
tomcat,jetty,jobss
webshpere
既能服务静态内容,又能解析动态内容
httpd的安装配置和使用:
httpd的特性:
高度模块化 core+module
DSO:dynamic shared object
MPM:multipath process modules
prefork 多进程模型,每个进程响应一个请求
一个主进程负责生成N个子进程(子进程也成为工作进程),每个子进程处理一个请求,即使没有用户请求,也会预先生成多个空闲进程,随时等待请求到达,但最大不会超过1024个。
worker 多线程模型,每个线程响应一个请求
一个主进程,主进程生成多个子进程,每个子进程生成多个线程,每个线程响应一个请求
event 事件驱动模型,每个进程响应N个请求
一个主进程,生成多个子进程,每个子进程响应N个请求。(见上文时间驱动模型的理解)
httpd2.2 event为测试使用
httpd2.4 event可生产使用
httpd的功能特性:
支持虚拟主机
基于IP PORT FQDN
CGI:common gateway interface 通用网关接口
支持反向代理
支持负载均衡
支持路径别名
支持丰富的用户认证机制
basic机制 (常用)
digest机制
支持第三方模块
安装httpd方法:
rpm安装
源码安装
标签:web基础知识
原文地址:http://wangkunpeng.blog.51cto.com/1538469/1766145