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.無連線