author:pasca time:2019/01/05
前言:部分來源於網路,僅供學習使用。
複製程式碼
[TOC]
一、計算機網路體系結構
大道尚有三千,而為了多種維度描述網路,到現在也有多種網路體系結構。分別是TCP/IP四層網路模型,TCP/IP五層網路模型以及我們廣為人知的ISO七層網路模型。 當然,無論哪種模型,其目的都是為了建立 一個標準而讓更多的人可以使用它,就如同我們的語言:普通話和英語。 而目前TCP/IP協議已經成為Internet中的“通用語言”,學習和使用網路必不可少。

國際標準化組織(ISO)在1978年提出了“開放系統互聯參考模型”,即我們熟知的OSI七層模型。此外,還有TCP/IP 四層模型、TCP/IP 五層模型。
- OSI體系結構:概念清楚 & 理念完整,但複雜&不實用
- TCP/IP 四層體系結構:含了一系列構成網際網路基礎的網路協議,是Internet的核心協議 & 被廣泛應用於區域網和廣域網
- TCP/IP 五層體系結構:OSI和TCP/IP四層模型的融合,開放了應用較多的資料鏈路層和物理層,便於學習使用


1、物理層
物理層主要是原始資料的傳輸,其中可能發生的錯誤由上層的資料鏈路層來校驗。這裡記住物理層兩個重要的網路裝置:中繼器和集線器。 兩者的功能主要是連線客戶端之間訊號的放大、

2、資料鏈路層
資料鏈路層在物理層提供的服務的基礎上向網路層提供服務,其最基本的服務是將源自網路層來的資料可靠地傳輸到相鄰節點的目標機網路層。

3、網路層
網路層的目的是實現兩個端系統之間的資料透明傳送,具體功能包括定址和路由選擇、連線的建立、保持和終止等。它提供的服務使傳輸層不需要了解網路中的資料傳輸和交換技術。對於網路層的理解,關鍵詞是“路徑選擇、路由及邏輯定址”。

4、傳輸層
傳輸層的任務是根據通訊子網的特性,最佳的利用網路資源,為兩個端系統的會話層之間,提供建立、維護和取消傳輸連線的功能,負責端到端的可靠資料傳輸。 網路層只是根據網路地址將源結點發出的資料包傳送到目的結點,而傳輸層則負責將資料可靠地傳送到相應的埠。

5、會話層
會話層主要是利用傳輸層提供的端到端服務,向表示層提供增值服務,同時負責建立、管理以及終止會話程式,實現資料同步。
6、表示層
表示層對上層資料或資訊進行變換以保證一個主機應用層資訊可以被另一個主機的應用程式理解。表示層的資料轉換包括資料的加密、壓縮、格式轉換等。
7、應用層
為作業系統或網路應用程式提供訪問網路服務的介面。

二、IP地址(IPv4地址)詳解
1、定義
連線在Internet中的每一臺主機(或 路由器)的全球唯一的識別符號
2、組成
IP地址 = 32位 = 網路號 + 主機號;即IP地址 ={<網路號>,<主機號>}
其中:
網路號:標誌主機(或路由器)所連線到的網路。一個網路號在整個因特網範圍內必須是唯一的。
主機號:標誌該主機(或路由器)。一個主機號在它面前的網路號所指明的網路範圍必須是唯一的。
複製程式碼
不同型別的IP地址,其主機號 & 網路號所佔位元組數不同;故:一個IP地址在整個網路範圍內是唯一的
3、分類
傳統的IP地址是分類的地址,分為A,B,C,D,E五類
區別在於網路號 & 主機號佔的位元組數不同
複製程式碼

4、私有地址
IPv4地址協議中預留了3個IP地址段,作為私有地址,供組織機構內部(公司內網)使用。這三個地址段分別位於A、B、C三類地址內: A類私有地址:10.0.0.0/8,範圍是:10.0.0.0~10.255.255.255 B類私有地址:172.16.0.0/12,範圍是:172.16.0.0~172.31.255.255 C類私有地址:192.168.0.0/16,範圍是:192.168.0.0~192.168.255.255

特別注意:在各類IP地址中,有一些IP地址用於特殊用途,不能用於做主機IP地址

三、TCP/UDP詳解
1、TCP
1.1 定義和特點,
Transmission Control Protocol,即 傳輸控制協議。
- 面向連線、面向位元組流、全雙工通訊、可靠
1.2 優缺點
- 優點:資料傳輸可靠
- 缺點:效率慢(因需建立連線、傳送確認包等
1.3 報文段格式
首部前20個字元固定、後面有4n個位元組是根據需而增加的選項,故 TCP首部最小長度 = 20位元組


1.4 建立連結——三次握手


重點:三次握手的必要性
-
結論 防止伺服器端因接收了早已失效的連線請求報文,從而一直等待客戶端請求,最終導致形成死鎖、浪費資源
-
具體描述
1.5 釋放連線——四次揮手
在通訊結束後,雙方都可以釋放連線,共需 四次揮手


重點:四次揮手的必要性
為了保證通訊雙方都能通知對方 需釋放 & 斷開連線,即釋放連線後,都無法接收 / 傳送訊息給對方

2、UDP
2.1 定義和特點
User Datagram Protocol,即 使用者資料包協議,無連線的、不可靠的、面向報文、無擁塞控制。

2.2 優缺點
- 優點:速度快
- 缺點:訊息易丟失(特別是 網路較差時)
2.3 報文段格式
- UDP的報文段共有2個欄位:資料欄位 & 首部欄位
- 下面主要介紹首部(8位元組、4個欄位)
3、TCP和UDP比較

四、HTTP協議
1、簡介

2、工作方式
HTTP協議採用 請求 / 響應 的工作方式,如下圖。

3、HTTP結構介紹
1、請求行
意義:宣告請求方法 、主機域名、資源路徑 & 協議版本
請求行的組成 = 請求方法 + 請求路徑 + 協議版本


重點:Post和Get的方法

示例:
GET /buckets HTTP/1.1
複製程式碼
2、請求頭
- 作用:宣告客戶端、伺服器 / 報文的部分資訊
- 使用方式:採用”header(欄位名):value(值)“的方式
- 常用請求頭
- 請求和響應報文的通用Header
- 常見請求Header
示例
Host: rs.qbox.me
Content-Type: application/x-www-form-urlencoded
User - Agent:Mozilla/5.0
複製程式碼
3、請求體
- 作用:存放 需傳送給伺服器的資料資訊
可選部分,如 GET請求就無請求資料
複製程式碼
有下面三種使用方式:

4、總結

示例:

五、Socket
Soclet即套接字,是應用層 與 TCP/IP 協議族通訊的中間軟體抽象層,表現為一個封裝了 TCP / IP協議族 的程式設計介面(API)。

Socket不是一種協議,而是一個程式設計呼叫介面(API),屬於傳輸層(主要解決資料如何在網路中傳輸)
即:通過Socket,我們才能在Andorid平臺上通過 TCP/IP協議進行開發
對使用者來說,只需呼叫Socket去組織資料,以符合指定的協議,即可通訊
複製程式碼
- 成對出現,一對套接字:
Socket ={(IP地址1:PORT埠號),(IP地址2:PORT埠號)}
複製程式碼
- 一個 Socket 例項 唯一代表一個主機上的一個應用程式的通訊鏈路
六、小知識
1、路由器和交換機的區別

2、Cookie 與 Session
-
簡介
-
區別&對比
3、Cookie 與 Token
-
簡介
-
基於Cookie的身份驗證 & 驗證流程
-
基於Token的身份驗證 & 驗證流程

4、瀏覽器開啟域名的過程解析
開啟一個網頁,完成流程如下:
