### 分层架构
为了减少协议涉及的复杂性,大多数网络模型均采用分层的方式来组织.每一层都有自己的功能,
就像建筑物一样,每一层都靠下一层支持.每一层利用下一层提供的服务来为上一层提供服务,本层服务
的实现细节对上层屏蔽 .

越下面的层,越靠近硬件;越上面的层,越靠近用户.至于每一层叫什么名字,其实并不重要.只需要知道,互联网分成若干层即可.
* 物理层 : 主要定义物理设备标准,如网线的接口类型,光纤的接口类型,各种传输介质的传输速率等. 它的主要作用是传输比特流(就是由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修改值
- 底层编程
