2018-06-13 http服务 1

1、套接字

在建立通信连接的每一端,进程间的传输要有两个标志:
IP地址和端口号,合称为套接字地址socket address ,套接字文件定义了ip地址和端口号,用于不同进程间通信使用。比如mysql服务器端的进程和客户端的进程进行通讯。
客户机套接字地址定义了一个唯一的客户进程
服务器套接字地址定义了一个唯一的服务器进程

  • Socket:套接字,进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换。
  • Socket Domain:根据其所使用的地址
    AF_INET:Address Family,IPv4
    AF_INET6:IPv6
    AF_UNIX:同一主机上不同进程之间通信时使用
  • 套接字相关的系统调用:
    socket(): 创建一个套接字
    bind():绑定IP和端口
    listen():监听
    accept():接收请求
    connect():请求连接建立
    write():发送
    read():接收
    close():关闭连接

2、HTTP通信过程

http: Hyper Text Transfer Protocol, 80/tcp,超文本传输协议。
html: Hyper Text Markup Language 超文本标记语言,编程语言,是http协议传输的一种文件格式。

image.png

image.png

MIME:Multipurpose Internet Mail Extensions
多用途互联网邮件扩展 /etc/mime.types
格式:major/minor
text/plain
text/html ---也就是传输的文件的不同格式
text/css
image/jpeg
image/png
video/mp4
application/javascript
参考:http://www.w3school.com.cn/media/media_mimeref.asp

3、Web资源:web resource

一个网页由多个资源构成,打开一个页面,会有多个资源展示出来,但是每个资源都要单独请求。因此,一个“Web 页面”通常并不是单个资源,而是一组资源的集合
静态文件:无需服务端做出额外处理
文件后缀:.jpg, .html, .txt, .js, .css, .mp3, .avi
动态文件:服务端执行程序,返回执行的结果
文件后缀:.asp, .php, .jsp

4、URI

URI: Uniform Resource Identifier 统一资源标识,分为URL和URN
URN: Uniform Resource Naming,统一资源命名
示例:P2P下载使用的磁力链接是URN的一种实现
magnet:?xt=urn:btih:660557A6890EF888666
URL: Uniform Resorce Locator,统一资源定位符,用于描述某服务器某特定资源位置
两者区别:URN如同一个人的名称,而URL代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。URN仅用于命名,而不指定地址
URL组成
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
schame:方案,访问服务器以获取资源时要使用哪种协议
user:用户,某些方案访问资源时需要的用户名
password:密码,用户对应的密码,中间用:分隔
Host:主机,资源宿主服务器的主机名或IP地址
port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号
path:路径,服务器资源的本地名,由一个/将其与前面的URL组件分隔
params:参数,指定输入的参数,多个参数,用;分隔
query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔
frag:片段,一小片或一部分资源的名字,此组件在客户端使用,用#分隔,可以在当前页进行跳转,跳转至当前网页的特定行,比如当前页面篇幅比较长时,可以跳转到当前页面的指定位置。

5、网站访问量

IP(独立IP):记录远程客户机IP地址的计算机访问网站的次数,是衡量网站流量的重要指标,一天内来自相同客户机IP地址只计算一次。
PV(访问量):即Page View, 页面浏览量或点击量,用户每次刷新即被计算一次,PV反映的是浏览某网站的页面数,PV与来访者的数量成正比,PV并不是页面的来访者数量,而是网站被访问的页面数量
UV(独立访客):即Unique Visitor,访问某网站的电脑的数量。网站判断来访电脑的身份是通过来访电脑的cookies实现的。如果更换了IP后但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的。
网站统计:http://www.alexa.cn/rank/

6、一次完整的http请求处理过程

1、建立连接:接收或拒绝连接请求,即三次握手的过程。
2、接收请求:接收客户端请求报文中对某资源的一次请求的过程
Web访问响应模型(Web I/O)
单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应
多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求
复用I/O结构:启动一个进程,同时响应N个连接请求
实现方法:多线程模型和事件驱动
多线程模型:一个进程生成N个线程,每线程响应一个连接请求
事件驱动:一个进程处理N个请求
复用的多进程I/O模型:启动M个进程,每一个进程开多个线程,每个线程响应多个连接请求
3、处理请求:服务器对请求报文进行解析,并获取客户端请求的资源及请求的方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理
HTTP常用请求方式Method:GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS
4、访问资源:负责向请求者提供对方请求的静态资源,或动态运行后生成的资源,用户将指令发送给内核,内核到磁盘上去调取客户端要访问的资源数据到内核空间,再将资源发送到用户的内存空间。
5、构建响应报文:一旦Web服务器识别从出了资源,就执行请求方法中描述的动作,封装http的头部信息的响应报文,并返回响应报文。响应报文中包含有响应状态码、响应首部,如果生成了响应主体的话,还包括响应主体。
1)响应实体:如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。响应报文中通常包括:
描述了响应主体MIME类型的Content-Type首部
描述了响应主体长度的Content-Length
实际报文的主体内容

此命令可以查看响应报文的头部信息
[root@centos6 network-scripts]#curl -I www.qq.com
HTTP/1.1 200 OK
Server: squid/3.5.20
Content-Type: text/html; charset=GB2312
Cache-Control: max-age=60
Expires: Tue, 26 Sep 2017 12:34:04 GMT
Date: Tue, 26 Sep 2017 12:33:04 GMT
Connection: keep-alive

2)URL重定向:web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径
永久重定向:http://www.360buy.com ---用户访问这个网站的时候会跳转到https://www.jd.com/这个网站。
临时重定向:http://www.taobao.com
6、发送响应报文
7、记录日志
最后,当事务结束时,Web服务器会在日志文件中添加一个条目,来描述已执行的事务

7、Httpd特性和MPM工作模式

  • 高度模块化:core + modules
  • DSO: Dynamic Shared Object 动态加/卸载
  • MPM:multi-processing module多路处理模块
    这些特性和内核很相似。
  • MPM工作模式
    ①prefork:多进程I/O模型,每个进程响应一个请求,默认模型
    一个主进程:生成和回收n个子进程,创建套接字,不响应请求
    多个子进程:工作work进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求,最大不超过1024个
    ②worker:复用的多进程I/O模型,多进程多线程,IIS使用此模型
    一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n
    ③event:事件驱动模型(worker模型的变种)
    一个主进程:生成m个子进程,每个进程生成n个线程来响应n个请求,有专门的服务线程来管理这些keep-alive类型的线程,当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放。这样增强了高并发场景下的请求处理能力
    httpd-2.2: event测试版,centos6
    httpd-2.4:event稳定版,centos7


    image.png

    image.png

    image.png

8、httpd的功能特性

虚拟主机
IP、Port、FQDN
一个物理服务器上可以额搭建多个web网站。
CGI:Common Gateway Interface,通用网关接口
网关用来解决不同网段、不同协议之间的通信。
反向代理
假如有好几个服务器提供相同的web服务,并且网站信息都是一样的,反向代理服务器的作用相当于一个调度器,将用户发送的请求转发给相应的服务器。
正向代理
比如用户要访问一个网站,它先把请求发送给正向代理服务器,然后代理服务器去替你去访问这个网站,并且下载网站的资源,一份发送给你,一份保存到自己的缓存中,当有下一个用户要访问相同的网页资源时,因为代理服务器上已经有缓存,就直接将资源发送给用户,节省了带宽。
负载均衡
路径别名
丰富的用户认证机制
basic
digest
支持第三方模块

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容