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
下一篇 2017-04-18

相关推荐

  • linux基础命令

    1. 属主 属组 其他人    当一个进程访问文件时,首先匹配的是uid,其次是gid,最后是other 2. 认证信息库存储位置:    用户的认证信息库:/etc/shadow    组的认证信息库:/etc/gsh…

    Linux干货 2017-09-03
  • 正则表达式的如何使用

    简述:正则表达式主要用于文本的搜索,它表示了搜索文本的过滤条件。根据这些条件,对目标文本朱行进行匹配检查,最后对输出匹配到符合过滤条件的行。 使用:正确高效的使用正则表达式,需要掌握以下基本知识点         1:语法 grep [OPTION] PATTERN FILE……

    Linux干货 2017-06-04
  • class14磁盘管理(一)

    一、硬盘基础知识及分区类型 1、磁盘结构 设备文件 I/O Ports: I/O 设备地址 一切皆文件:   open(), read(), write(), close() 设备类型: 块设备:block,存取单位“块”,磁盘 字符设备:char,存取单位“字符”,键…

    Linux干货 2016-08-29
  • Bash快捷键

    Ctrl + a :移到命令行首Ctrl + e :移到命令行尾Ctrl + f :按字符前移(右向)Ctrl + b :按字符后移(左向)Alt + f :按单词前移(右向)Alt + b :按单词后移(左向)Ctrl + xx:在命令行首和光标之间移动Ctrl + u :从光标处删除至命令行首Ctrl + k :从光标处删除至命令行尾Ctrl + w :…

    Linux干货 2017-03-26
  • 实验:yum、编译安装、swap

    实验:在centos7实现光盘yum源 1yum install autofs 2现在启动systemctl start autofs 3开机启动systemctl enable autofs 4 cat /etc/yum.repos.d/base.repo[centos7]name=centos7 repobaseurl=file:///misc/cdgp…

    Linux干货 2017-04-25
  • Linux find命令使用详则

    find命令 find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录欲文件。并且将查找到的子目录和文件全部进行显示。 语法 find(选项)(参数) 选项 -amin<分钟>:查找在指定时间曾被存取过的文件或者目录,单位以分钟计算; -ane…

    2017-08-03