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系统

    自制Linux系统 1.首选准备一台Linux虚拟机并添加一块新硬盘 2.分区并创建文件系统,创建两个必要的分区根分区和boot分区 fdisk /dev/sdb  分区 mke2fs -t ext4 /dev/sdb1    创建boot文件系统 mke2f…

    Linux干货 2016-09-16
  • 8.9_Linux文本处理三剑客之sed和文本编辑利器vim的使用

    本文处理三剑客之sed的使用   什么是sed? Stream EDitor(简称sed), 行编辑器,一次只读一行,只处理一行,不对源文件做处理,至输出到屏幕上。 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓…

    Linux干货 2016-08-11
  • 磁盘管理及文件系统

    磁盘管理 本文将从以下几方面介绍 第一部分:磁盘管理 1、浅识Linux磁盘 2、常见命令 第二部分:文件系统管理 1、文件系统的创建 2、文件系统挂载 3、自动挂载配置文件 第一部分:磁盘管理 浅识Linux磁盘 对于Linux来说我们知道一切皆文件,同样在Linux中硬件设备在系统上会映射成相对应的文件,我们就像是在Windows看文件一样只要打开对应的…

    Linux干货 2017-08-15
  • PXE自动化安装Centos7

    一、PXE介绍     PXE: Preboot Excution Environment,由Intel公司研发,可以使没有任何操作系统的主机能够基于网络完成系统的安装工作,实现服务器的自动化安装系统 二、PXE工作原理 Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合…

    2017-07-24
  • 推荐-内核虚拟化技术——LXC初体验

    一、Cgroups 1.1 介绍 Cgroup是Control group的简称。最初由由Google的工程师(主要是Paul Menage和Rohit Seth)在2006年以“process containers(进程容器)”的名字开始的, 在2007年的晚些时候被重命名为“控制组”并被合并到了2.6.24版的内核中,现已成为Linux内核中的一个功能,…

    Linux干货 2016-03-31
  • Linux磁盘管理(分区,格式化,文件系统、VFS、mount、fstab)

    Linux系统中数据存储在磁盘中,磁盘在冯诺依曼体系中属于输入输出外部存储对象,保存着重要的企业数据,对Linux系统中的磁盘管理尤其需要熟练掌握,由于企业目前使用的主流存储设备还是硬盘,所以这里只叙述硬盘的组织结构; 1.分区:    (1)低级格式化:       硬盘在出厂的时候厂家会做一次分区格式化,…

    Linux干货 2016-09-02