web應用與http協議

Bound_w發表於2018-10-21

web:應用:

  Web應用程式是一種可以通過Web訪問的應用程式,程式的最大好處是使用者很容易訪問應用程式,使用者只需要有瀏覽器即可,不需要再安裝其他軟體。應用程式有兩種模式C/S、B/S.

C/S是客戶端/伺服器端程式,也就是說這類程式一般獨立執行。

B/S就是瀏覽器端/伺服器端應用程式,這類應用程式一般藉助谷歌,火狐等瀏覽器來執行。

WEB應用程式一般是B/S模式。Web應用程式首先是“應用程式”,和用標準的程式語言,如java,python等編寫出來的程式沒有什麼本質上的不同。在網路程式設計的意義下,瀏覽器是一個socket客戶端,伺服器是一個socket服務端。

import socket

def handle_request(client):

    request_data = client.recv(1024)
    print("request_data: ",request_data)

    client.send("HTTP/1.1 200 OK\r\nstatus: 200\r\nContent-Type:text/html\r\n\r\n".encode("utf8"))
    client.send("<h1>Hello, web!</h1><img src=''>".encode("utf8"))

def main():

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(('localhost',8812))
    sock.listen(5)

    while True:
        print("the server is waiting for client-connection....")
        connection, address = sock.accept()
        handle_request(connection)
        connection.close()

if __name__ == '__main__':

    main()
案例

 

http協議:

  簡介:

    HTTP協議是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,是用於全球資訊網(WWW:World Wide Web )伺服器與本地瀏覽器之間傳輸超文字的傳送協議。

  HTTP是一個屬於應用層的物件導向的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。HTTP協議工作於客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB伺服器傳送所有請求。Web伺服器根據接收到的請求後,向客戶端傳送響應資訊。

1.http協議的特性:

  1.基於請求響應:

    瀏覽器先給伺服器傳送請求------->伺服器收到瀏覽器的請求後返回響應.

        

  2.基於TCP/IP:在OSI七層模型中,http屬於最高層的應用層,它把TCP/IP進行封裝,所以說http協議基於TCP/IP協議.

    回顧:

      osi七層模型:

        1.應用層:使用瀏覽器或客戶端

        2.表示層:看到資料

        3.會話層:儲存登入或者會話的狀態

        4.傳輸層:tcp/udp

        5.網路層:IP

        6.資料鏈路層:MAC

        7.物理層:把資料轉化成電訊號傳送

  3.無狀態儲存:瀏覽器訪問過後,不會保留之前訪問的請求,解決方法:使用cookie/session/使用者認證元件來實現(個人理解)

  4.無連線:   無連線的含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間

2.請求協議格式:

url: 協議://域名(IP)+埠(80) /路徑 ? 引數()

路徑:域名之後,問號之前的都是路徑.

請求首行:   請求方式url (路徑?   get請求引數)

請求頭:   key:value     可以有多個   協議/版本號

 

請求體: 資料(只有post請求的時候才會有請求體)

  get請求和post請求:

  • GET提交的資料會放在URL之後,以?分割URL和傳輸資料,引數之間以&相連,如EditBook?name=test1&id=123456. POST方法是把提交的資料放在HTTP包的請求體中.
  • GET提交的資料大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的資料沒有限制.
  • GET與POST請求在服務端獲取請求資料方式不同。

3.響應協議格式:

響應首行: 放協議/版本號 狀態碼 狀態碼譯文/r/n
    http/1.1 200 ok/r/n          #/r/n起分割符的作用,區分作用
響應頭: 以鍵值對的形式存在,可有有若干個       #Content-Type:text/html /r/n/r/n
響應體: 渲染到瀏覽器中的內容. <h1> hello 響應體!</h1>

 響應狀態碼:

狀態碼: 是當客戶端向伺服器端傳送請求時, 返回的請求 結果。藉助狀態碼,使用者可以知道伺服器端是正常 理了請求,還是出 現了 。狀態碼如200 OK,以3位數字和原因 成。數字中的 一位指定了響應 別,後兩位無分 。響應 別有以5種。

 總結:

http的四大特性:

1.基於請求響應

2.基於TCP/IP

3.無狀態儲存

4.無連線

相關文章