標簽:之間 icm 互聯網通信 理解 啟動 以太網 模型 text arp
網絡存在的意義就是跨地域數據傳輸, 稱之為通信
網絡 = 物理鏈接介質 + 互聯網通信協議
互聯網的本質就是一系列的協議,總稱為‘互聯網協議’(Internet Protocol Suite)。互聯網協議的功能:定義計算機如何接入internet,以及接入internet的計算機通信的標準。
互聯網協議按照功能不同分為osi七層或tcp/ip五層或tcp/ip四層
OSI七層協議數據傳輸的封包與解包過程如下
將應用層,表示層,會話層并作應用層,從tcp/ip五層協議的角度來闡述每層的由來與功能,搞清楚了每層的主要協議, 就理解了網絡通信的原理
物理層的作用:
(1) 規定怎樣在連接各種計算機的傳輸媒介上傳輸數據比特,不是指具體的傳輸媒介。
(2)完成傳輸方式的轉換。因為在計算機內部多采用并行傳輸方式,但數據在通信線路上一般都是串行傳輸。
負責發送電信號, 單純的電信號毫無意義, 必須對其進行分組, 一組物理層數據稱之為位。
數據鏈路層由來:單純的電信號0和1沒有任何意義,必須規定電信號多少位一組,每組什么意思
數據鏈路層的功能:定義了電信號的分組方式
數據鏈路:鏈路是一個結點到另一個結點之間的物理線路,而中間滅有其他交換結點。當傳輸數據時,還需要一些必要的通信協議來控制數據傳輸。因此,鏈路加上通信協議就是數據鏈路。
在數據鏈路層中, 一組數據稱之為數據幀
幀:數據鏈路層的協議數據單元為幀。數據鏈路層將網絡層下發的IP數據報封裝成幀
數據幀分為兩部分: 頭部信息和數據, 頭部信息中包含有源地址與目標地址, 該地址是mac地址, 數據即網絡層的整體數據內容。
以太網協議規定但凡接入互聯網的主機必須有一塊網卡, 每塊網卡在出廠時都燒制好一個獨一無二的地址-mac地址
注意: 計算機通信采用的是廣播的方式, 即以太網協議的工作方式是廣播
因為以太網協議的工作方式是廣播的方式, 所以, 如果一臺計算機發送信息時, 全世界將會收到, 所以這將導致出現問題, 那么就需要劃分網絡區域, 也就是網絡層的工作
網絡層要達到的目的: 劃分廣播域, 每一個廣播域但凡要接通外部, 一定要有一個網關幫內部的計算機轉發包到公網, 網關與外界通信走的是路由協議
在網絡層中, 一組數據稱為數據包, 數據包分為頭信息和數據兩部分, 頭信息中包括源地址和目標地址(該地址是ip地址), 數據包含傳輸層整體的數據內容。
注意: 一個合法的IPv4地址組成部分 = ip地址/子網掩碼地址
IP協議是TCP/IP協議的核心,所有的TCP,UDP,IMCP,IGMP的數據都以IP數據格式傳輸。要注意的是,IP提供不可靠、無連接的數據傳送,賴其他層的協議進行差錯控制。不可靠指的是IP數據報不保證能成功的到達目的地,如果出現錯誤則選擇丟棄該數據,然后發送ICMP消息報給信源端。無連接指的是IP不提供任何后續數據報的狀態信息,每個數據報處理都是獨立的。如果一個信源發送了連續的兩個數據報,每個數據報選擇獨立的路由,兩個數據可能不同時到達。
IP協議的作用主要有兩個,一個是為每一臺計算機分配IP地址,另一個是確定哪些地址在同一個子網絡。
進行網絡通信的時候, 我們事先知道的是對方的ip地址, 但是計算機的底層通信是基于ethernet以太網協議的mac地址通信, 所以必須要將ip地址解析成mac地址, 這就要使用到ARP協議。
ARP協議的工作流程 # 兩臺計算機位于同一局域網內 1. 會先獲取兩個通信的計算機的ip地址, 然后計算兩者的地址, 如果一樣, 拿到另一個計算機的mac地址即可
2. 然后發送廣播包, 格式如下: 源mac 目標mac 源ip 目標ip 數據部分 發送端mac FF:FF:FF:FF:FF:FF 172.16.10.10/24 172.16.10.11/24 數據
FF:FF:FF:FF:FF:FF有特殊的含義, 表示要獲取目標mac地址 # 兩臺計算機不在同一局域網內 1. 會先獲取兩個通信的計算機的ip地址, 然后計算兩者的地址, 如果不一樣, 拿到網關的mac地址
2. 然后發送廣播包, 格式如下: 源mac 目標mac 源ip 目標ip 數據部分 發送端mac FF:FF:FF:FF:FF:FF 172.16.10.10/24 172.16.10.11/24 數據 FF:FF:FF:FF:FF:FF有特殊的含義, 表示要獲取目標mac地址
3. 然后網關將數據通過路由協議找到目標計算機, 然后得到目標的mac的地址
這個包會以廣播的方式在發送端所處的自網內傳輸,所有主機接收后拆開包,發現目標ip為自己的,就響應,返回自己的mac
ip地址+mac地址可以標識全世界范圍內獨一無二的計算機, 當然, 由于ARP協議的存在, ip地址也可以標識全世界范圍內獨一無二的計算機
傳輸層功能:建立端口到端口的通信
端口范圍0-65535, 0-1023為系統占用端口
TCP將用戶數據打包構成報文段,它發送數據時啟動一個定時器,另一端收到數據進行確認,對失序的數據重新排序,丟棄重復的數據。TCP提供一種面向連接的可靠的字節流服務,面向連接意味著兩個使用TCP的應用(B/S)在彼此交換數據之前,必須先建立一個TCP連接
TCP三次握手建立連接的過程:
1、請求端(客戶端)發送一個SYN段指明客戶打算連接的服務器的端口,以及初始序列號(ISN),這個SYN為報文段1.
2、服務器發回包含服務器的初始序列號的SYN報文段(報文段2)作為應答。同時,將確認序號設置為客戶的ISN加1以對客戶的SYN報文段進行確認。一個SYN將占用一個字符。
3、客戶必須將明確序號設置為服務器的ISN加1以對服務器的SYN報文段進行確認(報文段3)
4、這三個報文段完成連接的建立,這個過程成為三次握手。
TCP四次揮手終止連接的過程:
1、客戶端進程發出連接釋放報文,并且停止發送數據。釋放數據報文首部,FIN=1,其序列號為seq=u(等于前面已經傳送過來的數據的最后一個字節的序號加1),此時,客戶端進入FIN-WAIT-1(終止等待1)狀態。 TCP規定,FIN報文段即使不攜帶數據,也要消耗一個序號。
2、服務器收到連接釋放報文,發出確認報文,ACK=1,ack=u+1,并且帶上自己的序列號seq=v,此時,服務端就進入了CLOSE-WAIT(關閉等待)狀態。TCP服務器通知高層的應用進程,客戶端向服務器的方向就釋放了,這時候處于半關閉狀態,即客戶端已經沒有數據要發送了,但是服務器若發送數據,客戶端依然要接受。這個狀態還要持續一段時間,也就是整個CLOSE-WAIT狀態持續的時間。
客戶端收到服務器的確認請求后,此時,客戶端就進入FIN-WAIT-2(終止等待2)狀態,等待服務器發送連接釋放報文(在這之前還需要接受服務器發送的最后的數據)。
3、服務器將最后的數據發送完畢后,就向客戶端發送連接釋放報文,FIN=1,ack=u+1,由于在半關閉狀態,服務器很可能又發送了一些數據,假定此時的序列號為seq=w,此時,服務器就進入了LAST-ACK(最后確認)狀態,等待客戶端的確認。
客戶端收到服務器的連接釋放報文后,必須發出確認,ACK=1,ack=w+1,而自己的序列號是seq=u+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀態。注意此時TCP連接還沒有釋放,必須經過2∗MSL(最長報文段壽命)的時間后,當客戶端撤銷相應的TCB后,才進入CLOSED狀態。
4、服務器只要收到了客戶端發出的確認,立即進入CLOSED狀態。同樣,撤銷TCB后,就結束了這次的TCP連接。可以看到,服務器結束TCP連接的時間要比客戶端早一些。
TCP總共有11種狀態:
注意: 當服務器大量處于TIME_WAIT狀態時, 意味著服務端正在經歷高并發
TCP協議可以為各種各樣的程序傳遞數據,比如Email、WWW、FTP等等。那么,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了”應用層”。
應用層協議定義了運行在不同端上的應用程序進程如何相互傳遞報文,其中包括了
1)交換的報文類型,
2)各種報文類型的語法,如報文中的各個字段以及這些字段是怎么描述的
3)字段的語義,即這些字段中包含信息的含義
4)一個進程何時以及如何發送報文,對報文進行響應的規則
我們知道兩個進程如果需要進行通訊最基本的一個前提是能夠唯一標示一個進程,在本地進程通訊中我們可以使用PID來唯一標示一個進程,但PID只在本地唯一,網絡中的兩個進程PID沖突幾率很大,這時候我們需要另辟它徑了,我們知道IP層的IP地址可以唯一標示主機,而TCP層協議和端口號可以唯一標示主機的一個進程,這樣我們可以利用IP地址+協議+端口號唯一標示網絡中的一個進程。
能夠唯一標示網絡中的進程后,它們就可以利用Socket進行通信了,什么是Socket呢?我們經常把Socket翻譯為套接字,Socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層復雜的操作抽象為幾個簡單的接口供應用層調用已實現進程在網絡中通信。
標簽:之間 icm 互聯網通信 理解 啟動 以太網 模型 text arp
原文地址:https://www.cnblogs.com/featherwit/p/13356976.html