TCP/IP 网络分层模型
TCP/IP的设计通过把复杂的网络通信划分出多个层次,每个层次都有不同的职责,层次内只专心做自己的事情。
层次顺序“由下至上”
- 链路层(数据链路层, 网络接口层)Link Layer
- 连接网络的硬件
- 控制操作系统、硬件设备驱动、NIC(Network Interface Card 网卡)、光纤等物理可见部分
- 在底层网络上发送原始数据包
- 使用MAC地址标记网络上的设备
- 连接网络的硬件
- 网络层(网络互连层)Internet Layer
- 使用IP协议,能过IP地址取代MAC地址
- 处理网络上流动的数据包(网络传输的最小数据单位)
- 规定通过怎样的传输路线传送数据包给对方
- 传输层 Transport Layer
- 网络连接中两台设备的数据传输,把数据在IP地址标记的两点之间传输
- TCP Transmission Control Protocol 传输控制协议 (打电话)
- 特点:面向连接(收发数据前,必须建立可靠的连接)
- 建立连接基础:三次握手
- 应用场景:数据必须准确无误地收发
- HTTP请求、FTP文件传输、邮件收发
- 优点:稳定、重传机制、拥塞控制机制、断开连接
- 缺点:速度慢、效率低、战胜资源、容易被攻击(三次握手 -> DOS、DDOS攻击)
- TCP/IP协议组:提供点对点的连接机制,制定了数据封装、定址、传输、路由、数据接收的标准
- UDP User Data Protocol 用户数据报协议 (喇叭叫人)
- 特点:面向无连接(不可靠的协议,无㽵主传输机制)
- 无连接信息发送机制
- 应用场景:无需确保通讯质量且要求速度快、无需确保信息的完整
- 消息收发、语音通话、直播
- 优点:案例、快速、漏洞少(UDP flood攻击)
- 缺点:不可靠、不稳定、容易丢包
- 只要目的源地址、源端口号、地址、端口号确定,则可以直接发送信息报文,但不能保证一定能收到或收到完整的数据
- TCP Transmission Control Protocol 传输控制协议 (打电话)
- 网络连接中两台设备的数据传输,把数据在IP地址标记的两点之间传输
- 应用层 Application Layer
在TCP/IP发明出来的70年代,除了它还有很多网络协议在整个网络世界。对于这种“野路子”太多的情况,国际标准组织想要个“大一统”,设计出一个新的网络分层模型。用这个新框架统一既存的各种网络协议。
- 物理层,网络的物理形式
- 电缆、光纤、网卡、集线器
- 数据链路层,相当于 TCP/IP 的链接层
- 网络层,相当于 TCP/IP 的网络层
- 传输层,相当于 TCP/IP 的传输层
- 会话层,维护网络中的连接状态
- 保持会话和同步
- 表示层,把数据转换为合适、可理解的语法和语义
- 应用层,面向具体的应用传输数据
两个分层之间映射关系
TCP/IP协议栈工作方式
HTTP 协议的传输过程就是这样通过协议栈逐层向下,每一层都添加本层的专有数据,层层打包,然后通过下层发送出去。
接收数据则是相反的操作,从下往上穿过协议栈,逐层拆包,每层去掉本层的专有头,上层就会拿到自己的数据。
但下层的传输过程对于上层是完全“透明”的,上层也不需要关心下层的具体实现细节,所以就 HTTP 层次来看,它不管下层是不是 TCP/IP 协议,看到的只是一个可靠的传输链路,只要把数据加上自己的头,对方就能原样收到。
总结
- TCP/IP 分为四层,核心是第二层的 IP 和第三层的 TCP,HTTP 在第四层
- OSI 分为七层,基本对应 TCP/IP,TCP 在第四层,HTTP 在第七层
- OSI 可以丢失一、五、六层来映射到 TCP/IP。
- 日常交流常用使用 OSI 模型、四层、七层术语
- HTTP 利用 TCP/IP 协议栈逐层打包再拆包,实现数据传输。但下面的细节并不可见。