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.www58058.com/73648

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

相關推薦

  • 文本查找之find組合拳

    find命令不僅能幫助我們在數目眾多的文件中快速找到滿足條件的文本,我們還能通過find處理動作對查找到的文件進行進一步的處理。 一、find的特點:               遍歷查找,因此查找速度略慢   &nbs…

    Linux干貨 2016-08-15
  • Linux磁盤和文件系統管理進階(swap、磁盤配額、RAID、LVM、btrfs)

    概述:     上篇已經介紹了一些磁盤和文件系統管理的基礎概念,對磁盤的硬件構造,文件系統的基礎概念部分有了一個大致的了解。本篇就分享一些關于磁盤和文件系統管理的一些高級應用,具體包含:     1、swap交換分區的管理     2、掛載…

    Linux干貨 2016-08-30
  • Redis的編譯安裝

    介紹     redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更…

    Linux干貨 2015-02-28
  • 回溯法 -數據結構與算法

    1.回溯法算法思想: 定義:         回溯法(探索與回溯法)是一種選優搜索法,按選優條件向前搜索,以達到目標。但當探索到某一步時,發現原先選擇并不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,而滿足回溯條件的某個狀態的點稱為“回溯點”。 1、回溯法適用:有許多問題,當需要找出它的解集(…

    Linux干貨 2015-04-07
  • Linux 基礎(4)

    file    標準輸入輸出以及輸出重定向 >     tr     |管道      mail 1.file file [options] <filename>… 確定文件內容,是根據文件的頭部信息來判斷 hexdump -C -n 10…

    2017-07-20
  • ansible實踐

    本偏文章以上圖拓撲部署 首先準備了6臺為centos7的主機(確保selinux和iptables不會成阻礙!關閉他們) 我們先來安裝ansible吧! 配置EPEL源過后使用 yum -y install ansible  ?。。。。。。。。。。。。。。。。。。。。。。。。。。。。?! 出師不利啊,安裝ansible就失敗了。?。。。。?! 看了一下…

    Linux干貨 2017-01-27
欧美性久久久久