技术往事:改变世界的TCP/IP协议(珍贵多图、手机慎点)
1、前言
作为应用层开发人员,接触最多的网络协议通常都是传输层的TCP(与之同处一层的另一个重要协议是UDP协议),但对于IP协议,对于应用程序员来说更多的印象还是IP地址这个东西,再往深一点也就很难说的清楚。
本文将简要回故TCP/IP协议的过去、简单介绍TCP/IP协议族的关系,并与大家一起直观地分享由TCP/IP协议族所构建的虚拟网络与真实世界的“连接”情况。
2、TCP/IP协议简介
互联网协议族(英语:Internet Protocol Suite,缩写为IPS),是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP协议。因为这个协议家族的两个核心协议,包括TCP(传输控制协议)和IP(网际协议),为这个家族中最早通过的标准。
对于应用层开发人员,接触最多的网络协议通常都是传输层的TCP,为什么这么说,因为再往上的应用层协议,如:HTTP、HTTPS、POP3、SMTP、RPC、FTP、TELNET等等都是基于TCP传输层协议。但对于IP协议,对于应用程序员来说更多的印象还是IP地址这个东西,实际上IP协议是位于TCP协议之下的网络层,对于应用层程序员来说很难直接接触。
下面这张图,直接的反映了TCP/IP协议族的关系情况(高清下载点此进入):
3、TCP/IP协议之父
维基百科对于罗伯特·卡恩的介绍:
常称鲍勃·卡恩(Bob Kahn),生于美国纽约州纽约市布鲁克林区,发明了TCP协议,并与文特·瑟夫一起发明了IP协议;这两个协议成为互联网存在基石。
维基百科对于文顿·瑟夫的介绍:
文顿·格雷·瑟夫(英语:Vinton Gray Cerf,1943年6月23日-),昵称为文特·瑟夫(Vint Cerf ),生于美国康涅狄格州纽黑文,计算机科学家,因与罗伯特·卡恩设计了TCP/IP协议和互联网基础架构而被共同称为“互联网之父”。
文顿·瑟夫的履历:
- 生于1943年,童年时酷爱算术和科学,1965年在斯坦福大学获得了数学学士学位。
- 曾就职于IBM公司,1967年,考取了美国加州大学研究生院,取得计算机科学博士学位。
- 1972年-1976年,任教斯坦福大学,其间与罗伯特·卡恩一道领导TCP/IP协议的研发小组。
- 1997年12月,获得美国国家技术勋章 。
- 现任ICANN(互联网名字和号码分配机构)主席,兼任美国MCI公司技术战略高级副总裁。
布什总统为罗伯特·卡恩(中者)和文特·瑟夫(左者)颁发勋章:
1997年12月,布什总统为表彰罗伯特·卡恩和文特·瑟夫为互联网的建立和发展所做的贡献而给他俩都颁发的美国国家技术勋章。
罗伯特·卡恩(左者)与文特·瑟夫(右者)一起接受访谈:
4、见证互联网诞生
1969年8月30日,由BBN公司制造的第一台“接口信息处理机”IMP1,在预定日期前2天运抵UCLA。美国加州大学洛杉矶分校(UCLA)计算机系教授、著名的网络先驱人物克兰罗克带着40多名工程技术人员和研究生进行安装和调试。10月初,第二台IMP2运到阿帕网试验的第二节点斯坦福研究院(SRI)。
经过数百人一年多时间的紧张研究,阿帕网远程联网试验即将正式实施。
不久后,1969年11月,第三台IMP3抵达阿帕网第三节点——加州大学圣巴巴拉分校(UCSB);1969年12月,最后一台供试验的IMP4在阿帕网第四节点——犹他大学(Utah)安装成功,基本实现了罗伯茨规划的设计蓝图。于是,具有4个节点阿帕网(ARPANet)正式启用,人类社会从此跨进了网络时代。
BBN程序员团队合影:
见证首次互联网连接实验的工作日志:
当时IMP1与主机Sigma-7的连接现场:
5、TCP/IP让网络变成真正的“互联网”
1早期的网络并不实用
把两台计算机连在一起,只是迈出了建立互联网的一小步。人们很快发现,如果要把更多的不同型号的计算机,通过不同规格的网络连接在一起,还要让它们能共享内容,就非得发明一套更先进的技术不可。
假如看到互联网发明之初的那股子混乱劲儿,熟练操作着智能手机、利用无线信号进行视频对话的现代人可能会觉得难以置信。阿帕网问世之后,美国军方很快采纳了这一技术,但是,接入网络的电脑越来越多,造成发送信息的计算机很难在庞杂的网络中定位目标计算机。并且,最初的网络缺少纠错功能,数据在传输过程中一旦出现错误,网络就可能停止运行。出错电脑增多,使得网络运行效率大打折扣。
2TCP/IP协议诞生
如今大名鼎鼎的两位科学家、TCP/IP协议的发明者——罗伯特·卡恩和文顿·瑟夫就是在这时开始了他们的重要工作。他们恐怕也是这一群拥有“互联网之父”头衔的科学家中知名度最高的。他们都获得过“计算机科学界的诺贝尔奖”——图灵奖,瑟夫还曾任谷歌公司的全球副总裁和首席互联网专家。
两位科学家首先着眼于给每台电脑都分配一个唯一的确定的地址,就像住宅的门牌号一样,有了它快递员才能把包裹准确投递到位——这就是IP。而TCP则负责监督传输过程,一出现问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。这套思想直接导致了一种新设备——路由器的出现。
在1973年问世并被持续不断改进的TCP/IP协议至今仍然是全球互联网得以稳定运作的保证。通过这项技术,两位科学家使信息传输的可靠性完全由主机设备保障,而与连接这些主机的网络硬件的材质与形态无关。人们评价说,TCP/IP技术将最终可以运行在“两个罐子和一根弦”上,甚至可以用信鸽来代替网络。
1974年,人们亲眼见证了TCP/IP协议的成功。在这场实验中,科学家将数据包在卫星网络和陆地电缆之间反复传输,贯穿欧洲和美国的电脑系统,全程9.4万公里,没有丢失一个数据位。同年,美国政府无条件公布了TCP/IP协议的核心技术,世界范围内的互联网浪潮随之兴起。
3假设:如果将TCP/IP申请专利,世界首富还会是盖茨吗?
“全世界已经有超过10亿人在使用互联网。” 文顿·瑟夫说,“坦率说,三十多年前研究TCP/IP的时候,我们没有想到这项技术会得到如此广泛的运用。”
TCP/IP协议发明人文顿·瑟夫:
“申请专利从实际的角度是行不通的,如果新技术不是无偿和免费的话,人们就会远离我们而去。” 文特·瑟夫坚持将今天互联网成功的原因之一归结于他和罗伯特·卡恩没有申请专利,把TCP/IP视为私有财产。
1973年,文特·瑟夫和罗伯特·卡恩在设计互联网的时候,做出一项重要决定,一定要让电脑和电脑之间的沟通敞开和透明;1975年,开始布设互联网的时候,两人一致决定要把这个礼物贡献给人们,让大家自由的分享。
6、如今的互联网
如今,TCP/IP协议让互联网越来越远,毫不夸张的说,没有这张“网”的世界将不能成为21世纪。“网”一直处于虑拟世界,看不见、摸不着,连接世界的互联网你有没有想过到底是什么样子的?一起来看看。
看起来是下面这个样子的(由Opte工程组绘制的互联网地图),原图及说明请点此查看。
12003年的“互联网”
22010年的“互联网”
32015年的“互联网”
4以上图是根据什么绘制出来的?
是基于真实的世界互联网真实路由节点绘制出来的,具体流程如下图所示:
7、通过TCP/IP是如何缩短地球上人与人的距离?
答案是通过各国铺设在海地的通讯光缆实现的。下面一起来看看截至2015年国与国之间通过海底光缆的“连接”情况。
2015年全球互联网跨国通信光缆的连接情况图:(原图点此进入)
2015年全球互联网跨国通信光缆的连接情况图(中国部分放大显示):(原图点此进入)
补充:这张图里可以看到,中国的跨国海底光缆并不多,连接国外的网站延迟这么大也就是情理之中的事了。
一张更吊炸天的全球互联网跨国通信光缆的连接情况图(2015年版):(原图点此进入)
好吧,我要是麻花腾,也做一张类似的QQ、微信的连接情况,估计会有拿破仑征服欧洲那样的成就感。。。
8、TCP/IP重新定义了国与国、人与人之间的距离单位
对于互联网世界来说,网络之间的距离可以用“网络延迟”来衡量(单位通常是毫秒),从真实世界的角度讲,正是TCP/IP协议的威力,重新定义了国与国、人与人之间的距离单位,让“连接”变的没有距离感。
你可能会好奇,我们与世界各主要国家的通信延迟到底是多少呢?我们一起来看看下面几个图。
从香港发起的通信,与世界主要节点的延迟示意图:
说明:香港到美国的延迟大约是150ms、到英国超过200ms。
从英国发起的通信,与世界主要节点的延迟示意图:
说明:从英国到中国的延迟大约是200ms。
从美国发起的通信,与世界主要节点的延迟示意图:
说明:从美国到中国的延迟大约是120ms、到日本约80ms(果然是盟友)。
附录:更多网络编程精华资料
《TCP/IP详解 - 第11章·UDP:用户数据报协议》
《TCP/IP详解 - 第17章·TCP:传输控制协议》
《TCP/IP详解 - 第18章·TCP连接的建立与终止》
《TCP/IP详解 - 第21章·TCP的超时与重传》
《技术往事:改变世界的TCP/IP协议(珍贵多图、手机慎点)》
《通俗易懂-深入理解TCP协议(上):理论基础》
《通俗易懂-深入理解TCP协议(下):RTT、滑动窗口、拥塞处理》
《理论经典:TCP协议的3次握手与4次挥手过程详解》
《理论联系实际:Wireshark抓包分析TCP 3次握手、4次挥手过程》
《计算机网络通讯协议关系图(中文珍藏版)》
《UDP中一个包的大小最大能多大?》
《P2P技术详解(一):NAT详解——详细原理、P2P简介》
《P2P技术详解(二):P2P中的NAT穿越(打洞)方案详解(基本原理篇)》
《P2P技术详解(三):P2P中的NAT穿越(打洞)方案详解(进阶分析篇)》
《P2P技术详解(四):P2P技术之STUN、TURN、ICE详解》
《通俗易懂:快速理解P2P技术中的NAT穿透原理》
《高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少》
《高性能网络编程(二):上一个10年,著名的C10K并发连接问题》
《高性能网络编程(三):下一个10年,是时候考虑C10M并发问题了》
《高性能网络编程(四):从C10K到C10M高性能网络应用的理论探索》
《高性能网络编程(五):一文读懂高性能网络编程中的I/O模型》
《高性能网络编程(六):一文读懂高性能网络编程中的线程模型》
《Java的BIO和NIO很难懂?用代码实践给你看,再不懂我转行!》
《不为人知的网络编程(一):浅析TCP协议中的疑难杂症(上篇)》
《不为人知的网络编程(二):浅析TCP协议中的疑难杂症(下篇)》
《不为人知的网络编程(三):关闭TCP连接时为什么会TIME_WAIT、CLOSE_WAIT》
《不为人知的网络编程(四):深入研究分析TCP的异常关闭》
《不为人知的网络编程(五):UDP的连接性和负载均衡》
《不为人知的网络编程(六):深入地理解UDP协议并用好它》
《不为人知的网络编程(七):如何让不可靠的UDP变的可靠?》
《不为人知的网络编程(八):从数据传输层深度解密HTTP》
《不为人知的网络编程(九):理论联系实际,全方位深入理解DNS》
《网络编程懒人入门(一):快速理解网络通信协议(上篇)》
《网络编程懒人入门(二):快速理解网络通信协议(下篇)》
《网络编程懒人入门(三):快速理解TCP协议一篇就够》
《网络编程懒人入门(四):快速理解TCP和UDP的差异》
《网络编程懒人入门(五):快速理解为什么说UDP有时比TCP更有优势》
《网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门》
《网络编程懒人入门(七):深入浅出,全面理解HTTP协议》
《网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接》
《网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?》
《网络编程懒人入门(十):一泡尿的时间,快速读懂QUIC协议》
《技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解》
《让互联网更快:新一代QUIC协议在腾讯的技术实践分享》
《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》
《聊聊iOS中网络编程长连接的那些事》
《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》
《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结》
《IPv6技术详解:基本概念、应用现状、技术实践(上篇)》
《IPv6技术详解:基本概念、应用现状、技术实践(下篇)》
《从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路》
《脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手》
《脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?》
《脑残式网络编程入门(三):HTTP协议必知必会的一些知识》
《脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)》
《脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?》
《脑残式网络编程入门(六):什么是公网IP和内网IP?NAT转换又是什么鬼?》
《脑残式网络编程入门(七):面视必备,史上最通俗计算机网络分层详解》
《脑残式网络编程入门(八):你真的了解127.0.0.1和0.0.0.0的区别?》
《以网游服务端的网络接入层设计为例,理解实时通信的技术挑战》
《迈向高阶:优秀Android程序员必知必会的网络基础》
《全面了解移动端DNS域名劫持等杂症:技术原理、问题根源、解决方案等》
《美图App的移动端DNS优化实践:HTTPS请求耗时减小近半》
《Android程序员必知必会的网络通信传输层协议——UDP和TCP》
《IM开发者的零基础通信技术入门(一):通信交换技术的百年发展史(上)》
《IM开发者的零基础通信技术入门(二):通信交换技术的百年发展史(下)》
《IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁》
《IM开发者的零基础通信技术入门(四):手机的演进,史上最全移动终端发展史》
《IM开发者的零基础通信技术入门(五):1G到5G,30年移动通信技术演进史》
《IM开发者的零基础通信技术入门(六):移动终端的接头人——“基站”技术》
《IM开发者的零基础通信技术入门(七):移动终端的千里马——“电磁波”》
《IM开发者的零基础通信技术入门(八):零基础,史上最强“天线”原理扫盲》
《IM开发者的零基础通信技术入门(九):无线通信网络的中枢——“核心网”》
《IM开发者的零基础通信技术入门(十):零基础,史上最强5G技术扫盲》
《IM开发者的零基础通信技术入门(十一):为什么WiFi信号差?一文即懂!》
《IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!》
《IM开发者的零基础通信技术入门(十三):为什么手机信号差?一文即懂!》
《IM开发者的零基础通信技术入门(十四):高铁上无线上网有多难?一文即懂!》
《IM开发者的零基础通信技术入门(十五):理解定位技术,一篇就够》
《百度APP移动端网络深度优化实践分享(一):DNS优化篇》
《百度APP移动端网络深度优化实践分享(二):网络连接优化篇》
《百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇》
《技术大牛陈硕的分享:由浅入深,网络编程学习经验干货总结》
《可能会搞砸你的面试:你知道一个TCP连接上能发起多少个HTTP请求吗?》
《知乎技术分享:知乎千万级并发的高性能长连接网关技术实践》
http://www.52im.net/thread-520-1-1.html
技术往事:改变世界的TCP/IP协议(珍贵多图、手机慎点)相关推荐
- 最通俗易懂——TCP/IP协议,让你明明白白!
TCP/IP协议! 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议.实际生活当中有时也确实就是指这两种协议.然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协 ...
- linux中tcp/ip协议实现及嵌入式应用 下载,LINU中TCPIP协议实现及嵌入式应用
好文网为大家准备了关于LINU中TCPIP协议实现及嵌入式应用范文,好文网里面收集了五十多篇关于好LINU中TCPIP协议实现及嵌入式应用好文,希望可以帮助大家.更多关于LINU中TCPIP协议实现及 ...
- 大杂烩·OSI和TCP/IP协议与ZigBee技术·一
1.ZigBee技术 ZigBee是基于IEEE802.15.4标准的低功耗局域网协议.根据国际标准规定,ZigBee技术是一种短距离.低功耗的无线通信技术.这一名称(又称紫蜂协议)来源 ...
- TCP/IP协议 之IPV4与IPV6的区别;5G无线通信与4G的典型区别有哪些?
IPV4 IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议.1981年Jon Postel 在RFC791中定义了IP, ...
- TCP/IP协议族(第四版)已出,不愧是世界计算机优秀畅销精选书籍
序言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...
- HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)
TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...
- TCP/IP 协议理解
TCP/IP 协议(Transmission Control Protocol / internet Protocol),因特网互联协议,又名网络通讯协议.通俗而言:TCP负责发现传输的问题,一有问题 ...
- 网络协议OSI、TCP/IP协议、Socket套接字和第三方AsyncSock的使用等解析
一.网络协议定义 1.OSI参考模型:全称(Open System Interconnection), 开放式系统互联参考模型.是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为七层,只要目的是为 ...
- OSI参考模型与TCP/IP协议的比较研究
OSI参考模型与TCP/IP协议的比较研究 OSI参考模型与TCP/IP协议的比较研究 摘要:OSI参考模型与TCP/IP协议是网际互联中的两个重要协议体系.本文从首先分别介绍了两个协议体系的产生 ...
最新文章
- 在Centos中安装aria2c
- 移动端调取摄像头上面如何给出框_飞桨实战笔记:自编写模型如何在服务器和移动端部署...
- java占位符打印_java简单日志打印规范小记
- C++的类和C里面的struct有什么区别
- HTML鼠标悬停显示隐藏div,javascript – 在鼠标悬停时显示/隐藏DIV
- tps是什么意思_系统了解精益生产系统TPS精益思想丛书介绍
- 语音识别的技术原理是什么?
- MySQL 锁(行锁、表锁、页锁、乐观锁、悲观锁等)
- java三种经典的比对方法_几种任务调度的 Java 实现方法与比较
- 关于光纤宽带技术,看这一篇就够啦!
- 微信小程序 选项卡 swiper默认高度150px(让高度实现自适应)解决方法
- 重磅!超详细的 JS 数组方法整理出来了
- levelup游戏资料库项目开发备忘录(10.26)
- 给自己一个拼搏的理由
- 扫地机器人系统,主要划分为哪几个模块?
- three.js 构建简单的房间
- NVIDIA Jetson TK1 rosrun rviz segmentation fault的解决方法
- 把一个内含7个元素的数组中的第3~第5个元素拷贝到内含3个元素的数组中
- 欧拉角和四元数之间是如何转换的?
- 关于测试的一篇论文, 基于web端selenium的自动化测试设计与实现(有需要的联系我 此论文内容缺失,不要直接用 一经发现,后果自负)
热门文章
- SIM800_基本指令调试笔记
- 微软应用商店_微软应用商店将开发者分成比例提高至95%
- android、ios配置scheme之后,react-native如何获取url,并且自动跳转到首页
- 布尔运算,位运算,逻辑运算
- 咻商教育分析,电商法如何影响进口跨境电商?
- Augustus部署
- 2018年数学建模国赛A题题目、解题思路、matlab代码(四)
- 四、51单片机控制独立按键
- 【解决】小程序|微信公众号授权给第三方平台时报“没有绑定公众号”
- 【电子画册在线制作】云展网教程 | 设置工具栏的打印功能