web基礎筆記

2021-09-19 07:49:35 字數 3673 閱讀 1962

瀏覽器本身是乙個客戶端,當你輸入url時,首先瀏覽器會去請求dns伺服器,通過dns獲取相應的網域名稱對應的ip,然後通過ip找到ip對應的伺服器後,要求建立tcp連線,等瀏覽器傳送完http request(請求)包後,伺服器接受到請求包之後才開始處理請求包,伺服器呼叫自身服務,返回http response(響應)包;客戶端收到來自伺服器的響應後才開始渲染這個response包裡的主題(body),等到收到全部的內容隨後斷開與該伺服器之間的tcp連線。

乙個web伺服器也被稱為http伺服器,它通過http協議與客戶端通訊。這個客戶端通常指的是web瀏覽器(其實手機端客戶端內部也是瀏覽器實現的)。

web伺服器的工作原理可以簡單地歸納為:

需要注意的是客戶機與伺服器之間的通訊是非持久連線的,也就是當伺服器傳送了應答後就與客戶機斷開連線,等待下一次請求。

##url和dns

url(uniform resource locator)是「統一資源定位符」的英文縮寫,用於描述乙個網路上的資源, 基本格式如下

scheme://host[:port#]/path/.../[?query-string][#anchor]

scheme 指定低層使用的協議(例如:http, https, ftp)

host http伺服器的ip位址或者網域名稱

port# http伺服器的預設埠是80,這種情況下埠號可以省略。如果使用了別的埠,必須指明,例如

path 訪問資源的路徑

query-string 傳送給http伺服器的資料

anchor 錨

dns(domain name system)是「網域名稱系統」的英文縮寫,是一種組織成域層次結構的計算機和網路服務命名系統,它用於tcp/ip網路,它從事將主機名或網域名稱轉換為實際ip位址的工作。

如果hosts裡沒有這個網域名稱的對映,則查詢本地dns解析器快取,是否有這個**對映關係,如果有,直接返回,完成網域名稱解析。

如果hosts與本地dns解析器快取都沒有相應的**對映關係,首先會找tcp/ip引數中設定的首選dns伺服器,在此我們叫它本地dns伺服器,此伺服器收到查詢時,如果要查詢的網域名稱,包含在本地配置區域資源中,則返回解析結果給客戶機,完成網域名稱解析,此解析具有權威性。

如果用的是**模式,此dns伺服器就會把請求**至上一級dns伺服器,由上一級伺服器進行解析,上一級伺服器如果不能解析,或找根dns或把轉請求轉至上上級,以此迴圈。不管是本地dns伺服器用是是**,還是根提示,最後都是把結果返回給本地dns伺服器,由此dns伺服器再返回給客戶機。

遞迴查詢過程和迭代查詢過程

所謂遞迴查詢過程就是 「查詢的遞交者」 更替, 而迭代查詢過程則是 「查詢的遞交者」不變。

舉個例子來說,你想知道某個一起上法律課的女孩的**,並且你偷**了她的**,回到寢室告訴乙個很仗義的哥們兒,這個哥們兒二話沒說,拍著胸脯告訴你,甭急,我替你查(此處完成了一次遞迴查詢,即,問詢者的角色更替)。然後他拿著**問了學院大四學長,學長告訴他,這姑娘是xx系的;然後這哥們兒馬不停蹄又問了xx系的辦公室主任助理同學,助理同學說是xx系yy班的,然後很仗義的哥們兒去xx系yy班的班長那裡取到了該女孩兒**。(此處完成若干次迭代查詢,即,問詢者角色不變,但反覆更替問詢物件)最後,他把號碼交到了你手裡。完成整個查詢過程。

通過上面的步驟,我們最後獲取的是ip位址,也就是瀏覽器最後發起請求的時候是基於ip來和伺服器做資訊互動的。

request包

request包分為3部分

header和body之間有個空行,請求包的例子所示:

get /domains/example/ http/1.1        //請求行: 請求方法 請求uri http協議/協議版本

host:www.iana.org //服務端的主機名

accept-encoding:gzip,deflate,sdch //是否支援流壓縮

accept-charset:utf-8,*;q=0.5 //客戶端字元編碼集

//空行,用於分割請求頭和訊息體

//訊息體,請求資源引數,例如post傳遞的引數

http協議定義了很多與伺服器互動的請求方法,最基本的有4種,分別是get,post,put,delete。乙個url位址用於描述乙個網路上的資源,而http中的get, post, put, delete就對應著對這個資源的查,改,增,刪4個操作。我們最常見的就是get和post了。get一般用於獲取/查詢資源資訊,而post一般用於更新資源資訊。

get和post的區別

http響應包(伺服器資訊)

我們再來看看http的response包,他的結構如下:

http/1.1 200 ok //狀態行

server: nginx/1.0.8 //伺服器使用的web軟體名及版本

date:date: tue, 30 oct 2012 04:14:25 gmt //傳送時間

content-type: text/html //伺服器傳送資訊的型別

transfer-encoding: chunked //表示傳送http包是分段發的

connection: keep-alive //保持連線狀態

content-length: 90 //主體內容長度

//空行 用來分割訊息頭和主體

response包中的第一行叫做狀態行,由http協議版本號,** 狀態碼**, **狀態訊息 **三部分組成。

狀態碼用來告訴http客戶端,http伺服器是否產生了預期的response。http/1.1協議中定義了5類狀態碼, 狀態碼由三位數字組成,第乙個數字定義了響應的類別

http協議是無狀態的和connection: keep-alive的區別

無狀態是指協議對於事務處理沒有記憶能力,伺服器不知道客戶端是什麼狀態。從另一方面講,開啟乙個伺服器上的網頁和你之前開啟這個伺服器上的網頁之間沒有任何聯絡。

http是乙個無狀態的面向連線的協議,無狀態不代表http不能保持tcp連線,更不能代表http使用的是udp協議(面對無連線)。

從http/1.1起,預設都開啟了keep-alive保持連線特性,簡單地說,當乙個網頁開啟完成後,客戶端和伺服器之間用於傳輸http資料的tcp連線不會關閉,如果客戶端再次訪問這個伺服器上的網頁,會繼續使用這一條已經建立的tcp連線。

keep-alive不會永久保持連線,它有乙個保持時間,可以在不同伺服器軟體(如apache)中設定這個時間。

這個就是瀏覽器的乙個功能,第一次請求url,伺服器端返回的是html頁面,然後瀏覽器開始渲染html:當解析到html dom裡面的連線,css指令碼和js指令碼的鏈結,瀏覽器就會自動發起乙個請求靜態資源的http請求,獲取相對應的靜態資源,然後瀏覽器就會渲染出來,最終將所有資源整合、渲染,完整展現在我們面前的螢幕上。

網頁優化方面有一項措施是減少http請求次數,就是把盡量多的css和js資源合併在一起,目的是儘量減少網頁請求靜態資源的次數,提高網頁載入速度,同時減緩伺服器的壓力。

WEB基礎筆記一

一 浮動 float 浮動 讓元素在行顯示 left 左浮動 right右浮動 二 選擇器 標籤選擇器 div 類選擇器 box 後代選擇器 選擇類名為box下的所有div box div 三 縮放 transform scale 1 等比例縮放 transform scale x軸縮放,y軸縮放 ...

Web基礎學習筆記 CSS基礎

1.概述 1 層疊樣式表 2 用來美化和布局頁面的一種語言,配合html一起使用 3 可以寫在html裡,也可以寫在字尾名為 css 的檔案裡 4 使用瀏覽器來 解釋和執行 5 實現樣式與內容的分離,方便團隊開發提高效率 提高效率 實現頁面精確控制 2.用途 1 美化外觀 2 布局 定位 3.基本語...

Web安全基礎學習筆記

1 web不是網際網路,是網際網路提供的服務之一 2 web工作流程 3 web常見危害 web2.0 從1.0的危害伺服器到更多的危害客戶端 web1.0 sql注入 檔案上傳 掛馬 暗鏈等 web2.0 xss csrf 邏輯漏洞 釣魚 劫持 4 發展史 只記得第一款多點觸控瀏覽器 2009年火...