任何事物的创造发明都来源于需求和欲望
而科学技术的发展则推动实现了目标
百度百科:
https://baike.baidu.com/item/%E4%BA%92%E8%81%94%E7%BD%91%E5%8F%91%E5%B1%95%E5%8F%B2/4635625
"阿帕"(ARPA),是美国高级研究计划署(Advanced Research Project Agency)的简称。
阿帕网为美国国防部高级研究计划署开发的世界上第一个运营的封包交换网络
它是全球互联网的始祖。
从某种意义上,Internet经常被认为是美苏冷战的产物。
在美国,20世纪60年代是一个很特殊的时代。
60年代初,古巴核导弹危机发生,美国和原苏联之间的冷战状态随之升温,核毁灭的威胁成了人们日常生活的话题。
在美国对古巴封锁的同时,越南战争爆发,许多第三世界国家发生政治危机。
由于美国联邦经费的刺激和公众恐惧心理的影响,"实验室冷战"也开始了。
人们认为,能否保持科学技术上的领先地位,将决定战争的胜负。
而科学技术的进步依赖于电脑领域的发展。
到了60年代末,每一个主要的联邦基金研究中心,
包括纯商业性组织、大学,都有了由美国新兴电脑工业提供的最新技术装备的电脑设备。
电脑中心互联以共享数据的思想得到了迅速发展。
观点
美国国防部认为,
如果仅有一个集中的军事指挥中心,万一这个中心被原苏联的核武器摧毁,
全国的军事指挥将处于瘫痪状态,其后果将不堪设想,
因此有必要设计这样一个分散的指挥系统——
它由一个个分散的指挥点组成,当部分指挥点被摧毁后其它点仍能正常工作,而这些分散的点又能通过某种形式的通讯网取得联系。
以上来自于百度百科中阿帕网词条的释义
可以看得出来,任何东西都是需求和欲望产生的,计算机网络的发展也不例外
她不是为了给人类一个更好的生活,为了让你聊微信刷微博逛淘宝....而是为了战争!
1948年 香农 在 通信的数学理论中写道:
通信的基本问题是在一点精确地或者近似的复现在另一个点所选取的讯息,这些讯息往往都是有意义的
通信的本质是数据交换,只有实现了数据的交换,才能证明线路的连通性
电路交换(CS:circuit switching)是通信网中最早出现的一种交换方式,也是应用最普遍的一种交换方式,主要应用于电话通信网中,完成电话交换。
建立连接时产生时延,既实用模拟信号,又适用数字信号。
由于电路交换的特点,建立连接后,无论是否通话都将占用资源
后来出现了报文交换方式
报文交换以报文为数据交换的单位,报文携带有目标地址、源地址等信息,在交换结点采用存储转发的传输方式不需要为通信双方预先建立一条专用的通信线路
由于数据进入交换结点后要经历存储、转发这一过程,从而引起转发时延,只适用数字信号
报文长度没有限制,而每个中间结点都要完整地接收传来的整个报文,对缓冲有较大要求
再后来出现了分组交换
1961第一篇有关包交换(PS Packet switching)的论文。
1962 MIT的J.C.R. Licklider和W. Clark发表On-Line Man Computer Communication,(8月)
包交换就是分组交换
分组交换仍采用存储转发传输方式
但将一个长报文先分割为若干个较短的分组,然后把这些分组(携带源、目的地址和编号信息)逐个地发送出去
分组交换是现代计算机网络通信的理论基础
随后包交换从理论应用到实践
1965年 ARPA资助进行分时计算机系统的合作网络研究。
随后ARPANET被提上了日程
1968年 开始着手建设ARPANET
它利用了无限分组交换网与卫星通信网。
通过专门的接口信号处理机(IMP)和专门的通信线路,相互连接把美国的几个军事及研究用电脑主机联接起来。
起初是为了便于这些学校之间互相共享资源而开发的。
ARPANET采用了包交换机制。
1968年 Bolt Beranek and Newman、Inc.公司(BBN)获得建立接口消息处理机(IMP)中的包交换部分的合同。
IMP是一种专用于通信的计算机,有些IMP之间直接相连,有些IMP之间必须经过其他的IMP间接相连。当IMP收到一个报文后要根据报文的目标地址决定把该报文提交给与它相连的主机还是转发到下一个IMP,这种通信方式叫做存储-转发通信。
1969年 使用BBN公司开发的接口消息处理器IMP建立节点(配有12K存储器的Honeywell DDP-516小型计算机);
AT&T公司提供速率为50kpbs的通信线路。
最初ARPAnet只联结4台主机
从军事要求上是置于美国国防部高级机密的保护之下,从技术上它还不具备向外推广的条件。
在阿帕网(ARPA)产生运作之初,通过接口信号处理机实现互联的电脑并不多,大部分电脑相互之间不兼容。
在一台电脑上完成的工作,很难拿到另一台电脑上去用,想让硬件和软件都不一样的电脑联网,也有很多困难。
当时美国的状况是
陆军用的电脑是DEC系列产品,海军用的电脑是Honeywell中标机器,空军用的是IBM公司中标的电脑
每一个军种的电脑在各自的系里都运行良好,但却有一个大弊病:不能共享资源。
69年9月阿帕网诞生、运行后,才发现各个IMP连接的时候,需要考虑用各种电脑都认可的信号来打开通信管道,数据通过后还要关闭通道。
否则这些IMP不会知道什么时候应该接收信号,什么时候该结束,这就是我们所说的通信“协议”的概念。
1970年12月制定出来了最初的通信协议由卡恩开发、瑟夫参与的“网络控制协议”(NCP)
可以看得出来,计算机网络中的通信协议,自此时开始被摆上台面
“包切换”理论为网络之间的联接方式提供了理论基础。
卡恩 Bob Kahn https://en.wikipedia.org/wiki/Bob_Kahn
在自己研究的基础上,认识到只有深入理解各种操作系统的细节才能建立一种对各种操作系统普适的协议
73年卡恩请 瑟夫Vint Cerf https://en.wikipedia.org/wiki/Vint_Cerf
一起考虑这个协议的各个细节,
他们这次合作的结果产生了在开放系统下的所有网民和网管人员都在使用的“传输控制协议”
(TCP,Transmission-Control Protocol)和“因特网协议”(IP,Internet Protocol)即TCP/IP协议。
TCP/IP参考模型是首先由ARPANET所使用的网络体系结构。
这个体系结构在它的两个主要协议出现以后被称为TCP/IP参考模型(TCP/IP Reference Model)。
这一网络协议共分为四层:网络接口层、互联网层、传输层和应用层
TCP/IP不是一个协议,而是一个协议族的统称
对于程序员来说,经常说到的网络的发展
其实可以狭义的理解为TCP/IP协议族中各个层次里面各个协议的发展
以及通信中涉及到的各个重点概念 IP地址 端口号 域名系统 DNS等等
当然还有最重要的就是 应用编程接口 也即是操作系统提供给我们的可以进行网络编程的接口
继续狭隘一点的话,应用编程接口 就成了应用程序员唯一直接接触的东西了
现在说的话就是Socket,几乎所有的应用程序都是采用socket
随着操作系统的发展,1983年,TCP/IP被Unix 4.2BSD系统采用.
随着Unix的成功,TCP/IP逐步成为Unix机器的标准网络协议.
所谓的采用也就是用程序代码按照TCP/IP的逻辑实现了两个应用程序相互通信的功能
我们之前解释过操作系统的作用了
既然操作系统有了这个功能,自然会提供出来编程接口
这样应用程序员就不在需要去实现复杂的通信代码了
并不是每一项技术的出现,都是高屋建瓴,Socket也即是如此
TCP/IP很快被集成到Unix中之后,出现了许多成熟的TCP/IP应用程序接口(API)
这个API就是Socket 接口
Socket 起源于Unix WINDOWS下也有一套socket规范
Socket是在TCP/IP模型分层的应用层和传输层之间的一个编程接口
也可以理解为对于应用程序员中编写需要通信的程序来说
TCP/IP模型中应用层和传输层又多了一个Socket层
只是逻辑思维的抽象理解,不是真的存在的
把复杂的TCP/IP协议族隐藏在Socket接口后面,
对用户来说,这一组接口,就是整个TCP/IP协议族的实现
让Socket去组织数据,以符合指定的协议。
这不就是之前说过的抽象封装规范的概念嘛
再次明确下Socket到底是什么:
Socket本质是编程接口(API),对TCP/IP的封装,也可以说是一种通信约定或者方式
两台计算机想要通信需要IP地址,协议,端口号
IP地址是为了实现网络中不同计算机之间的通信给每台计算机设置的唯一的标识
目前计算机所使用的通信协议是TCP/IP协议栈
端口是为了实现计算机中不同程序间的通信,给同一个主机每个不同的应用程序设置的唯一标识
IP地址和端口组合在一起就构成了一个socket
网络通信本质是socket之间的通信
数据在两个socket之间通过IO传输
Socket之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
完整内容点击标题进入