了解web及網(wǎng)絡(luò)基礎(chǔ)
TCP/IP的分層管理:1粪滤、應(yīng)用層:決定了向用戶提供應(yīng)用服務(wù)時(shí)通信的活動(dòng),該層包含的協(xié)議有:FTP(文件傳輸協(xié)議),DNS(域名系統(tǒng))以及http;2酣溃、傳輸層:傳輸層對(duì)上層應(yīng)用層,提供處于網(wǎng)絡(luò)連接中的兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)傳輸纪隙,該層包含的協(xié)議有:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)赊豌;3、網(wǎng)絡(luò)層:網(wǎng)絡(luò)層用來處理在網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包绵咱,該層規(guī)定了通過怎樣的路徑到達(dá)對(duì)方計(jì)算機(jī)碘饼,并把數(shù)據(jù)包傳送給對(duì)方,該層包含有IP協(xié)議悲伶;4艾恼、鏈路層:用來處理鏈接網(wǎng)絡(luò)的硬件部分。
如何理解TCP/IP的分層管理:鏈路層是實(shí)實(shí)在在的管道麸锉,網(wǎng)絡(luò)層負(fù)責(zé)管道鋪設(shè)方案钠绍,傳輸層負(fù)責(zé)將管道內(nèi)要傳送的物資進(jìn)行統(tǒng)一的打包,而應(yīng)用層就是那些要被傳送的物資了花沉。
TCP協(xié)議三次握手:1柳爽、目的:確保數(shù)據(jù)能到達(dá)目標(biāo);2碱屁、過程:發(fā)送端首先發(fā)送一個(gè)帶SYN標(biāo)志的數(shù)據(jù)包給對(duì)方磷脯;接收端收到后,回傳一個(gè)帶有SYN/ACK標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息娩脾。最后發(fā)送端再回傳一個(gè)帶有ACK標(biāo)志的數(shù)據(jù)包赵誓,代表握手結(jié)束。
一個(gè)請求發(fā)送的全過程:客戶端發(fā)送請求=>dns域名解析=>http協(xié)議生成請求http報(bào)文=>TCP協(xié)議柿赊,分割請求報(bào)文俩功,生成數(shù)據(jù)包=>IP協(xié)議搜索對(duì)方地址,一邊中轉(zhuǎn)一邊傳送=>TCP協(xié)議報(bào)文重組=>http協(xié)議碰声,對(duì)web服務(wù)器請求的內(nèi)容進(jìn)行處理=>服務(wù)器根據(jù)請求返回資源=>經(jīng)過同樣的過程返回?cái)?shù)據(jù)給客戶端诡蜓。
簡單的http協(xié)議
請求報(bào)文的構(gòu)成:
響應(yīng)報(bào)文的構(gòu)成:
理解無狀態(tài)的http:http自身不對(duì)請求和響應(yīng)之間的通信狀態(tài)進(jìn)行保存,協(xié)議對(duì)于發(fā)送過的請求或響應(yīng)都不做持久化處理奥邮,無狀態(tài)-有狀態(tài)的轉(zhuǎn)化可以通過cookie實(shí)現(xiàn)
http/1.0和http/2.0支持的方法:
理解持久連接和管線化:持久連接可以實(shí)現(xiàn)一次連接處理多個(gè)請求万牺,管線化可以實(shí)現(xiàn)并行處理多個(gè)請求罗珍。
http報(bào)文:1、主要構(gòu)成部分:請求行脚粟,狀態(tài)行覆旱,請求首部,響應(yīng)首部核无,通用首部扣唱,實(shí)體首部,報(bào)文主體团南;2噪沙、用于對(duì)內(nèi)容進(jìn)行編碼的頭部:gzip,compress,deflate(以上都常用于壓縮文件),identity(不進(jìn)行編碼)吐根;3正歼、返回多部分對(duì)象集合的頭部:multipart/form-data,multipart/byteranges;4、獲取部分范圍內(nèi)容的請求頭部:range;5拷橘、用于內(nèi)容協(xié)商的首部字段:Accept,Accept-Charset,Accept-Encoding,Accept-Language,Content-Language
http狀態(tài)碼
狀態(tài)碼類別:
200:表示從客戶端發(fā)來的請求在服務(wù)器被正常處理了局义;204:表示服務(wù)器已經(jīng)成功處理請求,但返回的響應(yīng)報(bào)文不含實(shí)體的主體部分冗疮;206:表示客戶端進(jìn)行了范圍請求萄唇,服務(wù)器成功執(zhí)行了這部分請求;301:永久重定向术幔;302:臨時(shí)重定向另萤;303:臨時(shí)重定向,并規(guī)定用get方法訪問資源诅挑;304:資源從緩存中獲人某ā;307:臨時(shí)重定向揍障;400:請求報(bào)文存在語法錯(cuò)誤目养;401:用戶認(rèn)證失敗毒嫡;403:未獲得文件系統(tǒng)的授權(quán)或訪問權(quán)限出現(xiàn)問題;404:未找到資源幻梯;500:服務(wù)端在執(zhí)行請求時(shí)發(fā)生錯(cuò)誤兜畸;503:服務(wù)器暫時(shí)存在超負(fù)荷或停機(jī)狀態(tài)
與http協(xié)作的web服務(wù)器
代理:1、接受由客戶端發(fā)送的請求并轉(zhuǎn)發(fā)給服務(wù)器碘梢,同時(shí)也接受服務(wù)器返回的響應(yīng)并轉(zhuǎn)發(fā)給客戶端咬摇;2、代理服務(wù)器的作用:利用緩存技術(shù)減少帶寬和流量煞躬,組織內(nèi)部針對(duì)特定網(wǎng)站的訪問控制肛鹏。網(wǎng)關(guān):1逸邦、轉(zhuǎn)發(fā)其他服務(wù)器通信數(shù)據(jù)的服務(wù)器,接收從客戶端發(fā)過來的請求時(shí)在扰,就像自己擁有資源的源服務(wù)器一樣對(duì)請求進(jìn)行處理缕减。隧道:建立起一條與其他服務(wù)器的通信線路,會(huì)使用ssl加密手段進(jìn)行通信芒珠,目的是確鼻沤疲客戶端能與服務(wù)器進(jìn)行安全的通信
http首部
通用首部:cache-control: public:表示其他用戶也可以利用緩存;cache-control:private:緩存服務(wù)器會(huì)對(duì)該特定用戶提供資源緩存的服務(wù)皱卓;cache-control:no-cache:客戶端將不會(huì)姐搜緩存過的響應(yīng)裹芝;cache-control:no-store:比no-cache更高級(jí)的禁用緩存策略;cache-control:max-age:自請求發(fā)送起娜汁,資源的緩存有效期嫂易;connection:不再轉(zhuǎn)發(fā)的首部字段名:可控制不在轉(zhuǎn)達(dá)給代理的首部字段;connection:keep-alive:建立持久連接掐禁;Date:GMT時(shí)間:創(chuàng)建報(bào)文的日期和時(shí)間怜械;Upagrade:協(xié)議名:用于檢測HTTP協(xié)議及其他協(xié)議是否可使用更高的版本進(jìn)行通信。
請求首部:Accept:文件類型:通知服務(wù)器穆桂,用戶代理能后處理的媒體類型及媒體類型的相對(duì)優(yōu)先級(jí)宫盔;Accept-Charset:字符集:用來通知服務(wù)器,用戶代理支持的字符集及字符集的 相對(duì)優(yōu)先順序享完;Accept-Encoding:編碼類型:告知服務(wù)器用戶代理支持的內(nèi)容編碼及內(nèi)容編碼的優(yōu)先級(jí)順序灼芭;Accrpt-Language;Authorization;Host;If-Match;If-Modified-Since;Max-Forwards;Range;Refer;User-Agent;
響應(yīng)首部:Accept-Ranges:bytes/none;Etag;
實(shí)體首部:Content-Length;Content-Range;Content-Type;
https
http的缺憾:1、無法認(rèn)證通信雙方的身份般又;2彼绷、本身沒有對(duì)通信內(nèi)容進(jìn)行加密的機(jī)制;3茴迁、無法建立安全的通信線路寄悯;4、無法驗(yàn)證報(bào)文的完整性
如何解決:1堕义、通過SSL建立安全的通信線路猜旬,并通過驗(yàn)證證書的方式確認(rèn)雙方的身份;2倦卖、通過MD5加密和SHA-1散列值的方式來保證報(bào)文的完整性洒擦;3、通過密鑰來對(duì)報(bào)文內(nèi)容進(jìn)行加密
ssl通信的建立過程:
用戶身份認(rèn)證
BASIC認(rèn)證:通過輸入密碼的方式來確認(rèn)是否為用戶本人的認(rèn)證方式怕膛;
DIGEST認(rèn)證:客戶端通過由服務(wù)器發(fā)送的質(zhì)詢碼產(chǎn)生唯一的響應(yīng)碼熟嫩,進(jìn)行客戶端認(rèn)證’
SSL雙因素認(rèn)證:在ssl通信連接的保護(hù)下,進(jìn)行BASIC和DIGEST認(rèn)證褐捻;
cookie:保存用戶的認(rèn)證狀態(tài)掸茅,以解決http的無狀態(tài)特性
基于http功能的追加協(xié)議
http的性能瓶頸:1椅邓、每次都要發(fā)送亢長重的首部;2昧狮、服務(wù)器有內(nèi)容更新時(shí)不能主動(dòng)向客戶端推送景馁;3、報(bào)文內(nèi)容沒有統(tǒng)一的壓縮方式
ajax:實(shí)現(xiàn)網(wǎng)頁局部更新以及javascript的異步操作
comet:實(shí)現(xiàn)服務(wù)器的主動(dòng)推送
spdy協(xié)議:1陵且、支持服務(wù)器主動(dòng)推送裁僧;2、并發(fā)處理多個(gè)請求慕购;3聊疲、支持請求首部的壓縮
websocket(全雙工雙向通信):1、支持客戶端向服務(wù)器端沪悲,以及服務(wù)器端向客戶端的主動(dòng)推送获洲;2、精簡的請求和響應(yīng)首部
web的攻擊技術(shù)
跨站腳本攻擊:通過在url中輸入腳本殿如,進(jìn)而獲取文檔中的信息如cookie等贡珊,然后向攻擊者服務(wù)器發(fā)送這些信息;
sql注入攻擊:在進(jìn)行數(shù)據(jù)庫操作時(shí)涉馁,有時(shí)會(huì)通過獲取表單中的數(shù)據(jù)门岔,并將這些數(shù)據(jù)作為參數(shù)進(jìn)行數(shù)據(jù)庫操作;只要攻擊者在表單輸入是輸入一些特殊的數(shù)據(jù)庫操作符烤送,便可達(dá)到操作數(shù)據(jù)庫的目的寒随;
http首部注入攻擊:在進(jìn)行http請求時(shí),有時(shí)會(huì)將表單中的數(shù)據(jù)作為首部參數(shù)進(jìn)行請求操作帮坚;此時(shí)攻擊者只要在表單中輸入一些特殊的字符妻往,便可操作http請求;
強(qiáng)制瀏覽:服務(wù)器上一些不進(jìn)行公開的文件试和,會(huì)通過隱蔽文件url的方式進(jìn)行訪問限制讯泣,此時(shí)攻擊者通過某些試錯(cuò)的手段得到這些文件url,便可以訪問阅悍,造成一些保密信息的泄露好渠;
會(huì)話劫持:攻擊者通過xss攻擊或其他方式得到用戶的會(huì)話id,便可以偽裝成用戶的身份节视;
跨站點(diǎn)請求偽造:用戶訪問某網(wǎng)站時(shí)已經(jīng)處于登錄狀態(tài)晦墙,攻擊者此時(shí)誘惑用戶點(diǎn)擊某個(gè)鏈接便可以以用戶的身份進(jìn)行一些特殊的操作。