套接字及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安装

    源码安装