一、套按字及http基礎知識之一

MAC地址:設備到設備之間通訊時專用(從源主機到目標主機可能經由N臺路由設備)4html

IP地址:標記主機到主機之間通訊時專用mysql

TCP/UDP :提供進程地址 經過port number來標記web

  進程地址:用TCP,UDP協議的端口標識,端口(16bits)sql

  TCP :傳輸控制協議,面向鏈接的協議:通訊前須要創建虛擬鏈路,結束後拆除鏈路編程

    0-65535緩存

  UDP:User Datagram Protocol 無鏈接的協議  (QQ即時通訊類)服務器

    0-65535網絡

dns :主機名稱解析時使用UDP,區域傳輸時用到TCP多線程

 

端口分配原則:併發

  IANA:互聯網地址名稱分配機構

    TCP/UDP都遵循此法則

  0-1023:衆所周知,永久的分配給固定的應用使用,特權端口 22/tcp(ssh),80/tcp(http),443/tcp(https)  

  1024-41951:亦爲註冊端口,但要求並非特別嚴格,分配給程序註冊爲某應用使用,11211/tcp,11211/udp(memcached) ,3306/tcp(mysql)

  41952~    :客戶端程序隨機使用的端口;動態端口或私有端口;可供本地臨時分配

         其範圍的定義:/proc/sys/net/ipv4/ip_local_port_range

 

2、socket套接字

裸套接字:不調用傳輸層的tcp,udp協議封裝報文

wKiom1nFsX3wURn5AAAWhWbPFq0101.png

特定功能:由用戶空間的進程完成

通用功能:由內核完成,用戶空間的進程須要使用通用的功能時,須要向內核空間發起syscall

 

socket :IPC的一種實現,容許位於不一樣主機(甚至同一主機)上不一樣進程之間進行通訊;數據交換:Socket API

    內核由syscall提供,用戶空間中的進程須要與跨網絡的主機通訊時,須要基於socket編程方式

 

socket類型:tcp、udp、raw(裸套接字)

  SOCK_STREAMtcp套接字(無:數據段的標識)

  SOCK_DGRAMudp套接字(有:數據段的標識)

  SOCK_RAM裸套接字(非tcp/udp端口)

 

IPC :進程間通訊

wKiom1nEkgTjBAm3AAAX_uoRj4o417.png

 

socket domain

至少存在兩種socket類型(SOCK_STREAM、SOCK_DGRAM)
  流:可靠的傳輸、面向鏈接、無邊界; (通訊信道創建後,不用考慮一個報文從哪開始到那結束,直接扔)
  數據報:不可靠地傳遞、有邊界、無鏈接 (以寄信爲例,信封就是邊界)   AF_INET IPv4 Address Family ipv4地址家族   AF_INET6 IPv6 Address Family ipv6地址家族      AF_UNIX   UNIX Address Family 同一主機上不一樣進程之間通訊時使用(基於unix socket通訊
-----不會到通訊子網)

 

套接字相關的系統調用

wKiom1nElBuS1eYzAABGPtQRsoI520.png

 

Ipv4

  分類:

    A:1-127
    B:128-191
    C: 192-223
    D: 組播 224-239
    E:240-254

  私有地址:
    A:10.0.0.0/8
    B:172.16.0.0/16-172.31.0.0/16
    C:192.168.0.0/24-192.168.255.0/24

 

3、tcp協議

基於socket通訊、SOCKET_STREAM

wKioL1nEt5fzevL2AADMGNPi4B4338.png

 

4、跨Internet的主機間通信

 

MTU:最大傳輸單元

分段:當MTU大小大於1500bytes時,須要對ip報文分段

分片:路徑MTU最小值小於1500時,須要分段

 


 


 

5、HTTP協議

Hyper Text Transfer Protocol  傳輸超文本的協議 80/tcp SOCKET_STREAM

  html :編程語言,超文本標記語言

  超文本:由html編程語言開發出的文本(網頁中的連接點擊後跳轉至另外一個網頁,連接叫超文本連接)

超文本格式 

wKiom1nEuS7Tii_KAAA2TqP_0qY316.png

 

MIME:多用途互聯網郵件擴展 ,實現基於文本傳輸協議發送非文本數據

  1.0 支持MIME,擴展Method, 緩存機制薄弱

wKioL1nEuHezY3RsAABFaz2unFQ496.png

 

  2.0 MIME,Method,緩存機制增強,spdy優點整合而來(spdy加速資源的獲取)

 

工做模式

  HTTP請求

  HTTP響應

wKiom1nEuYCBD953AAAlcUj8SoQ102.png

 

請求的內容: Web資源

wKiom1nEueCB4nuCAABCqEa_Dcc852.png

 

一個頁面中有多個資源:每一個頁面是一個資源,每一個頁面有多個超連接,每一個連接對應一個資源

訪問入口: 給定的地址

被訪問的資源:頁面中引用的地址

盜鏈/跨站引用:網站中的資源來自其餘服務器上的資源

URL:用於描述某服務器某特定資源的位置

  URI的子集:URL,URN(統一資源命名符)

  URL格式

wKiom1nEu22Sdw8MAAAvYMzWsRw367.png

 

http協議版本:

  HTTP/0.9 :原型版本,功能簡陋

  HTTP/1.0 :第一個普遍使用的版本,支持MIME
  HTTP/1.1 :加強了緩存功能

  HTTP/2.0

 

一次完整的http請求流程

一、接收客戶端請求<是否接收請求>

二、接收請求(併發響應模型)

  接收來自於網絡的請求報文中對某資源的一次請求的過程

  併發訪問響應模型(Web I/O):

    • 單進程I/O結構:啓動一個進程處理用戶請求,並且一次只處理一個;多個請求被串行響應
    • 多線程I/O結構 :並行啓動多個線程,每一個進程響應多個請求 <C10K問題>
    • I/O複用結構:一個進程響應n個請求

        多線程模型:一個進程生成N個線程,每一個線程響應一個用戶請求

        事件驅動:調用libevent庫,實現事件驅動,水平觸發

    • 複用的多進程I/O結構:啓動多個(m)進程,每一個進程響應n個請求

一個Pv有多個資源,每一個資源是一個請求

  持久鏈接:tcp鏈接創建後不斷開

  非持久鏈接:每處理一個請求都有tcp3次握手,4次揮手的過程。

 

 

三、處理請求(解析請求報文)對請求報文進行解析,並獲取請求的資源及請求方法等相關信息

元數據:根據HTTP請求報文首部,獲取method

   <method><URL><HTTP-VERSION>首行
   Host:被請求的主機
   Connection :鏈接方式

四、訪問資源(method、路徑映射)---獲取請求報文中請求的資源

web服務器,即存放了web資源的服務器,負責向請求者提供對方請求的靜態資源或動態運行後生成的資源,這些資源放置於本地文件系統某路徑下,此路徑一般稱爲DocRoot

 DocRoot :/www/web

      http://www.magedu.com/images/1.jpg

        /www/web/images/1.jpg

web服務器資源路徑映射方式:
  a)DocRoot定義的路徑即爲映射的路徑   b)Alias   c)虛擬主機DocRoot   d)用戶家目錄DocRoot

五、構建響應報文(打包封裝爲httpd響應報文)

  資源的MIME類型

      顯示分類

      魔法分類

      協商分類

   URL重定向:

     web服務構建的響應並不是客戶端請求的資源,而是資源另一個訪問路徑

六、發送響應報文

七、記錄一次事務的日誌(用戶行爲分析)

相關文章
相關標籤/搜索