正如郭大侠所说,tcp/ip illustrated,已经对于计算机网络讲的很细致了,没有必要再“班门弄斧”,但是我不是这样认为的:作为权威书籍,我很认可,但是并不是适用所有的场合,我们需要将计算机网络与web关联的部分集中起来学习,不多也不少,满足需求就好,只要你入了门,后面自己查工具书就好。
现在使用的计算机网络可以分为两个大层,下三层(物理层,数据链路层,网络层)作为一层,可被称为媒介层,上四层(传输层,会话层,表示层,应用层),可被称为主机层。下三层普遍使用的是以太网协议,上四层使用的TCP/IP协议;上四层与下三层可以使用不同的协议进行组合,下三层主要保证网络结构的构建与管理,数据在结点间的传输,只保证最基本的比特流的传输和校验。
| OSI 模型 | ||||
|---|---|---|---|---|
| 层 | 协议数据单元 | 功能 | 例子 | |
| 主机层 | 7. 应用层 | 数据 | High-level APIs, including resource sharing, remote file access | DotNetFtpLibrary, SMTP web API, SSH, .NET, SnmpSharpNet, HTML Class, HTTP API server |
| 6. 表示层 | Translation of data between a networking service and an application; including character encoding, data compression and encryption/decryption | CSS, GIF, HTML, XML, JSON, S/MIME | ||
| 5. 会话层 | Managing communication sessions, i.e. continuous exchange of information in the form of multiple back-and-forth transmissions between two nodes | RPC, SCP, NFS, PAP, TLS, FTP, HTTP, HTTPS, SMTP, SSH, Telnet | ||
| 4. 传输层 | TCP/UDP | Reliable transmission of data segments between points on a network, including segmentation, acknowledgement and multiplexing | NBF, TCP, UDP | |
| 媒介层 | 3. 网络层 | 数据包 | Structuring and managing a multi-node network, including addressing, routing and traffic control | AppleTalk, ICMP, IPsec, IPv4, IPv6 |
| 2. 数据链路层 | 帧 | Reliable transmission of data frames between two nodes connected by a physical layer | IEEE 802.2, L2TP, LLDP, MAC, PPP, ATM, MPLS | |
| 1. 物理层 | 比特 | Transmission and reception of raw bit streams over a physical medium | DOCSIS, DSL, Ethernet physical layer, ISDN, RS-232 | |
举一个例子,对于zigbee网络来说,IEEE 802.15.4协议是白皮书,而IEEE 802.15.4协议只约定了物理层,数据链路层格式和需要满足的条件,上三层(网络层,ASP层,AF应用层)主要负责应用的开发,上三层协议由zigbee联盟规定的。不同的厂商如德州仪器,飞思卡尔,ATMEL等根据IEEE和zigbee的协议规定,然后结合自己的芯片实现和改进zigbee网络,提供协议栈给用户做应用。
为什么网络协议栈要分层:
- 软件设计分割模块,降低耦合度
- 合理功能划分,可以以任一层为基础做开发
两个相邻的协议层之间的关系:
- 上层使用下层提供的接口,使用下层的服务,获取下层确认
- 下层产生的事件回调交由上层处理
基于RS232的一个简单的区分数据包的协议,详见例子1。
#TODO
#TODO
#TODO