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

相關推薦

  • 配額限制、RAID、LVM

    配置配額系統 在內核中執行以文件系統為單位啟用,對不同組或者用戶的策略不同; 根據塊或者節點進行限制 軟限制(soft limit) 硬限制(hard limit) 初始化(/home) 分區掛載選項( /etc/fstab ):usrquota、grpquota 創建數據庫: 將selinux調為禁用狀態:Permissive quotacheck -cu…

    Linux干貨 2017-04-26
  • sed大法好

    sed sed概念 (1)基本概念:sed是流編輯器(stream editor),A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).作用就是對輸入的流(文件或者從一個管道輸入的流…

    Linux干貨 2016-12-02
  • 開班第一天,新獲得的技能

    新接觸命令 lscpu 顯示CPU信息 gedit 文件名 類似于記事本 ** 注意 這個命令適用于圖形界面。 cat /proc/partition 顯示分區信息 cat /proc/meminfo 顯示內存大小 cat /proc/swaps 顯示虛擬內存 cat …

    Linux干貨 2017-02-17
  • 最近了解到的命令

    ssh:secure  shell shell  人機交互的語言查詢當前系統使用了哪個shell(接口程序) echo $SHELL 查詢當前系統已安裝的所有shell cat /etc/shells Shell提示符 whoami 顯示當前的登錄用戶名 hostname 顯示當前的主機名      pwd …

    Linux干貨 2017-07-13
  • 網絡班N22期第六周博客作業

    請詳細總結vim編輯器的使用并完成以下練習題 打開文件: ~]# vim [options] [file ..]       +#:打開文件后,直接讓光標處于第#行       +/PART…

    Linux干貨 2016-09-26
  • 搜索引擎-網絡爬蟲

     通用搜索引擎的處理對象是互聯網網頁,目前網頁數量以百億計,搜索引擎的網絡爬蟲能夠高效地將海量的網頁數據傳下載到本地,在本地 形成互聯網網頁的鏡像備份。它是搜索引擎系統中很關鍵也很基礎的構件。 1. 網絡爬蟲本質就是瀏覽器http請求。      瀏覽器和網絡爬蟲是兩種不同的網絡客戶端,都以相同的方式來獲取網…

    Linux干貨 2015-11-18
欧美性久久久久