一树瞭、什么是web
在百科的詞條上如下解釋什么是web:
web(World Wide Web)即全球廣域網(wǎng)锉罐,也稱為萬維網(wǎng),它是一種基于超文本和HTTP的号涯、全球性的、動(dòng)態(tài)交互的锯七、跨平臺(tái)的分布式圖形信息系統(tǒng)链快。是建立在Internet上的一種網(wǎng)絡(luò)服務(wù),為瀏覽者在Internet上查找和瀏覽信息提供了圖形化的眉尸、易于訪問的直觀界面域蜗,其中的文檔及超級(jí)鏈接將Internet上的信息節(jié)點(diǎn)組織成一個(gè)互為關(guān)聯(lián)的網(wǎng)狀結(jié)構(gòu)
超文本是用超鏈接的方法,將各種不同空間的文字信息組織在一起的網(wǎng)狀文本噪猾。超文本更是一種用戶界面范式地消,用以顯示文本及與文本之間相關(guān)的內(nèi)容百度
http :Hyper Text Transfer Protocol,超文本傳輸協(xié)議,所有的www文件都遵循這一原則畏妖,它是TCP/IP協(xié)議的一個(gè)應(yīng)用層協(xié)議脉执,用于定義WEB瀏覽器與WEB服務(wù)器之間交換數(shù)據(jù)的過程〗浣伲客戶端連上web服務(wù)器后半夷,若想獲得web服務(wù)器中的某個(gè)web資源,需遵守一定的通訊格式迅细,HTTP協(xié)議用于定義客戶端與web服務(wù)器通迅的格式巫橄。
我們習(xí)慣性的把電腦端根據(jù)架構(gòu)方式不同,簡單分為 B/S 架構(gòu)和 C/S 架構(gòu) 茵典,而訪問web網(wǎng)頁就是 B/S 架構(gòu)湘换,需要瀏覽器browser瀏覽器、server服務(wù)器统阿、DB數(shù)據(jù)庫彩倚,才能夠訪問到web網(wǎng)頁。
web網(wǎng)頁可分為靜態(tài)網(wǎng)頁和動(dòng)態(tài)網(wǎng)頁扶平。靜態(tài)網(wǎng)頁一般一html和htm結(jié)尾帆离,有如下特點(diǎn):
- 和服務(wù)器沒有數(shù)據(jù)交互,不會(huì)因?yàn)橛脩舻母淖兌淖兘岢危踩绻龋碚撋蠜]有攻擊漏洞
- 每次修改更新網(wǎng)頁都需要修改服務(wù)器上html文件
- 靜態(tài)網(wǎng)頁除了包含文本外還包括動(dòng)畫、聲音麻献、Flash文件们妥、滾動(dòng)字幕等效果
動(dòng)態(tài)網(wǎng)頁有一個(gè)標(biāo)志性符號(hào) ? 后面跟要傳遞的參數(shù)勉吻,有如下特點(diǎn):
- 網(wǎng)頁數(shù)據(jù)可以和服務(wù)器進(jìn)行數(shù)據(jù)交互监婶,會(huì)因用戶的不同而發(fā)生改變
- 網(wǎng)站的更新在后臺(tái)就可以完成,但是不安全餐曼,容易被攻擊
- 動(dòng)態(tài)網(wǎng)頁是html語言與 java压储、vb 鲜漩、vc 相融合源譬,從而通過改變數(shù)據(jù)庫和環(huán)境的改變而改變
二集惋、常見web架構(gòu)組合
web server 可以解析動(dòng)態(tài)網(wǎng)頁,現(xiàn)在網(wǎng)站基本是由靜態(tài)與動(dòng)態(tài)相結(jié)合的網(wǎng)頁踩娘;解析http請(qǐng)求刮刑,并對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行解析反饋給瀏覽器;還可以進(jìn)行項(xiàng)目的管理养渴,因?yàn)轫?xiàng)目都會(huì)放在服務(wù)器的目錄下雷绢。常見的關(guān)系型數(shù)據(jù)庫有 MySQL 、Oracle 理卑、SQLServer等
根據(jù)web server 與database之間的搭配根據(jù)網(wǎng)站語言的不同而不同翘紊,常見搭配如下:
- php 頁面使用 Apache 服務(wù)器或 Tomcat 服務(wù)器進(jìn)行解析和托管項(xiàng)目
- asp 頁面使用微軟系統(tǒng)的 iis 服務(wù)器進(jìn)行解析和托管項(xiàng)目
- javascript 頁面使用 Tomcat服務(wù)器或者 jboss 服務(wù)器進(jìn)行項(xiàng)目托管和解析
三、瀏覽器的工作原理
上面解釋了web所需要的 web server 和database 藐唠,下面介紹與用戶看的見的瀏覽器browser帆疟,常見的瀏覽器有微軟的 IE (內(nèi)核是 trident)、谷歌的 Chrome (內(nèi)核是webkit)宇立、蘋果的 safari (內(nèi)核是webkit)踪宠,火狐瀏覽器 FireFox (內(nèi)核是gecko)、歐朋瀏覽器 Opera(內(nèi)核是presto)妈嘹。
瀏覽器主要由用戶接口柳琢、瀏覽器引擎、渲染引擎润脸、網(wǎng)絡(luò)柬脸、js解釋器、ui 后端毙驯、數(shù)據(jù)庫構(gòu)成肖粮,下面以** 百度搜索瀏覽器為例** 說明瀏覽器的工作原理:
- 用戶訪問百度網(wǎng)頁,發(fā)送搜索瀏覽器請(qǐng)求到服務(wù)器
- 服務(wù)器對(duì)請(qǐng)求進(jìn)行解析尔苦,并將結(jié)果發(fā)送給數(shù)據(jù)庫
- 數(shù)據(jù)庫接收并處理請(qǐng)求涩馆,并得到結(jié)果,將結(jié)果反饋給服務(wù)器
- 服務(wù)器接收結(jié)果反饋允坚,對(duì)結(jié)果反饋進(jìn)行解析魂那,并生成html文件,放入http 響應(yīng) response中稠项,返回瀏覽器
- 瀏覽器解析http response涯雅,并創(chuàng)建 DOM 樹
- 瀏覽器下載 css 樣式,對(duì) DOM 樹進(jìn)行渲染
- 瀏覽器下載js展运,并執(zhí)行js程序
- 瀏覽器顯示響應(yīng)內(nèi)容活逆,用戶看到搜索數(shù)據(jù)
四精刷、DNS 解析
訪問互聯(lián)網(wǎng)網(wǎng)站,比如訪問百度蔗候,我們只需要輸入 http://www.baidu.com 我們就可以訪問到百度怒允,為什么我們不需要輸入他的路徑呢?這就是 DNS 的功勞锈遥,下面是百度百科的解釋:
DNS(Domain Name System纫事,域名系統(tǒng)),因特網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫所灸,能夠使用戶更方便的訪問互聯(lián)網(wǎng)丽惶,而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。通過主機(jī)名爬立,最終得到該主機(jī)名對(duì)應(yīng)的IP地址的過程叫做域名解析(或主機(jī)名解析)
DNS 的工作過程:
- 操作系統(tǒng)先檢查本地的 hosts 文件是否有這個(gè)網(wǎng)址的映射關(guān)系钾唬,如果有,則調(diào)用這個(gè)IP地址映射侠驯,完成解析(hosts文件位置-->C:\Windows\System\drivers\etc\hosts)
- 如果hosts文件沒有此映射抡秆,則將該請(qǐng)求發(fā)送到本地域名服務(wù)器
- 如果本地沒有此映射,則該請(qǐng)求發(fā)送到根域名服務(wù)器(13個(gè)根域名服務(wù)器--美國國防部(主根域名)---輔根域名12(美國9陵霉、日本1琅轧、英國1、瑞典1))
- 根域名服務(wù)器將數(shù)據(jù)返回給本地域名服務(wù)器踊挠,本地域名服務(wù)器將此映射保存到緩存乍桂,以備下次使用;本地域名服務(wù)器將結(jié)果返回
五效床、OSI七層模型
OSI七層模型全稱是open system interconnection睹酌,開發(fā)系統(tǒng)互聯(lián)模型,OSI采用了分層的結(jié)構(gòu)化技術(shù)剩檀,共分七層憋沿,物理層、數(shù)據(jù)鏈路層沪猴、網(wǎng)絡(luò)層辐啄、傳輸層、會(huì)話層运嗜、表示層壶辜、應(yīng)用層。例如發(fā)郵件担租,這之間的模型的轉(zhuǎn)換過程砸民,從上到下:
- 應(yīng)用層:寫信
- 表示層:把心的內(nèi)容進(jìn)行加密
- 傳輸層:使用TCP協(xié)議提供可靠傳輸
- 網(wǎng)絡(luò)層:按照不同的地址進(jìn)行分析傳輸
- 鏈路層:打包
- 物理層:使用光纖或者無線信道傳輸
寫郵件的模型轉(zhuǎn)換過程,從下到上:
- 物理層:使用光纖或者無線信道把數(shù)據(jù)傳輸過來
- 鏈路層:拆包
- 網(wǎng)絡(luò)層:確定收信地址
- 傳輸層:使用TCP協(xié)議傳輸信件
- 會(huì)話層:不同的用戶使用不同的郵箱收取信件
- 表示層:解密操作
- 應(yīng)用層:查看信件
六、TCP/IP協(xié)議
TCP transmission control protocol 傳輸控制協(xié)議岭参,IP反惕,網(wǎng)絡(luò)互聯(lián)協(xié)議,internet protocol 演侯,百度百科的解釋:
TCP/IP是一組用于實(shí)現(xiàn)網(wǎng)絡(luò)互連的通信協(xié)議姿染。Internet網(wǎng)絡(luò)體系結(jié)構(gòu)以TCP/IP為核心“霰荆基于TCP/IP的參考模型將協(xié)議分成四個(gè)層次盔粹,它們分別是:網(wǎng)絡(luò)訪問層隘梨、網(wǎng)際互聯(lián)層程癌、傳輸層(主機(jī)到主機(jī))、和應(yīng)用層轴猎。
主機(jī)A和主機(jī)B產(chǎn)生傳輸可概括為三次握手的過程:
第一次握手:主機(jī)A發(fā)送SYN=1嵌莉,隨機(jī)產(chǎn)生一個(gè)隨機(jī)編碼SEQNUM=12345
第二次握手:主機(jī)B收到請(qǐng)求后,向A發(fā)送SYN=1捻脖,ACK=1锐峭,確認(rèn)編碼acknum=12346,同時(shí)發(fā)送一個(gè)隨機(jī)編碼seqnum=54321
第三次握手:主機(jī)A收到后確認(rèn)acknum=12346和ack=1正確可婶,然后再向主機(jī)B發(fā)送ack=1沿癞,acknum=54322
完成了三次握手,主機(jī)A和主機(jī)B開始傳送數(shù)據(jù)
七矛渴、HTTP協(xié)議
HTTP協(xié)議是超文本傳輸協(xié)議椎扬,是基于請(qǐng)求和響應(yīng)模式的無狀態(tài)、無連接具温、應(yīng)用層的協(xié)議蚕涤;無狀態(tài)是指同一個(gè)客戶不管幾次訪問同一個(gè)服務(wù)器的頁面,服務(wù)器的響應(yīng)時(shí)間和第一次訪問時(shí)相同铣猩,無連接是指每次連接只能處理一次請(qǐng)求揖铜。
http協(xié)議的URI格式 http://host[:port]/[abs_path]
http協(xié)議 主機(jī)名/IP地址 端口號(hào)(默認(rèn)80) 請(qǐng)求的資源
http協(xié)議由請(qǐng)求和響應(yīng)組成
請(qǐng)求:三部分構(gòu)成
- 請(qǐng)求行:method request-uri http-version
請(qǐng)求方法 請(qǐng)求的資源 http版本
請(qǐng)求方法有g(shù)et、post等达皿,常用這兩種方法 - 消息報(bào)頭 也稱為請(qǐng)求報(bào)頭天吓,一般以Accept開頭
- 請(qǐng)求正文,請(qǐng)求的具體內(nèi)容
響應(yīng):三部分構(gòu)成
狀態(tài)行:格式為 http-version status-code reason-prase
http版本 狀態(tài)碼 狀態(tài)碼的描述 - 消息報(bào)頭
- 響應(yīng)正文
八峦椰、web測試分析
1龄寞、界面測試
- 圖形測試:整體界面風(fēng)格是否一致;驗(yàn)證文字的正確性们何,文字的環(huán)繞正確性萄焦;鼠標(biāo)移到有特效的部位,出現(xiàn)特效,移開鼠標(biāo)特效消失拂封;輪播圖片茬射,將鼠標(biāo)一致上方抄腔,滾動(dòng)停止
- 導(dǎo)航測試:導(dǎo)航放在顯眼位置教沾;導(dǎo)航分類是否正確,是否可以直觀了解整個(gè)頁面內(nèi)容
- 內(nèi)容測試:文本描述信息是否正確返吻;所有標(biāo)題是否正確萧恕;鼠標(biāo)標(biāo)題智商刚梭,提示信息是否正確
- 表格測試:表格是否直觀;表格里的文字是否正確
2票唆、功能測試 - 鏈接測試 :主要是測試鏈接中是否包含死鏈接朴读,鏈接可分為首頁鏈接、標(biāo)題鏈接走趋、資訊鏈接衅金、圖片鏈接,可使用工具xenu檢查死鏈接
-獨(dú)立功能測試:針對(duì)獨(dú)立功能進(jìn)行測試分析 - 數(shù)據(jù)庫測試:功能和頁面初始化數(shù)據(jù)都要與數(shù)據(jù)庫進(jìn)行比對(duì)檢驗(yàn)
- 緩存儲(chǔ)測試F5刷新簿煌,Ctrl+F5強(qiáng)制刷新直接從服務(wù)器獲取數(shù)據(jù)氮唯,緩存可查看還有緩存保存天數(shù)的限制,可針對(duì)性設(shè)計(jì)測試用例
- 兼容性測試:不同的瀏覽器姨伟,相同流量拿起的不同版本進(jìn)行測試
- 安全性測試:詳細(xì)見cookie和seeion的區(qū)別
- 性能測試:響應(yīng)時(shí)間惩琉,頁面的加載速度,還有資源利用CPU夺荒、內(nèi)存瞒渠、網(wǎng)絡(luò)、硬盤等