OSI 7層模型javascript
物理層:負責 0,1 比特流與電壓高低、光的閃滅之間的互換html
設備: 中繼器:將電纜傳過來的電信號與光信號經中繼器的波形調整與放大傳給另外一個。
數據鏈路層: 負責數據幀與比特流的轉換java
設備: 網橋:經過 MAC 地址鏈接兩個網絡。經過CRC(cyclic redundancy check 循環冗餘校驗)的方式對數據鏈路層中的 FCS(frame check sequence) 驗證。從而確保數據的完整性。
網絡層:負責尋址與路由的選擇程序員
設備: 路由器:根據IP 地址進行處理。
應用層:針對特定應用的協議web
4-7層交換機 網關:負責從傳輸層到應用層的數據進行轉換和轉發的設備。
TCP/IP 四層模型
包爲描述數據的全能型單位。算法
網絡接口層
單位:幀
相關技術:數據庫
二、令牌傳遞方式編程
網絡層
協議:IP / ICMP / ARP(Address Resolution Protocol) / NAT / DHCP / DNS
相關技術:瀏覽器
應用層
協議:WWW / HTTP / MIME,SMTP、POP、IMPA / FTP / TELNET - SSH / SNMP
相關技術:緩存
FTP :用兩條 TCP 鏈接:
一、數據控制 , 使用 21號端口 二、數據傳輸 , 使用 20號端口 三、狀態碼: 1-提供信息,2-鏈接管理,3-用戶相關,4-錯誤,5-文件系統
HTTP : 使用 80 端口
一、 主要命令:GET.PUT.POST.DELETE.OPTIONS.HEAD.TRACE 二、 狀態碼: 1-提供信息,2-確定應答,3-重寫向請求,4-客戶端請求內容錯誤,5-服務器錯誤
SYN (Synchronize Flag) ACK(Acknowledgement Flag) FIN(Fin Flag)
TCP 的三次握手
四次揮手
MSS(Maximum Segment Size) 最大消息長度:由三次握手的時候,兩端主機會在TCP首部寫入 MSS 長度,經過比較,取得其中比較少的值
窗口控制
原先的缺點:TCP 以一個段爲單位,每發一個段進行一次確認應答的處理。包的往返時間越長,通訊性能越低。
所以引入窗口這個概念。窗口大小是指無需等待確認應答,而能夠繼續發送數據的最大值。
使用大量的緩衝區,若是有部分數據丟包,發送端主機設置緩存保留這些數據,直至收到它們的確認應答。
若是沒有丟包,就滑動窗口到下一個位置
重發控制
窗口在必定程度上較大時,即便有少部分的確認應答丟失也不會進行數據重發。能夠經過下一個確認應答確認。
當某一報文段丟失後,發送端會一直收到序號爲原數據的確認應答。連續 3 次 同一個確認應答,會進行重發
流控制
TCP 首部中有專門的字段用來通知窗口的大小
接收主機將本身能夠接收的緩衝區大小放入這個字段中通知給發送端,這個字段的值越大,說明網絡的吞吐量越高
擁塞控制
慢啓動:經過擁塞窗口,第一次大小爲 1 MSS , 之後每次 收到一次確認應答(ACK),擁塞窗口的值 加 1.
而後比較 兩端 窗口的 大小,發送比小值還的小的數。
IGP 中可使用 RIP (Routing Information Protocol) , OSPF(Open Shortest Path First);
OSPF -- 鏈路狀態(Link-State)協議:瞭解網絡總體鏈接狀態的基礎上生成路由控制表。
將每條鏈路賦予一個權重,採用 **Dijkstra 算法(最短路徑優先算法)**生成相應的路由控制表。 權重,是經過 HELLO 協議, **HELLO**包在LAN中傳遞,**3 次**以上空等後,使用**鏈路狀態更新包(Link state update package) **通知狀態的改變。 鏈路狀態更新包 傳達 : 網絡 LSA(Link State Advertisement 鏈路狀態通告) , 路由器 LSA 信息。 從而讓 路由器生成**鏈路狀態數據庫**。
EGP 中使用 BGP(Border Gateway Protocol)
Http 定義了服務器交互的不一樣方法 ,最基本的有四種 :GET查, POST改,PUT增,DELETE刪。
get通常用於信息獲取,是安全與冪等的。
安全指。該操做用於獲取信息,因此不會對數據有什麼破壞。 冪等意味着 對同一URL 的多個請求返回一樣的結果。
區別:
HTTP協議 ( http://www.w3.org/Protocols/ )是「一次性單向」協議。
服務端不能主動鏈接客戶端,只能被動等待並答覆客戶端請求。客戶端鏈接服務端,發出一個HTTP Request,服務端處理請求,而且返回一個HTTP Response給客戶端,本次HTTP Request-Response Cycle結束。
Session ID其實是在客戶端和服務端之間經過HTTP Request和HTTP Response傳來傳去的。
Session對象在瀏覽器中的有效範圍:
IE中:
也就是說單用seesion是不會有產生自動登入的效果的。
或者失效日期以前,就能夠實現自動登入的現象。
及頁面內容,服務器會返回頁面內容和一個沒有被使用的
SESSIONID讓此IE使用,當時IE就對返回SESSIONID作存儲;而當此IE再訪問任何這個站點的JSP程序的時候,都會給服務器這個 SESSIONID,來確認客戶端的身份。(在沒有Cookie 的狀況下session死亡 SESSIONID被取消就須要從新登入)
1.支持客戶/服務器模式。
2.簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法經常使用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不一樣。因爲HTTP協議簡單,使得HTTP服務器的程序規模小,於是通訊速度很快。
3.靈活:HTTP容許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4.無鏈接:無鏈接的含義是限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。
5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺乏狀態意味着若是後續處理須要前面的信息,則它必須重傳,這樣可能致使每次鏈接傳送的數據量增大。另外一方面,在服務器不須要先前信息時它的應答就較快。
1) HTTP協議詳解之請求篇
http請求由三部分組成,分別是:請求行、消息報頭、請求正文
一、請求行以一個方法符號開頭,以空格分開,後面跟着請求的URI和協議的版本,格式以下: **Method Request-URI HTTP-Version CRLF** 其中 Method表示請求方法;Request-URI是一個統一資源標識符;HTTP-Version表示請求的HTTP協議版本;CRLF表示回車和換行(除了做爲結尾的CRLF外,不容許出現單獨的CR或LF字符)。 請求方法(全部方法全爲大寫)有多種,各個方法的解釋以下: GET 請求獲取Request-URI所標識的資源 POST 在Request-URI所標識的資源後附加新的數據 HEAD 請求獲取由Request-URI所標識的資源的響應消息報頭 PUT 請求服務器存儲一個資源,並用Request-URI做爲其標識 DELETE 請求服務器刪除Request-URI所標識的資源 TRACE 請求服務器回送收到的請求信息,主要用於測試或診斷 CONNECT 保留未來使用 OPTIONS 請求查詢服務器的性能,或者查詢與資源相關的選項和需求 二、請求報頭後述 三、請求正文(略)
2) HTTP協議詳解之響應篇
在接收和解釋請求消息後,服務器返回一個HTTP響應消息。
HTTP響應也是由三個部分組成,分別是:狀態行、消息報頭、響應正文 一、狀態行格式以下: **HTTP-Version Status-Code Reason-Phrase CRLF** 其中,HTTP-Version表示服務器HTTP協議的版本;Status-Code表示服務器發回的響應狀態代碼;Reason-Phrase表示狀態代碼的文本描述。 狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值: 1xx:指示信息--表示請求已接收,繼續處理 2xx:成功--表示請求已被成功接收、理解、接受 3xx:重定向--要完成請求必須進行更進一步的操做 4xx:客戶端錯誤--請求有語法錯誤或請求沒法實現 5xx:服務器端錯誤--服務器未能實現合法的請求 常見狀態代碼、狀態描述、說明: 200 OK //客戶端請求成功 400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解 401 Unauthorized //請求未經受權,這個狀態代碼必須和WWW-Authenticate報頭域一塊兒使用 403 Forbidden //服務器收到請求,可是拒絕提供服務 404 Not Found //請求資源不存在,eg:輸入了錯誤的URL 500 Internal Server Error //服務器發生不可預期的錯誤 503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間後可能恢復正常 eg:HTTP/1.1 200 OK (CRLF) 二、響應報頭後述 三、響應正文就是服務器返回的資源的內容
3) HTTP協議詳解之消息報頭篇
HTTP消息報頭包括普通報頭、請求報頭、響應報頭、實體報頭。
普通報頭 | 請求報頭 | 響應報頭 | 實體報頭 |
---|---|---|---|
Cache-Control | Accept | Location(重定向) | |
Date | Accept-Charset | Server(服務器用來處理軟件的信息 | |
Connection | Accept-Encoding | Content-Encoding | |
Accept-Language | Content-Language | ||
Authorization | WWW-Authenticate | Content-Type | |
Host | Last-Modified | ||
User-Agent | Expires |
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer,基於SSL的HTTP協議)使用了HTTP協議,但HTTPS使用不一樣於HTTP協議的默認端口及一個加密、身份驗證層(HTTP與TCP之間)。提供了身份驗證與加密通訊方法,如今它被普遍用於互聯網上安全敏感的通訊。
客戶端在使用HTTPS方式與Web服務器通訊時有如下幾個步驟。
(1)客戶使用https的URL訪問Web服務器,要求與Web服務器創建SSL鏈接。
(2)Web服務器收到客戶端請求後,會將網站的證書信息(證書中包含公鑰)傳送一份給客戶端。
(3)客戶端的瀏覽器與Web服務器開始協商SSL鏈接的安全等級,也就是信息加密的等級。
(4)客戶端的瀏覽器根據雙方贊成的安全等級,創建會話密鑰,而後利用網站的公鑰將會話密鑰加密,並傳送給網站。
(5)Web服務器利用本身的私鑰解密出會話密鑰。
(6)Web服務器利用會話密鑰加密與客戶端之間的通訊。
(1)每個URI表明一種資源;
(2)客戶端和服務器之間,傳遞這種資源的某種表現層;
(3)客戶端經過四個HTTP動詞,對服務器端資源進行操做,實現"表現層狀態轉化"。
(1)客戶-服務器:客戶-服務器約束背後的原則是分離關注點。經過分離用戶接口和數據存儲這兩個關注點,改善了用戶接口跨多個平臺的可移植性;同時經過簡化服務器組件,改善了系統的可伸縮性。
(2)無狀態:通訊在本質上是無狀態的,改善了可見性、可靠性、可伸縮性. (3)緩存:改善了網絡效率減小一系列交互的平均延遲時間,來提升效率、可伸縮性和用戶可覺察的性能。 (4)統一接口:REST架構風格區別於其餘基於網絡的架構風格的核心特徵是,它強調組件之間要有一個統一的接口。
csrf 跨站點請求僞造 : 冒充用戶發起請求。
本質:經過已經認證的用戶權限搞事情。
模擬攻擊: user -- webA -- webB
與 xss 區別:
一般來講 CSRF 是由 XSS 實現的,CSRF 時常也被稱爲 XSRF(CSRF 實現的方式還能夠是直接經過命令行發起請求等)。
本質上講,XSS 是代碼注入問題,CSRF 是 HTTP 問題。XSS 是內容沒有過濾致使瀏覽器將攻擊者的輸入當代碼執行。CSRF 則是由於瀏覽器在發送 HTTP 請求時候自動帶上 cookie,而通常網站的 session 都存在 cookie裏面。
xss 跨站腳本攻擊 : 經過注入非法的 html 標籤 以及 javascript 代碼,從而當用戶瀏覽網頁時,控制用戶的瀏覽器
xss 主要分爲三類:
跨站腳本攻擊可能形成如下影響:
防護:
過濾 :
由於本身沒有這方面的經驗與系統的學習,因此就大概瞭解了一下,沒有過多的分析。
漫畫告訴你什麼是DDoS攻擊?
DDoS的攻擊原理與防護方法
都看到這裏了,點個關注好不啦。
你的關注,是我最大的動力哦。
不按期乾貨更新。
一隻至關程序員的1米88處女座大可愛。