http协议基础(一)

web服务:
      Apache
      Nginx
      LVS
      http协议

网站运维:
      web站点
      游戏网站
web服务 高性能,高可用怎么构建的

DNS服务
Domain  Name Server
名称解析服务
主要作用是把域名(FQDN 完全合格域名)转换成服务器对应的IP

DNS
    . 13 个跟DNS服务器
顶级 com net org edu me cn us gov jp tw hk tt uk 
二级域名  jd  cctv magedu taobao  vip 
三级域名 www  bbs ftp…

生产环境
 主域名:vip.com taobao.com jd.com xiaomi.com
 二级域名 www.vip.com bbs.vip.com edu.vip.com
 三级域名 s1.qiuqiu.the9.com  s2.qiuqiu.the9.com s3.qiuqiu.the9.com

DNS查询
递归查询 一级一级的找
迭代查询 一个一个的找
client——-ISP DNS1—–ISP DNS2 ——-ISP DNS3—-|—-(www.magedu.com)——-.
                                     —– com(1.1.1.1)
                                     —–magedu.com(2.2.2.2)                       —–www.magdu.com(3.3.3.3.)
向当地运营商服务器发起查询的时候 是用的递归查询
       运营商的服务器向. 或者com 用的是迭代查询
       DNS劫持 (运营商) (黑客)
       NDS污染 (解析成错误地址,不能访问)

dnsmasq    :轻量级的DNS的实现
nscd服务   :服务器本地的dns缓存服务
NDSpod     :商业解决方案 dns解析服务
DDNS       :动态DNS
DNS view   : 视图的概念
CDN        : 内容分发网络

应用程序运行模式:
       C/S,B/S    :客户端/服务器。   web/服务器
ARP  :从IP地址到mac地址
RARP :(反向地址解析协议)从mac地址到IP地址
wireshark  :  运维神器
              TCP (SYN)洪水攻击
                  解决方案:加服务器资源 堆硬件
OSI七层网络模型:       #下一层向上一层提供服务
    应用层
    表示层
    会话层          
    传输层
    网络层
    数据链路层
    物理层              #这是第一层,第一层为第二层提供服务

传输层: 实现 进程 与 进程 之间的通信。
网络层: 实现 主机 与 主机 之间的通信。
数据链路层: 实现 节点 与 节点

发送端与接收端传输数据段之
前建立TCP 三次握手连接过程:
1) 发送主机发送TCP SYN 控制数据段到接收主机;确定发送初始序号 seq=x
2)  接收主机接收到 SYN 控制数据段后返回SYN ACK 确认数据段;
          确定 缓冲区大小
          确定 接收初始序号
          seq=y ACK=x+1
3)  发送主机接收到SYN ACK确认数据段后返回一SYN ACK确认数据段 (可能包含数据)
          seq=x+1 ACK=y+1

TCP四次挥手:
       步骤1: 发送主机 发送 FIN 控制数据段 到接收主机;
       步骤2: 接收主机 接收FIN 控制数据段,  回应一 ACK 确认数据段 
                 同意并准备断开连接。
       步骤3: 接收主机 处理完数据后开始终止连接,同时发送FIN控制数据段 
       步骤4: 发送主机 接收FIN 控制数据段,回应一ACK 确认数据段;
              接收主机接收到ACK确认数据段,连接终止。

cat /etc/services  查看服务及对应端口号
端口介绍:
        IANA(The Internet Assigned Numbers Authority ,互联网数字分配机构) 
                 是负责协调一些使Internet 正常运作的机构
        特权端口 0——1023
                 众所周知的端口号,为已知服务保留
        注册端口 1024——41951
                 分配给用户进程或者应用程序
        动态端口 41952 以后
                 一般不固定分配某种服务,而是动态分配
http    80
https   443
sshd    22
ftp     21 20  
dns     53
smtp    25
MySQL   3306
zabbix  10050 10051
redis   6379
rabbitmq 15672
rsync    873

同一台主机上不同进程之间通信(IPC)
    管道   共享内存  消息   信号  套接字文件(socket)
socket套接字地址 : IP地址和端口号 标识在网络上的一个地址

web技术网站:
http://www.w3school.com.cn/example/html_examples.asp
http://www.w3school.com.cn/html5/index.asp

Method : 浏览器去访问服务端所采取的动作
    GET
    POST   :向服务器请求提交表单数据
    HEAD   :再访问一个站点的时候,返回的不是网站页面,而是页面的头信息
              curl -I  只返回页面的头信息
    PUT    :向服务器端提交上传一个文件
    DELETE :向服务器端申请删除一个文件
    TRACE  :去追踪请求经过了哪些代理服务器或是防火墙
    OPTION :协商 客户端发一个一个option的操作,服务器返回给客户端所支持的请求

常用的三种方式:
              GET POST  HEAD
    GET  去获取一个页面
    POST 获取页面的时候(访问一个内部api调用的时候),通常是需要加参数
    HEAD 只获取头信息 一般用来对某个web应用进行健康检查

  事务:一系列操作 要么全部完成 要么全部不完成
  请求和响应称之为http事务

web资源
静态:
   图片 png jpg gif
   文本 txt html
   css 样式表
   mp3 音乐格式的
   avi 视频格式
   JavaScript JS 

动态资源:
    PHP Tomcat asp 
    .php
    .jsp  java     #以这两个结尾的文件
    asp aspx windows上的C#

首屏时间,首页时间:是衡量一个网站打开快慢的主要标准

前端优化的两条建议:
      1 把一些小的资源合并成一个大的资源(现成的前端框架)
      2 写前端页面的时候可以把JS放在最后执行

动静分离:动态资源和静态资源进行分离的

实现动静分离的目的
静态资源:把静态资源进行CDN加速(内容分发网络) 
          CDN加速厂商:蓝汛和网宿 帝联等

动态资源:
    问题:    互联互通问题
解决方式:    使用多线机房(移动 联通 电信)
              BGP机房 (边界网关协议)

URL: 统一资源定位符
   协议:http  https  ftp jdbc 
scheme://www.vip.com:80/PATH/FILE
 协议       域名     端口  加资源名称

URN:统一资源名称,是URL的高级版  (理论 实验室阶段)
给网络上的每个资源都定义一个URL(名称)

URI: 统一资源标识符,标识一个资源
UTL和URN统称为URI

Web请求的模型:      #七个步骤
   单进程I/O模型 服务器上只启动一个进程,这一个进程用来处理所有的用户请求
   多进程I/O模型 同时开启多个进程,每个进程对立响应一个请求
   服务器内存只有3M,那么每个处理请求的进程需要占用1M内存,同时只能处理三个请求,
   怎么办呢?
   一个进程同时响应多个请求:
      1 进程下面再开线程 : 比如一个进程下面开10个线程 那么我就可以同时处理10个请求
      2 事件驱动机制 event-driven 模式,一个进程同时响应多个请求,
        在内核中开辟一块区域,专门用来记录每个请求的具体状态:处理中?处理完等等
        注意:事件驱动完全在内核底层来实现

  复用的多进程I/O结构
     一个进程同时响应多个请求的升级版
     同时开启多个(m)进程,每个进程响应多个(n)请求,同时处理的最大请求数 mn

c10K 问题的解决方案:
   单台服务器要同时支持10k 个活动连接,服务器要开启10k个进(线)程
   并发访问模型
      单进程I/O模型 启动一个进程处理用户请求
      多进程I/O模型 并行启动多个进程,每个请求由一个独立的进程响应
      复用的I/O结构  一个进程响应N个请求
      多线程模式 一个进程生产N个线程,一个线程处理一个请求
      事件驱动机制 一个进程直接响应N个请求
      复用的多进程I/O结构,启动m个进程,每个进程生成n个线程,响应请求数量 m
n

C100K就需要集群的方式来解决

HTTP协议的具体实现:
     httpd(apache)
     Nginx

应用程序服务器:处理静态资源和动态资源 (优势是处理动态资源)
IIS  Windows之上的   IIS 6.0(2003)
                     IIS 7.5 (2008)
Tomcat  处理.jsp程序  JAVA应用
jetty 和resin   轻量的跑JAVA应用
weblogic jboss  等

    以上统称为Web服务器 

 Httpd 的特性appache:
       高度模块化  核心模块+ 功能模块
       DSO dynamic share object  动态装卸载     #可以直接注释或者启用
       多路处理模块机制MPM (Multipath processing Modules) )
            Prefork  多进程模型,每个进程响应一个请求,一个主进程,多个子进程
            Worker   多进程多线程模型,每个线程响应一个请求,M*N
            Event    事件驱动模型,一个进程响应多个请求
       虚拟主机:基于IP ,基于端口,基于FQDN
       反向代理
       负载均衡
       路径别名
       丰富的用户认证机制
       支持扩展的第三方模块

一个应用的构成基本要素:
       配置文件
       二进制可执行命令
       库文件

原创文章,作者:shewei,如若转载,请注明出处:http://www.178linux.com/73648

(1)
sheweishewei
上一篇 2017-04-18 08:46
下一篇 2017-04-18 11:03

相关推荐

  • lamp部署及编译安装

    lamp 资源类型: 静态资源:原始形式与响应给客户端的结果一致; 动态资源:原始形式通常为程序文件(为某种编程语言开发),需要运行后将生成的结果展示给客户端;如果请求的资源不存在那么结果就会重定向至指定的文件中 客户端技术:javascript 服务端技术:php, jsp, … CGI:Common Gateway Interfa…

    Linux干货 2016-10-19
  • Linux任务计划命令及应用

    at命令,crontab命令

    2018-03-12
  • 硬链接与软链接的联系与区别

    硬链接与软链接的联系与区别 我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(ino…

    Linux干货 2016-10-23
  • vim的使用

    本文主要讲述vim的使用 一.vim是什么? vim是一个十分著名也十分强大的编辑器,是vi的增强版,是一个模式化的编辑器,英文名称为 Visual Interface iMprove,在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器的美称。 二.vim的工作模式  (1)编辑模式:也叫命令模式,通过编辑命令实现…

    Linux干货 2016-10-29
  • linux文件权限练习(0803)

    1、当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作?     不能cd到该目录,不能ls -l查看目录下文件的详细信息      2、当用户xiaoqiang对/testdir 目录无读权限时,意味着无法做哪些操作?…

    Linux干货 2016-08-04
  • 内核编译安装 (用NTFS模块)

    内核编译安装 (用NTFS模块) 1 rz 下载的 的内核最新文件 在这 https://www.kernel.org/ 2 tar xvf linux-4.12.10.tar.xz 解压文件 内核文件一般都放在 /usr/src/ 3 cd linux-4.12.10/ 4 [root@god linux-4.12.10]#cp /boot/config-…

    2017-09-04