# 网络基础 本章从几个常见的网络概念开始,主要介绍互联网HTTP协议和Sockets编程。 有知识断层请搜索相应的文章参考。 ## 计算机网络发展简史 ### 计算机网络发展的四个阶段 - 50-60年代: 面向终端的计算机网络 - 一个主机带几个终端,终端可以登录主机进行操作,主机为多用户操作系统 - 本质上是单机系统,不过让多人同时使用 - 60年代中期:多主机互联 - 提出分组交换技术 - 提出TCP/IP协议雏形 - 70年代末-80年代中:面向标准化的计算机网络 - 标准化是开放扩展的基础 - 统一的协议是表标准化的成果之一 - 90年代开始 : 全球互联的计算机网络 ### 因特网的发展简史 - Internet的起源是阿帕网(ARPAnet), - 有四个节点组成 - 时间是1969年10月29日22点30分 - 国家科学基金网 NSFNET - 形成了三级网络 - 主干网 - 地区网 - 校园网 - 此结构类似国道省道乡级公路的概念 - 此阶段内诞生了浏览器,万维网的概念 - 相应的web技术开始发展 - 1983年开始 - NSFNET开始逐渐被商用ISP代替 - 因特网逐渐形成了多级网络,覆盖全球的超复杂大型网络 ## 网络基本概念 - 协议: 网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。通俗的讲 就是一份计算机和别的网络设备签署的合同,规定了一些如何找到对方, 如何交换信息之类的条款。 - 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组成部分示例](./pic/01_01_002.jpg) - 协议族: 互联网的协议众多,为了方便管理,我们把相关或者相似的协议归入到一个族中,这个族就叫协议族。 - 七层协议: 为了更好的对互联网协议进行管理和操作,我们想根据不同的内容和功能把整个互联网协议分成了七层, 即我们常说的七层协议,每层协议专注于本层的内容和功能, 这样形成的网络逻辑结不仅结构清晰而且方便灵活。 在计算机网络的传输过程中,需要一层一层的传输,如果是从上往下传输,则需要下层处理完毕后把处理结果输入 上层才可以,可以用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组成部分示例](./pic/01_01_009.png) 通常人们所说的七层结构包括: - 应用层 - 表示层 - 会话层 - 传输层 - 网络层 - 数据链路层 - 物理层 七层协议只是理论模型,实际使用中,使用的是四层模型,这两个一个理论上标准,一个是事实标准: 四层模型是: - 应用层 - 传输层 - 网络层 - 数据链路层 每一层协议都不是简单的单个协议组成,是由很多不同的协议共同构成了一个协议层。 常见的 七层协议和四层协议的对应以及相应的主要协议由图所示: ![四层协议层,七层协议层和对应的主要协议](pic/01_01_001.png)