参考《图解TCP/IP》一书
1、网络基础知识
1.1、发展阶段
-
批处理(Batch Processing)
-
分时系统(TSS, Time Sharing System)
-
计算机间通信
-
计算机网络:分组交换技术
-
互联网普及:瘦身、多供应商
-
以互联网为中心
-
安全连接:TCP/IP
1.2、协议
协议:计算机之间通过网络实现通信,事先达成的一种“约定”。
-
异构的计算机,只要遵循相同的协议就能够实现通信。
-
协议有很多种,每种协议都明确界定了它的行为规范。
分组交换协议
分组交换:将大数据分割为一个个包(Packet)进行传输。
-
报文首部:源主机地址、目标主机地址、分组序号
-
协议会规定报文首部的内容和处理方式,互相通信的计算机根据协议来构造报文首部、读取首部内容。
协议的标准化
标准化:使不同厂商生产的异构产品之间具有兼容性、便于使用的规范化过程。
- ISO 制定了国际标准 OSI,对通信系统进行了标准化。
- OSI 所定义的协议没有得到普及,但 OSI 参考模型具有指导意义。
- TCP/IP 是由 IETF 建议并推进的协议。
- 协议的标准化,使所有遵循标准协议的异构设备能够实现通信。
协议分层
-
每个分层都接收下一层提供的服务,并为上一层提供服务。
-
接口:上下层交互所遵循的约定。
-
协议:同一层交互所遵循的约定。
1.3、OSI参考模型
概念区分
- OSI(参考模型):7 个分层。
- OSI 协议:为了让异构的计算机能相互通信的网络体系结构
- 以 OSI 模型为基础;
- 定义每层协议和层间接口
分层
OSI 参考模型将协议分为 7 层,比较理想化。
-
每个分层独立使用,某一层变化不影响其它层;
-
细分通信功能,界定每层的责任,易于实现每个分层的协议;
-
过分模块化、处理沉重、每个模块需要实现相似的逻辑处理。
实例
7 层通信实例:假设主机 A 要给主机 B 发送一封电子邮件。
-
发送方
- 从上往下传输数据;
- 每层接收上一层的数据,并加上当前分层的协议所必需的首部信息,转发给下一层;(上层数据 + 本层首部)
-
接收方
- 与发送方相反,从下往上传输数据;
- 每层接收下一层的数据,将首部与数据分离,再转发给上一层,最终将数据恢复为原状。
1.4、传输方式的分类
面向连接 & 无连接
根据具体的通信内容来决定采用的传输方式。
- 面向连接:在通信传输前后,需要在收发主机之间专门建立和断开连接。(如 TCP)
-
无连接:不需要建立和断开连接。(如 UDP)
- 发送端可以随时发送数据。
- 接收端对于何时会收到哪里的数据是未知的,需要经常确认。
- 即使接收端不存在或无法接收数据,发送端也可以发送数据。
电路交换 & 分组交换
电路交换
- 交换机负责数据的中转处理。
- 源主机需要通过交换机与目标主机建立连接线路。
- 在连接建立期间,始终占用端到端资源。(独占)
- 其它计算机需等待该计算机处理结束后,才有机会使用该电路。
分组交换
- 分组交换机(路由器)负责连接通信线路。
- 源主机将数据分成多个数据包(packet),分别发送给路由器,路由器接收分组数据后缓存到一个缓冲区,再转发给下一个路由器或目标主机。(分组交换、存储转发)
- 无需占用端到端资源,多台主机共享通信线路。
- 可能出现网络拥塞、分组丢失。
不同接收端数量
-
单播(Unicast):1对1(早期固定电话)。
-
广播(Broadcast):广播域中的所有其它主机(电视播放)
-
多播(Multicast):特定组内的主机(电视会议)
-
任播(Anycast):特定组内主机中的一台(DNS 根域名解析器)
1.5、地址
通信传输中,发送端和接收端都可以视为通信主体,由地址标识。
每一层的协议使用不同的地址。
- 唯一性:一个地址必须明确地标识一个主体对象。
- 层次性:地址多的情况下,高效寻址。
1.6、网络组成
- 网络核心(骨干)
- 网络边缘
- 接入网
2、TCP/IP 基础知识
TCP(Transmission Control Protocol)和IP(Internet Protocol)是互联网的众多通信协议中最为著名的。
2.1、背景历史
- 军事通信技术
- ARPARNET 诞生:分组交换技术
- TCP/IP 诞生:可靠传输
- UNIX 系统普及、互联网普及
- 商用互联网服务:ISP
2.2、TCP/IP 标准化
- TCP/IP 不仅指 TCP 和 IP 两种协议,而是利用 IP 进行通信时所必须使用到的协议群的统称。
- TCP/IP 也称网际协议族(Internet Protocol Suite)
2.3、TCP/IP 协议分层模型
-
OSI 参考模型:注重通信协议必要的功能。
-
TCP/IP:强调实现协议所需开发的程序。
分层
- 物理层:负责数据传输的硬件。
- 数据链路层:利用以太网的数据链路进行通信。
- 网络层:使用 IP 协议,基于 IP 地址转发分包数据。
- 传输层:进程间通信,基于端口号。
- 应用层:HTTP、HTML、SMTP、FTP、TELNET、SSH、SNMP等。
数据包首部
-
数据单位
- 通用:包(Packet)
- 数据链路层:帧(Frame)
- 网络层:数据报(datagram)
- 传输层:段(segment)
- 应用层:消息(message)
- 每个分层,都会对所发送的数据附加一个首部。
实例
TCP/IP 分层通信实例:假设主机 A 要给主机 B 发送一封电子邮件。
发送方(接收方与发送方相反)
- 应用层:编码处理,在发送邮件的时刻建立 TCP 连接。
-
传输层
- 可靠传输:建立连接、发送数据、断开连接
- TCP 首部:源端口号和目标端口号、序号、校验和。
-
网络层
- IP 首部:源 IP 地址和目标 IP 地址。
- 根据路由控制表将数据包发送给下一跳路由器或主机。
- 数据链路层
- 物理层
包流动时,依次被附加了应用层首部、TCP 首部、IP 包首部、以太网首部。包的最后还有以太网包尾。