跳到主要内容

计算机网络相关的知识是海量的,正确的方式是搭建好知识框架,需要的时候深入的了解某些具体的协议、算法、实现。

本文主要讲解框架,具体协议的算法和实现在各个章节里面进行详细讲解。

WHAT

计算机网络是用来干什么的?—— 用来完成两个计算机之间的通信。

HOW

以我们通过浏览器浏览新闻 http://baidu.com/a.html 为例:

  1. 浏览器:
    1. 先把确认域名对应的 baidu.com 对应的 IP地址
    2. 委托本机的操作系统的协议栈(TCP/IP)将消息发出去
  2. 本机的操作系统协议栈将消息传递给邻近的一个服务器。服务器可能包括:
    1. 路由器:找到一个可以到达目标IP地址机器的线路
    2. 交换机:将数据转发给临近的机器
  3. 服务器:百度服务器终于收到了消息,进行各种处理后将数据返回回去。链路基本是一样的

要展开讲,里面就有协议的概念。消息存在发送方和接收方,两个人通信要使用同一个规范发送和接收数据,这个就是协议。

协议 的一个重要特点就是分层:

  • 每个协议都处理自己边界范围之内的事情,只为上一层提供服务
  • 多个协议相互配合完成所有的工作

分层也有几种,当前使用最广的分层模型为:

作用常用协议举例:客户端举例:路由器举例:交换机举例:服务器
应用层网络应用程序以及它们的应用层协议存留的地方HTTP
DNS
浏览器通过调用操作系统协议栈发送/接收HTTP请求同客户端
传输层应用程序端点之间传输应用层的报文TCP UDP协议栈发送/接收TCP请求
网卡发送/接收
同客户端
网络层将数据报的网络层分组从当前主机移动到目标主机IP找到客户端和服务器之间的可行路径
链路层将帧从一个网络元素移动到邻近的网络元素将消息发送给下一个路径上的节点
物理层将帧中的每个bit从一个节点移动到下一个节点

协议汗牛充栋,最重要的几个协议,我们会着重展开。

WHY

为什么是这些协议呢?因为当时的人就是这样设计来满足当时的需求。

为什么协议要分层呢?分层是系统设计的重要思想,通过按职责分层,每层之间的分工合作可以减少改动范围、增加灵活性。