### 分層架構
為了減少協議涉及的復雜性,大多數網絡模型均采用分層的方式來組織.每一層都有自己的功能,
就像建筑物一樣,每一層都靠下一層支持.每一層利用下一層提供的服務來為上一層提供服務,本層服務
的實現細節對上層屏蔽 .

越下面的層,越靠近硬件;越上面的層,越靠近用戶.至于每一層叫什么名字,其實并不重要.只需要知道,互聯網分成若干層即可.
* 物理層 : 主要定義物理設備標準,如網線的接口類型,光纖的接口類型,各種傳輸介質的傳輸速率等. 它的主要作用是傳輸比特流(就是由1,0轉化為電流強弱來進行傳輸,到達目的地后再轉化為1,0 ,也就是我們常說的數模轉換與模數轉換) .這一層的數據叫做比特
* 數據鏈路層 : 定義了如何讓格式化數據以幀為單位進行傳輸,以及如何讓控制對物理介質的訪問.這一層通常還提供錯誤檢測和糾正, 以確保數據的可靠傳輸.如:串口通信中使用到的115200,8,N,1
* 網絡層 : 在位于不同地理位置的網絡中的兩個注意系統之間提供鏈接和路徑選擇.Internet的發展使得從世界個站點訪問信息的用戶數大大增加,而網絡層正是管理這種連接的層
* 傳輸層 : 定義了一些傳輸數據的協議和端口號(WWW端口80等),如TCP(傳輸控制協議,傳輸效率低,可靠性強,用于傳輸可靠性要求高,數據量大的數據).UDP(用戶數據報協議,與TCP特性恰好相反,用于傳輸可靠性要求不高,數據量小的數據,如QQ聊天數據就是通過這種方式傳輸的) . 主要是將下層接收的數據進行分段和傳輸,到達目的地后再進行重組.常常把這一層數據叫做段
* 會話層 : 通過傳輸層(端口號:傳輸端口與接收端口)簡歷數據傳輸的通道.主要在你的系統之間發起會話或者接收會話請求(設備之間需要互相認識可以是IP也可以是MAC或者是主機名)
* 表示層 : 可確保一個系統的應用層鎖發送的信息可以被另一個系統的應用層讀取.例如:PC程序與另一臺計算機進行通信,其中一臺計算機使用擴展二一十進制交換碼(EBCDIC),而另一臺則使用美國信息交換標準碼(ASCII)來表示相同的字符.如有必要,表示層會通過使用一種用格式來實現多種數據格式之間的轉換
* 應用層 : 是最靠近用戶的OSI層。這一層為用戶的應用程序(例如電子郵件、文件傳輸和終端仿真)提供網絡服務
- 基本語法
- 申明變量
- 常量
- 數據類型
- 強制類型轉換
- 獲取命令行參數
- 指針
- 概述
- new函數
- 函數
- 概述
- 不定參數類型
- 有返回值
- 函數類型
- 回調函數
- 匿名函數和閉包
- 延遲調用defer
- 工程管理
- 工作區
- src,pkg和bin目錄
- 復合類型
- 概述
- 數組
- 概述
- 聲明并初始化
- 拷貝傳值
- slice
- 概述
- 創建切片
- 切片截取
- 切片和底層數組的關系
- slice常用方法
- 切片做函數參數
- map
- 概述
- map操作
- 結構體
- 概述
- 結構體初始化
- 結構體比較
- 結構體作為函數參數
- 結構體前加&
- 面向對象
- 概述
- 匿名組合
- 方法
- 值語義和引用語義
- 方法集
- 方法的繼承
- 方法重寫
- 方法值
- 接口
- 接口定義和實現
- 多態的表現
- 接口繼承
- 接口轉換
- 空接口
- 類型斷言
- 異常處理
- error接口
- panic
- recover
- 文本文件處理
- 字符串操作
- 正則表達式
- json處理
- 文件操作
- 標準設備文件操作
- 并發編程
- 概述
- 并發和并行
- go語言并發優勢
- goroutine
- goroutine概述
- 創建goroutine
- 主協程先退出
- runtime包
- Gosched
- Goexit
- GOMAXPROCE
- channel
- 多資源競爭
- channel類型
- 無緩沖channel
- 有緩沖channel
- 關閉channel
- 單向channel
- 單向channel特性
- 定時器
- Timer
- Ticker
- select
- select作用
- 超時
- sync
- 競爭狀態
- 網絡編程
- 網絡概述
- 網絡協議
- 分層模型
- 網絡分層架構
- 層與協議
- 每層協議的功能
- 鏈路層
- 網絡層
- 傳輸層
- 應用層
- socket編程
- 組合和繼承
- 注意事項
- 細節
- go語言實現隊列
- google工程師golang
- 基礎語法
- 內建容器
- 面向"對象"
- 依賴管理
- 面向接口
- 函數式編程
- 錯誤處理和資源管理
- 測試與性能調優
- goroutine
- channel
- golang問題集
- 斷言和類型轉換
- Go語言圣經
- 入門
- 程序結構
- 命名
- 聲明
- 變量
- 賦值
- 類型
- 包和文件
- 作用域
- 基礎數據類型
- 整數
- 浮點數
- 復數
- 布爾型
- 字符串
- 常量
- 復合數據類型
- 數組
- slice
- map
- 結構體
- json
- 文本和HTML模板
- 函數
- 函數聲明
- 錯誤
- 函數值
- 匿名函數
- defer
- panic
- recover
- 方法
- 方法聲明
- 指針對象的方法
- 封裝
- 接口
- 說明
- 接口是合約
- 實現接口的條件
- 接口值
- 類型斷言
- 通過類型斷言詢問行為
- 類型開關
- Goroutines和Channels
- 協程
- channels
- 無緩沖channel
- 串聯的channel
- 有緩沖channel
- 并發的循環
- select多路復用
- 并發的退出
- 并發問題的自我思考
- 基于共享變量的并發
- 競爭條件
- 互斥鎖
- 讀寫鎖
- 內存同步
- sync.Once
- 協程和線程
- 包和工具
- 測試
- 反射
- 什么是反射
- 為什么需要反射
- reflect.Type和reflect.Value
- 通過reflect.Value修改值
- 底層編程