前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTP协议(一):概述

HTTP协议(一):概述

作者头像
roobtyan
发布2018-06-04 17:43:19
5430
发布2018-06-04 17:43:19
举报

背景介绍

但凡世界上牛逼的人物,都会有一个非常离奇的经历。比如说乞丐出身的皇帝朱元璋,出生时家中红光大作,映红了半边天;再比如说无良皇帝刘邦,简直不要太牛逼,说自己是老妈和一条白龙交合生出的自己,而老爹是目击证人(笑哭)。 而我,作为网络世界的扛把子,自然也不能在经历上矮人一头。 我,就是大名鼎鼎的HTTP,我的老爹是CERN(欧洲核子研究组织)的蒂姆 • 伯纳斯 - 李(Tim BernersLee)博士,而我被制造出来的直接原因就是为了方便世界各地的学者交流信息。 话说在我诞生的时候,天空中电闪雷鸣,狂风大作……,我一出生,就是身高百尺,手摘星辰。 不过你要是想知道我到底有多厉害,那我就得介绍一下我们这个世界的背景以及实力等级的划分了。 我所在的世界,叫做网络星球。我的家族,是这个世界上数一数二的家族:TCP/IP协议族。以后你就会了解到TCP/IP协议族到底是多么无敌的存在。 我的家族是上古修炼家族,传承源远流长。共有四大分部:应用层,传输层,网络层,数据链路层,而我,就是应用层中最年轻的长老,也是我的家族中数一数二的存在。又要回到我的背景介绍上了,在这个世界,修炼者的等级分为100级,而我在出生的时候,就是45级,可以说是前无古人,后无来者,不行,让我先飘一会。 几十年过去了,我也已经80级了,我越来越成熟,也越来越强大,现在啊已经成为了这个世界上的中流砥柱。 为了吸引更多的优秀人才来到我的家族,我想向大家详细的介绍一下我家族的情况。

四大分部,各司其职

像我们这么大的一个家族,想要保证整个家族的正常运转,就需要让每个人各司其职,高速流通。为了让人才的能力得到最大程度的发挥,当年家族最具前瞻性的族老,将家族分成了四个部分,就是上面说的:应用层,传输层,网络层,数据链路层。 我们的世界,一直和人类的世界有着频繁的交流。不但如此,为了历练我们家族中的成员,总会接受人类世界的发布的任务,赚取我们世界上的货币—–流量来维系家族成长。所以,这些发布任务的人类,被我们称作用户。 下面我就来介绍一下各司其职的四大分部,在家族中的作用。

应用层: 也就是我所在的分部,这个部门决定了向用户提供服务的通讯活动,每一种服务对应的通讯活动,都由一个家族成员来承担。比如说承担文件传输服务的专门人才,也是我的小弟:FTP。再比如说能对域名进行解析的(将域名[www.roobtyan.com]换为[202.206.xxx.xx])DNS,也就是我的二叔。而我,也就是网络世界的扛把子,我的任务是将用户的请求和服务器的各种响应打包,传递给下一层的专门人员。 简单的说,我们这个部门举足轻重,每一种用户想要的执行的操作,比如上面的传输文件,域名解析等,就会有一专门的人负责这个功能。当然,域名解析并不需要用户亲历亲为,浏览器小兄弟会自动完成这个任务。

传输层: 传输层是和我们关系最近的一层,这一层的作用是用来在两台机器之间进行数据传输的。事情是这样的,因为用户网络状况等的一些原因,是无法保证传输的可靠性,也就是说,传输的数据可能会在传输的过程中出现错误。导致数据到达另一台机器的时候不是用户想要的内容。这时,就会发现,我家族中的这个部门是举足轻重的。 传输层的一大功能就是提供了可靠的数据传输,这也是使得我的家族在网络世界上的地位越来越高的另外一个原因。 在这一层,最具有代表性的人物是TCP和UDP这俩货,他们俩其实是一对双胞胎,和我是死党。虽然他们俩看起来差不多,提供的功能又都是可靠的数据传输。但是这俩货的思路可不是那么的一样,以后如果有机会,我会好好的给大家介绍一下这对兄弟的。不过,在后面的说明中,我还是会简单介绍一下这个TCP的。 总的来讲,为了实现可靠的数据传输,TCP和UDP都会将我(HTTP)封装的请求数据和响应数据切割后打包,再进行传输。他们的打包方式简单粗暴,他们将数据切割成一小段一小段的,然后再加上自己的内容,也就是给这些小段的数据加上标号,到达另一台计算机的时候,再用这个标号的顺序把我的数据重新给原回去。看得我是一阵心疼,好不容易打包好的数据,万一让他们给弄丢了,我岂不是还得重新打包?可惜目前他们这两个传输专家也没有什么好的办法。

网络层: 在我的世界中,网络线路四通八达,主机的数量也是非常多,看的我胆战心惊。我总在想,网络层究竟是如何将这些数据准确的送到目的机器的呢? 直到有一次我问了问IP小兄弟,我才弄明白,原来,IP小兄弟的任务就是将数据准确的送到目的主机。(这里的是IP协议,而非ip地址) IP小兄弟会给每一个数据包划分一个传输线路,开始发送后,一边寻找下一个规划线路中的节点,一边向节点转发,最终到达目的地。

数据链路层: 数据链路层的一帮家伙都是硬梆梆的,他们都是实体的。也就是人类说的网络相关硬件,什么网线啊,什么交换机了,什么服务器主机等等,反正是处理网络的硬件部分都属于数据链路层。 不过,我不太喜欢和这帮家伙打交道,脾气又臭又硬。

好了,讲到这里,我最后补充一下整个网络传输过程: 我(HTTP)的作用是将用户请求数据和服务器相应数据封装,加上自己的头信息,也就是做个标记。我将数据封装完后,交给传输层中的我的死党TCP或者UDP,他们两个会将我的数据切割,然后加上标志,开始传输。传输的过程交给的是网络层,IP小兄弟会规划传输路线,一边寻找节点一边向节点转发,最后到达目的地,再由链路层中的硬件接收;硬件接收后,再由TCP或者UDP还原数据包,最后再交给我,去掉我的头信息,还原回真正的请求数据。同样的,当请求被服务器识别之后,会将响应数据交给我HTTP,以同样的路径返回客户端。注意,发送时,每次经过一个层次,就会封装一次数据,而接收数据的时候恰恰相反,是一层层的去封装。

代表人物简介

下面,让我来用比较简洁的语言介绍一下这几个代表人物(TCP,IP,DNS),(不会太过于深入,毕竟这只是入门的文章,以后的文章会写的更加深入)

TCP:看看是不是法对了

前面说过,我的死党TCP这个家伙,会将我封装的大块数据分割成一个个小的数据段,这个小的数据段还被这货起了名字:报文段,每个报文段会有一个唯一标识,而最终在接收的时候,TCP也是通过这个唯一标识来判断是否有数据丢失,如果有数据丢失,这货会重新发送一遍的(客户端或者服务端),这让我们很不爽,因为貌似效率低了些(实际上还不错),但是也没有办法。 我的死党TCP有一独门绝技,名曰TCP的三次握手。

  • 第一次握手(发送端–>接收端):发送端的TCP发送带有SYN标志的数据包。
  • 第二次握手(接收端–>发送端):如果握手成功(收到第一次握手时候的数据),接收端发送带有SYN/ACK的标志数据包表示已经收到,就是确认信息。
  • 第三次握手(发送端—>接收端):发送端发送带有ACK的数据包,表示握手结束,确认数据已经成功到达,完成握手。
  • 如果其中有某次握手意外结束,则会重新发送丢失的数据包。

其实上面TCP的绝技三次握手的作用,就是确定报文段是否成功被接收端接收了。这就是TCP的独门秘诀。

IP:看看数据包应该去哪

(刚才我在备注中已经说明,这个IP指的是网络层的IP协议,并非是IP地址,这一点要注意。)IP小兄弟的任务就是给报文段规划一个正确的路线,然后一边中转一边发送。 对了,IP小兄弟高速我,他的能力完全是因为MAC地址,他向我解释说,每一台硬件的MAC地址是唯一的,在这个世界上找不到两个相同的MAC地址,所以,它能够准确的找到中转的位置。 他还说了一个有意思的事情,就是在传输的过程中,上一台主机只知道下一台主机在哪,而不知到其他的路线中的主机在哪,这就是传说中的“没有人能够全面掌握互联网中的传输状况”的由来。

DNS:别装了,我知道你是谁

当你看见一个网站的时候,你不借助工具,你是不知道这个网站的ip的。比如说我的博客(http://roobtyan.con),光看这个网址,你肯定不知道ip地址。但是,计算机的能力是处理数字,它是不会识别文字的,即便可以识别,那也是因为有字码表的存在。 为了方便各个层次的功能开展,我们应用层的大家庭中,就有了这个DNS,他的作用是将域名解析成ip地址。 只要资源在互联网上,都能被DNS解析到,所以,DNS经常说的一句话就是:“别装了,我知道你是谁。”。 对了,DNS服务在你向浏览器中输入域名,然后回车后就启动了,这时返回给浏览器的就是IP地址。

嗯,说了这么多,好像完全忽视了我的存在,其实我也很不爽,没办法,无良作者非要介绍完整个的大背景。好吧,若你想知道我为何能成为TCP/IP协议族的扛把子,那么就请看下一期的“我是传奇之HTTP”了! 欢迎关注我的专栏呦!

结语

感谢您的阅读,欢迎指正博客中存在的问题,也可以跟我联系,一起进步,一起交流!

微信公众号:进击的程序狗 邮箱:roobtyan@outlook.com 个人博客:http://roobtyan.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年04月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景介绍
  • 四大分部,各司其职
  • 代表人物简介
    • TCP:看看是不是法对了
      • IP:看看数据包应该去哪
        • DNS:别装了,我知道你是谁
        • 结语
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档