1、模型
什麼是模型,這是個抽象概念。它給我們定義了某種事物的輪廓。在實現某個事物時可以參考該事物的模型。比如說:設計圖、工程藍圖。在計算機中,為了讓計算機能夠通訊,定義了一個模型----- OSI
七層模型。知道有這麼個東西就行了,這不是重點。
1-1、OSI七層模型
Open System Interconnection
,適用於所有的網路。
看看這七層分別是什麼:
- 應用層(Application) 提供網路與使用者應用軟體之間的介面服務
- 表示層(Presentation) 提供格式化的表示和轉換資料服務,如加密和壓縮
- 會話層(Session) 提供包括訪問驗證和會話管理在內的建立和維護應用之間通訊的機制
- 傳輸層(Transimission) 提供建立、維護和取消傳輸連線功能,負責可靠地傳輸資料(PC)
- 網路層(Network) 處理網路間路由,確保資料及時傳送(路由器)
- 資料鏈路層(DataLink) 負責無錯傳輸資料,確認幀、發錯重傳等(交換機)
- 物理層(Physics) 提供機械、電氣、功能和過程特性(網路卡、網線、雙絞線、同軸電纜、中繼器)
看看上面這一坨,這麼多,怎麼記,很簡單。一句話:物 鏈 網 傳 會 表 應。
來,先讀它6遍,下班了,在讀3遍,睡覺前,在看一眼,第二天上班前再看一眼,OK,你絕對記住了。我就是這樣記住的。
1-2、TCP/IP參考模型
為啥又來了個模型,TCP/IP
是OSI
七層模型的一種實現,只不過它沒有完全按照七層模型去實現,這很正常。
來看看這5層:
- 應用層
- 傳輸層
- 網路層
- 資料鏈路層
- 物理層
記住了OSI
七層模型,這個都不用記。
2、簡介各層作用
應用層最常見的就是http
協議了,當然還有ftp
、smtp
等等。這一層的作用就是接受使用者(也就是程式設計師)的原始資料,把各式各樣的資料如字母、數字、漢字、圖片等轉換成二進位制,然後按照某個協議,將資料包裝起來,然後扔給下一層。
2-1、傳輸層
傳輸層的作用就是提供了一種端到端的連結,可以將收發資料,並且保證資料的完整性和順序性。
傳輸層的代表協議就是tcp
了,tcp
有以下幾個功能:
- 將資料進行分段打包傳輸
- 對每個資料包編號控制順序
- 運輸中丟失、重發和丟棄處理
- 流量控制避免擁塞
2-2、網路層
網路層位於傳輸層和網路介面層之間,用於把資料從源主機經過若干個中間節點傳送到目標主機,並向傳輸層提供最基礎的資料傳輸服務,它要提供路由和選址的工作。
這一層會涉及到幾個概念,我們來看一下:
選址:交換機是靠MAC來定址的,而因為MAC地址是無層次的,所以要靠IP地址來確認計算機的位置,這就是選址
路由:在能夠選擇的多條道路之間選擇一條最短的路徑就是路由的工作
IP:在網路中,每臺計算機都有一個唯一的地址,方便別人找到它,這個地址稱為IP地址。
2-3、資料鏈路層
資料鏈路層們於物理層和網際網路層之間,用來向網路層提供資料,就是把源計算機網路層傳過來的資訊傳遞給目標主機。
MAC地址:
- 在通訊過程中是用內建在網路卡內的地址來標識計算機身份的
- 每個網路卡都有一個全球唯一的地址來標識自己,不會重複
- MAC地址48位的二進位制組成,通常分為6段,用16進製表示
2-4、物理層
物理層計算機在傳遞資料的時候傳遞的都是0和1的數字,而物理層關心的是用什麼訊號來表示0和1,是否可以雙向通訊,最初的連線如何建立以及完成連線如何終止,物理層是為資料傳輸提供可靠的環境。
物理層的主要作用是:
- 為資料端裝置提供傳送資料的通路
- 傳輸資料
- 啟用物理連線,在連線的裝置之間連線起來形成通路
- 傳輸資料,關心如何打包資料和控制傳輸速度
- 關閉物理連線
3、三次握手、四次揮手
來看看這三次握手分別是什麼:
- 第一次握手主機A通過一個標識為SYN標識位的資料段傳送給主機B請求連線,通過該資料段告訴主機B希望建立連線,需要B應答,並告訴主機B傳輸的起始序列號
- 第二次握手是主機B用一個確認應答ACK和同步序列號SYNC標誌位的資料段來響應主機A,一是傳送ACK告訴主機A收到了資料段,二是通知主機A從哪個序列號做標記。
- 第三次握手是主機A確認收到了主機B的資料段並可以開始傳輸實際資料。
上張圖看看:
仔細看看圖就明白了,始終想著,我要和對方建立連線,必須要做到,第一,對方能收到我的訊息,第二,我能收到對方的訊息。就像打電話一樣,很少有人電話號碼剛撥打出去,就開始叨叨的說話了。
再來看看四次揮手是什麼:
- 主機A傳送FIN控制位發出斷開連線的請求
- 主機B進行響應,確認收到斷開連線請求 -主機B提出反方向的關閉要求
- 主機A確認收到的主機B的關閉連線請求
看看圖:
4、其他
4-1、不同層中的稱謂:
- 資料幀(Frame):是一種資訊單位,它的起始點和目的點都是資料鏈路層。
- 資料包(Packet):也是一種資訊單位,它的起始和目的地是網路層。
- 段(Segment):通常是指起始點和目的地都是傳輸層的資訊單元。
- 訊息(message):是指起始點和目的地都在網路層以上(經常在應用層)的資訊單元。
4-2、問與答
1、問:為什麼需要三次握手?
答:確保雙方收發都是正常的
2、問:為什麼需要四次揮手?
答: 雙方資料傳送完畢,都認為可以斷開
3、問:為什麼需要等待?
答:A向B發的FIN可能丟失
4、問:為什麼握手是三次,但揮手卻是四次?
答:當Server端收到FIN報文時,很可能並不會立即關閉SOCKET