# 网络概述
## 网络协议
### 什么是网络协议
**网络协议**是一组“规则”,数据在网络进行网络传输的时候必须严格执行。
### 网络分层模型
**OSI七层分层模型(理论上的分层)** :物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
**TCP/IP四层模型(实际上的分层)** :链路层、网络层、传输层、应用层。
#### TCP/IP四层模型,相对应每层常见的协议
**链路层常见协议**:ARP、RARP
**ARP协议**:地址解析协议,为IP地址到对应的硬件地址之间提供动态映射。
**RARP协议**:逆地址解析协议,具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址(无盘机另当别论)。
**网络层常见协议**:ICMP、IGMP
**ICMP协议**:Internet互联网控制报文协议
**IGMP协议**:Internet组管理协议
**传输层常见协议**:TCP、UDP
**TCP**:传输控制协议
**UDP**:用户数据报协议
**应用层常见协议**:FTP、Telnet、TFTP、NFS
**FTP**:文件传输协议
**Telnet**:远程登录
#### TCP/IP四层模型,每层的功能和特点
**链路层**:链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中设备驱动程序和计算机中对应的网络及口卡。它们一起处理与电缆(或其他传输媒介)的物理接口细节。以太网规定,连入网络的所有设备,都必须有“网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。通过网卡能够使不同的计算机之间连接,从而完成数据通信等功能。“网卡”的地址(MAC地址),就是数据包接收和发送的物理地址。
**网络层**:网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。换言之,网络层的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做“网络地址”,这是我们平时所说的IP地址。这个IP地址好比我们的手机号码,通过手机号码可以得到用户所在的归属地。网络层的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做“网络地址”,这是我们平时所说的IP地址。这个IP地址好比我们的手机号码,通过手机号码可以得到用户所在的归属地。包含的主要信息是源IP和目的IP。于是,“网络层”出现以后,每台计算机有了两种地址,一种是 MAC 地址,另一种是网络地址。两种地址之间没有任何联系,MAC 地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。网络地址帮助我们确定计算机所在的子网络,MAC 地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理 MAC 地址。
**传输层**:传输层,主要为两台主机上的应用程序提供端到端的通信。举个例子,当我们一边聊QQ,一边聊微信,当一个数据包从互联网上发来的时候,我们怎么知道,它是来自QQ的内容,还是来自微信的内容?也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做“端口”(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。
**应用层**:应用层,负责处理特定的应用程序细节。应用程序收到“传输层”的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。“应用层”的作用,换句话说就是规定应用程序的数据格式。
## Socket编程
常用的Socket类型有两种:**流式Socket(SOCK_STREAM)**和**数据报式Socket(SOCK_DGRAM)**。**流式**是一种面向连接的Socket,针对于面向连接的TCP服务应用;**数据报式**Socket是一种无连接的Socket,对应于无连接的UDP服务应用。
### 网络应用程序设计模式
**C/S模式**:传统的网络应用设计模式,客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。
**优点**:数据传输效率高、协议选择灵活
**缺点**:工作量大、安全性构成威胁
**B/S模式**:浏览器(Browser)/服务器(Server)模式。只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。
**优点**:开发工作较小、不受平台限制、安全威胁小
**缺点**:缓存数据差、协议选择不灵活