OSI七層:
OSI七層與ICP/IP概念層的對應:
ICP/IP概念層上的網路裝置:
IP(Internet Protocol網際協議):計算機之間的通訊
IP(網路協議)位於網路層,作用是把各種資料包傳送給對方,而要保證確實傳送到對方那裡,則需要滿足各類條件,其中兩個重要的條件是IP地址和MAC地址。IP地址指明瞭節點被分配的地址,MAC地址是指網絡卡所屬的固定地址。IP地址和MAC地址進行配對,IP地址可變換,但MAC地址基本上不會更改。這裡我為什麼說基本不會改變呢?因為目前我們可以通過軟體修改,也就是用軟體來修改MAC地址。IP地址是可以和MAC地址進行配對的。
使用ARP協議憑藉MAC地址進行通訊
IP間的通訊依賴MAC地址。網路中,處於同一區域網內的情況很少,通常是經過多臺計算機和網路裝置中轉才能連線到對方。中轉時,會利用下一站裝置的MAC地址來搜尋下一個中轉目標。這時,會採用ARP協議(Address Resolution Protocol),ARP是一種用以解析地址的協議,根據通訊方的IP地址就可以反查對應處的MAC地址。
在網路上,通訊的雙方通常都是要經過多臺計算機或者網路裝置中轉才能連線到對方。而在進行中轉時,會利用下一站中轉裝置的MAC地址來搜尋下一個中轉目標,這時我們就是靠ARP協議來進行處理。
IP是計算機用來相互識別的通訊的一種機制,每臺計算機都有一個IP地址,用來在internet上識別這臺計算機。IP負責在因特網上傳送和接受資料包。通過IP,訊息(或者其他資料)被分割為小的獨立的包,並通過因特網在計算機之間傳送。IP負責將每個包路由至它的目的地。
IP協議僅僅是允許計算機相互發訊息,但它不檢查訊息是否以傳送的次序到達而且沒有損壞(只檢查關鍵的頭資料)。為了提供訊息檢驗功能,直接在IP協議上設計了傳輸控制協議TCP。
TCP協議(Transmission Control Protocol傳輸控制協議):應用程式之間的通訊
TCP協議位於傳輸層,提供可靠地位元組流服務,即為了方便傳輸,將大塊資料分割成以報文段為單位的資料包進行管理。
TCP確保資料包以正確的次序到達,並且嘗試確認資料包的內容沒有改變。TCP在IP地址之上引埠(Port),它允許計算機通過網路提供各種服務。一些埠號為不同的服務保留。而埠號是總所周知的。
服務或守護程序:在提供服務的機器上,有程式監聽特定埠上的通訊流。例如大多數電子郵件通訊流出現在埠25上,用於www的HTTP通訊流出現在80埠上。
當應用程式希望通過TCP與另一個應用程式通訊時,它會發送一個通訊請求。這個請求必須被送到一個確切的地址。當雙方“握手”之後,TCP將在兩個應用程式之間建立一個全雙工(full-duplex)的通訊,佔用兩個計算機之間整個的通訊線路。TCP用於應用程式到網路的資料傳輸控制。TCP負責在資料傳送之前將它們分割為IP包,然後在它們到達的時候將它們重組。
建立起一個TCP連線需要經過“三次握手”:
第一次握手:客戶端傳送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也傳送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。
握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,TCP連線一旦建立,在通訊雙方中的任何一方主動關閉連線之前,TCP 連線都將被一直保持下去。斷開連線時伺服器和客戶端均可以主動發起斷開TCP連線的請求,斷開過程需要經過“四次握手”(過程就不細寫了,就是伺服器和客戶端互動,最終確定斷開).
TCP/IP就是TCP和IP兩個協議在一起協同工作,有上下層次的關係。
TCP負責應用軟體(比如你的瀏覽器)和網路軟體之間的通訊。IP負責計算機之間的通訊。TCP負責將資料分割並裝入IP包,IP負責將包傳送至接受者,傳輸過程要經IP路由器負責根據通訊量、網路中的錯誤和其他引數來進行正確地定址,然後在它們到達的時候重新組合它們。
HTTP與TCP、IP和DNS的關係:
我來拿我的部落格來舉個例子:
首先是,我想訪問網站,將域名傳送給DNS去解析,DNS解析後將網站的IP地址返回給客戶端,然後通過IP地址發起HTTP請求。HTTP此時的作用是 生成針對目標WEB伺服器(我們這裡指的是網站的伺服器)的HTTP請求報文,然後將請求報文傳送給傳輸層,此時為了方便通訊,TCP會將HTTP請求報文 分割成報文段,這些報文段會有一個序號,這裡的報文段哪一個先發送哪一個先到達,它們是按序傳送的。只要建立起TCP連線,客戶端與伺服器之間的報文交換就不會丟失,不會被破壞,也不會在接收時出現錯序。接著到了網路層,此時IP協議的職責是,搜尋對方的地址,一邊中轉一邊傳送。然後找到了伺服器的位置,此時伺服器的傳輸層中 TCP的職責是 接收到對方傳送過來的報文段後,對其進行重組,這裡的重組是按序號進行重組的。然後到了伺服器的應用層,HTTP會對客戶端請求的內容進行處理。處理完後,伺服器同樣會利用TCP/IP通訊協議向客戶端進行回傳響應。最後客戶端收到響應後,將內容輸出頁面顯示。即完成了一次HTTP事務。