1. 网络基础

本章从几个常见的网络概念开始,主要介绍互联网HTTP协议和Sockets编程。
有知识断层请搜索相应的文章参考。

1.1. 计算机网络发展简史

1.1.1. 计算机网络发展的四个阶段

  • 50-60年代: 面向终端的计算机网络

    • 一个主机带几个终端,终端可以登录主机进行操作,主机为多用户操作系统

    • 本质上是单机系统,不过让多人同时使用

  • 60年代中期:多主机互联

    • 提出分组交换技术

    • 提出TCP/IP协议雏形

  • 70年代末-80年代中:面向标准化的计算机网络

    • 标准化是开放扩展的基础

    • 统一的协议是表标准化的成果之一

  • 90年代开始 : 全球互联的计算机网络

1.1.2. 因特网的发展简史

  • Internet的起源是阿帕网(ARPAnet),

    • 有四个节点组成

    • 时间是1969年10月29日22点30分

  • 国家科学基金网 NSFNET

    • 形成了三级网络

      • 主干网

      • 地区网

      • 校园网

    • 此结构类似国道省道乡级公路的概念

    • 此阶段内诞生了浏览器,万维网的概念

    • 相应的web技术开始发展

  • 1983年开始

    • NSFNET开始逐渐被商用ISP代替

    • 因特网逐渐形成了多级网络,覆盖全球的超复杂大型网络

1.2. 网络基本概念

  • 协议:
    网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。通俗的讲 就是一份计算机和别的网络设备签署的合同,规定了一些如何找到对方, 如何交换信息之类的条款。

  • IP地址:

    • 全球设备都希望加入到互联网的汪洋大海中,在茫茫机海中,如何正确的标识自己的身份 或者如何让另一个机器找到另一个自己想到交流的机器, 就需要给每台机器分配一个统一的且唯一的编码,类似与计算机的身份证号码

    • 全称互联网协议地址, 意思是分配给用户上网使用的网际协议(英语:InternetProtocol,IP)的设备的数字标签 ,分为IPv4和IPv6两个版本

      • IPv4

        • 即IP协议的第4号版本

        • 形如231.78.93.167,由四个0-255之间的数字用英文点号隔开

        • 数量少,最多最多最多有256的四次方个地址,实际使用中因为需要分类使用,不可能全部使用

        • 随着接入网络设备的数量急剧增加,明显不够用呀

      • IPv6

        • 即IP协议的第6号版本

        • 形如2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A

        • 可以预见的未来,我们的设备随便用可劲儿造也够用

  • 超文本(HypterText):
    包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。 这些超文本文件彼此链接,形成网状(Web), 因此又被称为网页(Web Page)。这些链接使用URL表示。 最常见的超文本格式是超文本标记语言HTML。
    说人话就是比普通文本更复杂更强悍的一种牛逼的文本。

  • URL(UniformResourceLocator, 统一资源定位符):

    • 用来唯一地标识万维网中的某一个文档

    • 如果把IP地址理解成某一个家庭的门牌号,则URL就是这个家庭的某一件 家具的地址,比如冰箱,通常我需要找到这个家庭的冰箱的话我需要先知道这家的 地址,比如我家的冰箱的地址是”北京市石景山区模式口南里社区18号楼3单元306室厨房进门左手边”, 这个精确地址的前半部分其实是我家的地址,后半部分主要是我家具体的某个地方。

    • URL由协议、主机和端口(默认为80)以及文件名三部分构成

      • 主机地址,即IP地址,负责找到互联网上的某一台电脑

      • 端口号,负责指明你需要跟电脑上的哪一个软件通信, 网页访问默认端口80,可省略

      • 文件名负责告诉主机,你想找哪个文件 URL组成部分示例

  • 协议族:
    互联网的协议众多,为了方便管理,我们把相关或者相似的协议归入到一个族中,这个族就叫协议族。

  • 七层协议:
    为了更好的对互联网协议进行管理和操作,我们想根据不同的内容和功能把整个互联网协议分成了七层, 即我们常说的七层协议,每层协议专注于本层的内容和功能, 这样形成的网络逻辑结不仅结构清晰而且方便灵活。

    在计算机网络的传输过程中,需要一层一层的传输,如果是从上往下传输,则需要下层处理完毕后把处理结果输入 上层才可以,可以用Python代码中的函数表示:

          data1 = "需要处理的最最底层的信号"
          data2 = func_class1(data1) #func_class1就是第一层处理函数,或者功能模块
          data3 = func_class2(data2) #func_class2就是第二层处理函数,或者功能模块
          data4 = func_class3(data3) #func_class3就是第三层处理函数,或者功能模块
          data5 = func_class4(data4) #func_class4就是第四层处理函数,或者功能模块
          ... ...
          data8 = "我们需要的能直接理解的明文信息,图片,音频视频等"
    

    下图展示的是,刘大拿发一条信息给王晓静,信息是“王晓静,俺想你 ”, 从发送方来讲,信息是从顶层向下传输,最终通过网线传输的是电信号, 接收端王晓静从底层开始,把接受的电信号一层一层转换到最上层,变成了 对方发送的信息。

URL组成部分示例

通常人们所说的七层结构包括:
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层   

七层协议只是理论模型,实际使用中,使用的是四层模型,这两个一个理论上标准,一个是事实标准:

四层模型是:      
- 应用层
- 传输层
- 网络层
- 数据链路层         

每一层协议都不是简单的单个协议组成,是由很多不同的协议共同构成了一个协议层。 常见的 七层协议和四层协议的对应以及相应的主要协议由图所示:

四层协议层,七层协议层和对应的主要协议