OSI七層概念模型

- 應用層:負責解決業務問題
- 表示層:負責把網路中的訊息轉換成應用層可以讀取的訊息
- 會話層:負責建立會話、握手、維持連接、關閉
- 傳輸層:負責解決行程與行程之間的通信,例如TCP保證報文的可達性和流量的控制
- 網路層:負責解決廣域網(Internet)中主機之間資料的傳遞
- 資料鏈路層:負責局域網中根據MAC地址連接的相應的交換機/路由器進行報文的轉發
- 物理層:物理傳輸介質
TCP/IP模型對照


分層模型的優點在于當前層只需要考慮與其相鄰層的對接互動,即每一層只為其之上的層服務,并使用在其之下的層所提供的服務,而不需要考慮其相鄰層之外的其他層做了什么,分層模型的缺點在于不同層之間資料互動需要耗費更多的時間,從而影響網路性能,
TCP協議
傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于位元組流的傳輸層通信協議
特點:
- 基于鏈接的:傳輸資料之前需要建立鏈接
- 全雙工:雙向傳輸(請求回應)
- 位元組流:不限制請求大小,打包成報文段,保證有序接受,重復報文自動丟棄
- 流量快取:解決雙方處理能力的不匹配
- 可靠的傳輸服務:保證可達,丟包時通過重發機制實作可靠
- 擁塞控制:防止網路出現惡性擁塞
報文頭部

一些查看資訊命令
-
查看網路狀態,netstat -natp/在mac中需要使用
netstat -tlp tcp netstat -tlp udp來指定其后使用的協議狀況,- n:拒絕顯示別名,能顯示數字的全部轉化為數字禁止轉換,localhost這種形式顯示成ip形式
- t (tcp) 僅顯示tcp相關選項
- p:顯示行程的 PID 和名稱
-
抓包:抓80埠的包:tcpdump --n -i eth0 port 80
抓80埠的包或者apr請求的包:tcpdump --n -i eth0 port 80 or arp- –n:顯示ip形式,不以localhost方式顯示
- -i:指定網卡
- port:指定埠
-
IP地址:IP地址就可以訪問到每臺主機,相當于主機的唯一身份ID
-
掩碼: 子網掩碼只有一個功能,就是將IP地址劃分為網路地址和主機地址兩部分, 如同現實生活中的通訊地址,可以看作省市部分和具體門牌號部分,相同的IP地址,但掩碼不一樣,則指向的網路部分和主機部分不一樣,如IP地址192.168.1.11,255.255.255.0 的掩碼表示網路地址192.168.1,主機地址是1;255.255.0.0 的掩碼表示網路地址192.168,主機部分是1.1 ,
-
網關:一個網路連接到另一個網路的“關口”
-
dns:進行域名(domain name)和與之相對應的IP地址 (IP address)轉換的服務器,
http協議
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議):是一種無狀態的,以請求/應答方式運行的協議,他使用可以擴展的語意和自描述訊息格式,與基于網路的超文本資訊系統(html)靈活的互動
- 傳輸協議實際是交給TCP協議來完成的
- 無狀態:并不會存盤用戶的資訊;如果連接意外斷開,整個會話就會丟失,重新連接之后一般需要從頭開始
- 請求/應答:一次請求對應一次回應
- 可擴展:可以自定義擴展一些head欄位等
- 自描述: 訊息體可以是音頻視頻、文本、圖片等(Content-type)
HTTP協議解決了什么問題
-
Form Follows Function 形式服務于功能
-
解決的是人與機器之間高效的資訊互動
報文格式
http請求與回應報文基本相同,由4大部分組成
- 起始行(start line):描述請求與回應的基本資訊(請求行或狀態行)
- 訊息報頭(四種:普通報頭,請求報頭,回應報頭,物體報頭)
- 空行
- 訊息正文
請求報文

- 請求方法:如GET/HEAD/PUT/POST,表示對資源的操作;
- 請求目標:通常是一個URI,標記了請求方法要操作的資源;
- 版本號:表示報文使用的HTTP協議版本
回應報文

- 版本號:表示報文使用的HTT協議版本;
- 狀態碼:一個三位數,用代碼的形式表示處理的結果,比如200是成功,301/302是重定向,404是NOT FOUND,500是服務器錯誤;
- 原因:作為數字狀態碼補充,是更詳細的解釋文字,幫助人理解原因
HTTP頭欄位
頭部欄位是key-value的形式,key和value之間用"“分隔,最后用CRLF換行表示欄位結束,比如前后分離時經常遇到的要與后端協商傳輸資料的型別"Content-type:application/json”,這里key就是"Content-type",value就是"applicationjson",HTTP頭欄位非常靈活,不僅可以使用標準里的Host,Connection等已有頭,也可以任意添加自定義頭,這就給HTTP協議帶來了無限的擴展可能
頭欄位注意事項
- 欄位名不區分大小寫,欄位名里不允許出現空格,可以使用連字符"-",但不能使用下劃線"_"(有的服務器不會決議帶 " _ " 的頭欄位),欄位名后面必須緊接著":",不能有空格,而 “:” 后的欄位值前可以有多個空格;
- 欄位的順序是沒有意義的,可以任意排列不影響語意;
- 欄位原則上不能重復,除非這個欄位本身的語意允許,例如Set-Cookie,
常用頭欄位
HTTP協議中有非常多的頭欄位,但基本上可以分為四大類:
- 請求欄位:請求頭中的頭欄位;如Host,Referer
- 回應欄位:回應頭中的頭欄位,如:Server
- 通用欄位:在請求頭和回應頭里都可以出現,如Content-type,Connection;
請求程序

HTPS協議
由于HTTP天生“明文"的特點,整個傳輸程序完全透明,任何人都能夠在鏈路中截獲、修改或者偽造請求/回應報文,資料不具有可信性,例如:一個網站時沒有廣告的,打開后全是廣告,其實就是被劫持程序中修改了
因此就誕生了為安全而生的HTTPS協議使用HTPS時,所有的HTTP請求和回應在發送到網路之前,都要進行加密,
https利用摘要演算法、對稱加密演算法、非對稱加密演算法來完成的


我們為什么需要HTTPS?
主要有三個原因:
- 保護隱私:所有資訊都是加密傳播,第三方無法竊聽資料,如果使用HTTP明文傳輸資料的話,很可能被第三方劫持資料,那么所輸入的密碼或者其他個人資料都被暴露在他人面前,后果可想而知,
- 資料完整性:一旦第三方篡改了資料,接收方會知道資料經過了篡改,這樣便保證了資料在傳輸程序中不被篡改 —— 資料的完整性,
- 身份認證:第三方不可能冒充身份參與通信,因為服務器配備了由證書頒發機構(Certificate Authority,簡稱CA)頒發的安全證書,可以證實服務器的身份資訊,防止第三方冒充身份,(也有少數情況下,通信需要客戶端提供證書,例如銀行系統,需要用戶在登錄的時候,插入銀行提供給用戶的USB,就是需要客戶端提供證書,用來驗證客戶的身份資訊,)
Web架構的七大關鍵屬性
-
性能:影響高可用的關鍵因素
-
可伸縮性:支持部署可以互相互動的大量組件
-
簡單性:易理解、易實作、易驗證
-
可見性:對兩個組件間的互動進行監視或者仲裁的能力,如快取、分層設計等
-
可移植性:在不同的環境下運行的能力
-
可靠性:出現部分故障時對整體的影響程度
-
可修改性:對系統做出修改的難易程度,由可進化型、可定制性、可擴展性、可配置性、可重用性構成
五種架構風格
- 資料流風格 Data-flow Styles
優點:簡單性、可進化性、可擴展性、可配置性、可重用性 - 復制風格 Replication Styles
優點:用戶可察覺的性能、可伸縮性,網路效率、可靠性也可以得到提升 - 分層風格 Hierarchical Styles
優點:簡單性、可進化性、可伸縮性 - 移動代碼風格 Mobile Code Styles
優點:可移植性、可擴展性、網路效率 - 點對點風格 Peer-to-Peer Styles
優點:可進化性、可重用性、可擴展性、可配置性
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/289226.html
標籤:其他
上一篇:解決Linux服務中WebSocket報錯之:/lib64/libc.so.6: version `GLIBC_2.17‘ not found
