前端知識
網頁最主要由3部分組成:
結構、表現和行為。網頁現在新的標准是W3C,目前模式是HTML、CSS和JavaScript。
(1)HTML
HTML,全稱“Hyper Text Markup Language(超文本標記語言)”,
簡單來說,網頁就是用HTML語言制作的。HTML是一門描述性語言,是一門非常容易入門的語言。
(2)CSS
CSS,全稱“(層疊樣式表)”。以后我們在別的地方看到“層疊樣式表”、“CSS樣式”,指的就是CSS。
(3)JavaScript
JavaScript是一門腳本語言。
HTML、CSS和JavaScript的區別 我們都知道前端技術最核心的是HTML、CSS和JavaScript這三種。
比喻成建房子:
“HTML是網頁的結構,CSS是網頁的外觀,而JavaScript是頁面的行為
如果我們把前端開發的過程比喻成“建房子”,做一個網頁就像蓋一棟房子
1、先把房子結構建好(HTML)
2、建好房子之后給房子裝修(CSS),例如往窗戶安上窗簾、往地板鋪上漂亮的瓷磚
3、最后呢,裝修完了之后,當夜幕降臨的時候,我們要開燈(JavaScript),這樣才能看得見里面。
互聯網
1、什么是互聯網
物理連接介質+互聯網協議
2、互聯網建立的目的?
用於打破地域限制來進行數據傳輸
3、什么是上網
用戶通常使用瀏覽器發送請求給目標主機,
然后將目標主機上的文件內容下載到本地,
瀏覽器與服務端之間是基於http協議工作的
Web開發本質:
1. 瀏覽器輸入網址回車都發生了什么?
1. 瀏覽器 給服務端 發送了一個消息
2. 服務端拿到消息
3. 服務端返回消息
4. 瀏覽器展示頁面
C/S架構 --> B/S架構
HTTP協議
1、什么是HTTP協議:
全稱Hyper Text Transfer Protocol(超文本傳輸協議)
HTTP協議是用於從(WWW:World Wide Web,簡萬維網 )服務器傳輸超文本到本地瀏覽器的傳送協議。
HTTP協議工作於B/S架構上
瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送請求Request。
Web服務器根據接收到的請求后,向客戶端發送響應信息Response。
HTTP協議是基於TCP/IP通信協議來傳遞數據的(HTML 文件, 圖片文件等)
2、為何要用HTTP協議
是應用層測協議,用於瀏覽器與web服務端之間傳輸數據
3、如何用HTTP協議:
1、HTTP是基於TCP協議
2、HTTP協議的特點:
I:無連接
HTTP協議本身是沒有連接的,但沒進行一次HTTP協議的通信
必先建立TCP連接,該TCP連接會在通信完畢后關閉,如果短時間內再次發起HTTP請求
則必須重新建立連接,這么做的缺點是:1、對服務端造成過大的壓力 2、數據傳輸速度慢
解決方法:
Keepalive
II:無狀態:
cookie與session
3、HTTP之request
GET url HTTP/1.1\r\n
k1:v1\r\n
k2:v2\r\n
....
\r\n
請求體(只有post方法才有請求體)
請求URL:
URL是一種URI的具體實現方式
https://www.cnblogs.com:80/linhaifeng/articles/8982675.html?a=1&b=1#anc1
https比https多了一個ssl安全認證
域名+端口號 虛擬目錄 文件 &請求參數 #頁面錨點
請求方法:
GET
參數是存放url地址的?后的
參數大小有限制
不安全
POST
參數是存放請求體中的
參數大小無限制
相對安全
請求頭:
user-agent
referer
cookie
4、HTTP之response
HTTP/1.1 200 Ok\r\n
k1:v1\r\n
k2:v2\r\n
...
\r\n
相應體(即我們要從服務端下載的內容)
HTTP協議完整工作流程
HTTP協議定義Web客戶端如何從Web服務器請求Web頁面,以及服務器如何把Web頁面傳送給客戶端。HTTP協議采用了請求/響應模型。客戶端向服務器發送一個請求報文,請求報文包含請求的方法、URL、協議版本、請求頭部和請求數據。服務器以一個狀態行作為響應,響應的內容包括協議的版本、成功或者錯誤代碼、服務器信息、響應頭部和響應數據。
以下是 HTTP 請求/響應的步驟:
1、客戶端連接到Web服務器
一個HTTP客戶端,通常是瀏覽器,與Web服務器的HTTP端口(默認為80)建立一個TCP套接字連接。例如,http://www.oakcms.cn。
2、發送HTTP請求
通過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數據4部分組成。
3、服務器接受請求並返回HTTP響應
Web服務器解析請求,定位請求資源。服務器將資源復本寫到TCP套接字,由客戶端讀取。一個響應由狀態行、響應頭部、空行和響應數據4部分組成。
4、釋放連接TCP連接
若connection 模式為close,則服務器主動關閉TCP連接,客戶端被動關閉連接,釋放TCP連接;若connection 模式為keepalive,則該連接會保持一段時間,在該時間內可以繼續接收請求;
5、客戶端瀏覽器解析HTML內容
客戶端瀏覽器首先解析狀態行,查看表明請求是否成功的狀態代碼。然后解析每一個響應頭,響應頭告知以下為若干字節的HTML文檔和文檔的字符集。客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對其進行格式化,並在瀏覽器窗口中顯示。
例如:在瀏覽器地址欄鍵入URL,按下回車之后會經歷以下流程:
1、瀏覽器向 DNS 服務器請求解析該 URL 中的域名所對應的 IP 地址;
2、解析出 IP 地址后,根據該 IP 地址和默認端口 80,和服務器建立TCP連接;
3、瀏覽器發出讀取文件(URL 中域名后面部分對應的文件)的HTTP 請求,該請求報文作為 TCP 三次握手的第三個報文的數據發送給服務器;
4、服務器對瀏覽器請求作出響應,並把對應的 html 文本發送給瀏覽器;
5、釋放 TCP連接;
6、瀏覽器將該 html 文本並顯示內容;
HTTP協議關鍵性總結
#1、簡單快速
客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
#2、靈活
HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
#3、無連接
HTTP無連接說的是:當某個客戶機在短時間多次次請求同一個資源,服務器並不能區別是否已經響應過用戶的請求。
於是我們每次發送http請求,都需要事先發起一個到服務器的TCP請求,經歷“三次握手”的過程。這針對大流量的的服務器來說,開銷是相當大的。這是http無鏈接帶來的缺點
針對http無連接,人們設計了非持久連接和持久連接。實際上關於http協議非持久連接和持久連接是針對tcp協議的。當客戶機/服務器的交互運行於TCP協議上時,應用程序的每個請求/響應對是經不同的TCP連接時,則該應用程序使用非持久連接,而當應用程序的每個請求/響應對是經相同的TCP連接發送,則該應用程序使用持久連接。
非持久連接
請求一個HTTP請求/響應需要的總時間=客戶端發出建立連接+發生請求報文+服務器傳輸HTML文件的時間
持久連接
服務器在發送響應后,保持該TCP連接打開。在相同的客戶機與服務器之間的后續請求和響應報文通過相同的連接進行傳送。不需要再次建立tcp連接
#4、無狀態
所謂http是無狀態協議,言外之意是說http協議沒法保存客戶機信息,
無狀態的優點是:
在服務器不需要先前信息時它的應答就較快。
無狀態的缺點是:
缺少狀態意味着如果后續處理需要前面的信息,則它必須重傳。這樣可能導致每次連接傳送的數據量增大
關於http無狀態阻礙了交互式應用程序的實現。比如記錄用戶瀏覽哪些網頁、判斷用戶是否擁有權限訪問等。於是,兩種用於保持HTTP狀態的技術就應運而生了,一個是Cookie,而另一個則是Session。
#5、支持B/S及C/S模式。

