OSI七層協議

HTTP協議對應於應用層,TCP協議對應於傳輸層,IP協議對應於網絡層,HTTP協議是基於TCP連接的,三者本質上沒有可比性。 TCP/IP是傳輸層協議,主要解決數據如何在網絡中傳輸;而HTTP是應用層協議,主要解決如何包裝數據。Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個調用接口(API),通過Socket,我們才能使用TCP/IP協議

HTTP連接

HTTP協議即超文本傳送協議(HypertextTransfer Protocol ),是Web聯網的基礎,也是手機聯網常用的協議之一,HTTP協議是建立在TCP協議之上的一種應用。

HTTP連接最顯著的特點是客戶端發送的每次請求都需要服務器回送響應,在請求結束後,會主動釋放連接。從建立連接到關閉連接的過程稱爲“一次連接”。因此HTTP連接是一種“短連接”,要保持客戶端程序的在線狀態,需要不斷地向服務器發起連接請求。若服務器長時間無法收到客戶端的請求,則認爲客戶端“下線”,若客戶端長時間無法收到服務器的回覆,則認爲網絡已經斷開。在HTTP 1.0中,客戶端的每次請求都要求建立一次單獨的連接,在處理完本次請求後,就自動釋放連接。在HTTP 1.1中則可以在一次連接中處理多個請求,並且多個請求可以重疊進行,不需要等待一個請求結束後再發送下一個請求。

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,是HTTP的安全版。 在HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 HTTPS存在不同於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此HTTP協議不適合傳輸一些敏感信息。

信息在網絡中如何傳遞:

1.廣播: 信息在同一個局域網內以廣播的形式傳遞!

2.路由: 信息在不同的局域網內傳播!以路由的形式傳遞!

 

七層協議:

互聯網的本質就是一系列的網絡協議,這個協議就叫OSI協議(一系列協議),按照功能不同,分工不同,人爲的分層七層。實際上這個七層是不存在的。沒有這七層的概念,只是人爲的劃分而已。區分出來的目的只是讓你明白哪一層是幹什麼用的。

七層劃分爲:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層。

五層劃分爲:應用層、傳輸層、網絡層、數據鏈路層、物理層。

四層劃分爲:應用層、傳輸層、網絡層、網絡接口層。

物理層:Rj45,802.3

中間的物理鏈接可以是光纜、集線器、中繼器、電纜、雙絞線、無線電波。中間傳的是電信號,即010101...這些二進制位。

數據鏈路層:

底層傳輸的010010101001...這些二級制位怎麼才能讓它有意義呢?

早期的時候,數據鏈路層就是來對電信號來做分組的。以前每個公司都有自己的分組方式,非常的亂,後來形成了統一的標準(標準就是協議),即以太網協議Ethernet。

Ethernet規定

一組電信號稱之爲一個數據包,或者叫做一個“幀”

每一數據幀分成:報頭head和數據data兩部分

head包含:(固定18個字節)

發送者(源地址,6個字節)
接收者(目標地址,6個字節)
數據類型(6個字節)
data包含:(最短46字節,最長1500字節)

數據包的具體內容
head長度+data長度=最短64字節,最長1518字節,超過最大限制就分片發送。

這就像寫信,發送者的地址(源地址)就是你家的地址,接收者地址(目標地址)就是對方的收信地址,你家的路由器就相當於郵局。其實在計算機通信中的源地址和目標地址指的是mac地址。

Mac地址的由來:

head中包含的源和目標地址由來:Ethernet規定接入Internet的設備都必須具備網卡,發送端的和接收端的地址便是指網卡的地址,即Mac地址。

每塊網卡出廠時都被燒錄上一個實際上唯一的Mac地址,長度爲48位2進制,通常由12位16進制數表示,(前六位是廠商編碼,後六位是流水線號)

有了mac地址以後,計算機就可以通信了,假設一個教室就是一個局域網(隔離的網絡),這個教室裏面有幾臺計算機,計算機的通信和人的通信是一個道理,把教室裏面的人都比作一個個計算機,假設教室裏面的人都是瞎子,其實計算機就是瞎子的,計算機通信基本靠吼,現在我要找教室裏面的飛哥要戰狼2的片,然後我就吼一聲,說我要找飛哥要戰狼2的片,戰狼2的片就屬於我的數據,但是我在發的時候我是不是要標識我是誰,我要找誰,我是誰就是我的mac地址,我要找誰就是飛哥的mac地址,這兩個地址做數據包的頭部,再加上數據戰狼2的片就構成了一個數據幀。

這個數據包封裝好以後就往外發,到物理層以後就全部轉成二級制,往外發是怎麼發的呢?就是靠吼。即“我是Edison,我找飛哥要戰狼2的片”。這麼吼了一嗓子以後,全屋子的人都能聽到,這就是廣播。

計算機底層,只要在一個教室裏(一個局域網),都是靠廣播的方式,吼。

局域網的理解:什麼是互聯網,互聯網就是由一個個局域網組成,局域網內的計算機不管是對內還是對外都是靠吼,這就是數據鏈路層的工作方式-----廣播。

 

廣播出去以後,所有人都聽得見,所有人都會拆開這個包,讀發送者是誰,接收者是誰,只要接收者不是自己就丟棄掉。對計算機來說,它會看自己的Mac地址,飛哥收到以後,他就會把片發給我,發送回來同樣採用廣播的方式了,靠吼。

同一個教室(同一個局域網)的計算機靠吼來通信,那不同教室的計算機又如何?

比如說局域網1的pc1與局域網2的pc10如何通信?你在教室1(局域網1)吼,教室2(局域網2)的人肯定是聽不見的。這就是跨網絡進行通信,數據鏈路層就解決不了這個問題了,這就得靠網絡層出面了。

在講網絡層之前,其實基於廣播的這種通信就可以實現全世界通信了,你吼一聲,如果全世界是一個局域網,全世界的計算機肯定可以聽得見,從理論上似乎行得通,如果全世界的計算機都在吼,你想一想,這是不是一個災難。因此,全世界不能是一個局域網。於是就有了網絡層。

網絡層: 建立 "主機/IP" 到 "主機/IP" 之間的連接

路由器/交換機: 具有網絡尋址功能,可以根據 IP 地址找到網絡中唯一的計算機!

你想,我是這個教室的一個學生,我想找隔壁教室一個叫老王的學生,我也不認識老王,那怎麼辦,我吼?老王在另外一個教室肯定是聽不到的。找教室的負責人,這個教室的負責人就負責和隔壁教室的負責人說話,說我們教室的有個學生要找你們教室的老王。往外傳的東西交給負責人就可以了,內部的話上面已經提到,通過廣播的方式,對外的東西廣播失效。教室的負責人就是網關,網關即網絡關口的意思。

Mac地址是用來標識你這個教室的某個位置,IP地址是用來標識你在哪個教室(哪個局域網)。你要跨網絡發包你是不是要知道對方的IP地址,比如你要訪問百度,你肯定得知道百度服務器的IP地址。計算機在發包前,會判斷你在哪個教室,對方在哪個教室,如果在一個教室,基於mac地址的廣播發包就OK了;如果不在一個教室,即跨網絡發包,那麼就會把你的包交給教室負責人(網關)來轉發。Mac地址及IP地址唯一標識了你在互聯網中的位置。

數據鏈路層中會把網絡層的數據包封裝到數數據鏈路層的數據位置,然後再添加上自己的包頭,再發給物理層,物理層發給網關,網關再發給對方教室的網關,對方教室的網關收到後在那個教室做廣播。

在數據鏈路層看,數據封裝了兩層,跟玩俄羅斯套娃有點類似,一層套了一層。

最終變成

現在來看另一個問題,在吼之前怎麼知道對方的Mac地址?這就得靠ARP協議(通過IP獲得Mac)

ARP協議的由來:在你找飛哥要片之前,你的先幹一件事,想辦法知道飛哥的Mac地址。即你的機器必須先發一個ARP包出去,ARP也是靠廣播的方式發,ARP發送廣播包的方式如下:

局域網中怎麼獲取對方的Mac地址:

肯定要知道對方的IP地址,這是最基本的,就像你要訪問百度,肯定得知道百度的域名,域名就是百度的IP地址。自己的IP可以輕鬆獲得,自己的Mac也輕鬆獲取,目標Mac爲12個F,我們叫廣播地址,表達的意思是我想要獲取這個目標IP地址172.16.10.11的機器的Mac地址。Mac爲12個F代表的是一種功能,這個功能就是獲取對方的MAC地址,計算機的Mac永遠不可能是12個F。假設是在本教室廣播,一嗓子吼出去了,所有人開始解包,只有IP地址是172.16.10.11的這個人才會返回他的Mac地址,其他人全部丟棄。發回來源Mac改成飛哥自己的Mac地址,同時把飛哥的Mac地址放在數據部分。

跨網絡怎麼獲取對方的Mac地址:

通過IP地址區分,計算機運算判斷出飛哥不在同一個教室,目標IP就變成了網關的IP了。網關的IP在計算機上配死了,可以輕鬆獲取。

這樣網關就會把它的Mac地址返回給你,然後正常發包

網關幫你去找飛哥,但對用戶來說,我們根本就感覺不到網關的存在。

傳輸層: 建立 "端口" 到 "端口" 之間的通信!

傳輸層的由來:網絡層的ip幫我們區分子網,以太網層的mac幫我們找到主機,然後大家使用的都是應用程序,你的電腦上可能同時開啓qq,暴風影音,等多個應用程序,

那麼我們通過ip和mac找到了一臺特定的主機,如何標識這臺主機上的應用程序,答案就是端口,端口即應用程序與網卡關聯的編號。

傳輸層功能:建立端口到端口的通信

補充:端口範圍0-65535,0-1023爲系統佔用端口

tcp協議:

可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但是爲了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。                                               

udp協議:

不可靠傳輸,”報頭”部分一共只有8個字節,總長度不超過65,535字節,正好放進一個IP數據包。

應用層

應用層由來:用戶使用的都是應用程序,均工作於應用層,互聯網是開發的,大家都可以開發自己的應用程序,數據多種多樣,必須規定好數據的組織形式 。

應用層功能:規定應用程序的數據格式。

例:TCP協議可以爲各種各樣的程序傳遞數據,比如Email、WWW、FTP等等。那麼,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了”應用層”。

1.http是要基於TCP連接基礎上的,簡單的說,TCP就是單純建立連接,不涉及任何我們需要請求的實際數據,簡單的傳輸。http是用來收發數據,即實際應用上來的。

2.TCP是底層通訊協議,定義的是數據傳輸和連接方式的規範
HTTP是應用層協議,定義的是傳輸數據的內容的規範
HTTP協議中的數據是利用TCP協議傳輸的,所以支持HTTP也就一定支持TCP

3.HTTP支持的是www服務
而TCP/IP是協議
它是Internet國際互聯網絡的基礎。TCP/IP是網絡中使用的基本的通信協議。
TCP/IP實際上是一組協議,它包括上百個各種功能的協議,如:遠程登錄、文件傳輸和電子郵件等,而TCP協議和IP協議是保證數據完整傳輸的兩個基本的重要協議。通常說TCP/IP是Internet協議族,而不單單是TCP和IP。

DNS協議:域名解析協議,將域名解析成IP地址。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章