TCP/IP 和 HTTP 的区别和联系

最近在学即时通讯,对HTTP 和IP/TCP有点分不清了,网上搜索相关的知识,说HTTP是应用层规定传输格式的又说IP 规定传输的基本单元和格式 又说IP 是寻址的通道 TCP是建立通道,有点分不清了。

更新

如果把TCP/IP看做一个整体,TCP/IP可以比喻成快递/物流公司HTTP可以比喻成发送/接收快递的用户他们是什么关系?服务与被服务的关系!TCP/IP可以帮助HTTP用户,将包裹安全可靠送达目的地。

在TCP/IP快递公司内部,有进一步的分工,TCP是公司管理层,坐在物流调度室里负责调度。IP是公司具体干活的——卡车司机,TCP调度员让IP司机把货送到哪里就送到哪里,一切听命行事。

IP司机具体走高速公路、省道、还是乡村小路到达目的地,TCP调度员管得着哇?

TCP鞭长莫及,管不着!

看到这里,同学们会不会觉得TCP调度员是多余的角色?

来分析分析,让IP司机直接运送HTTP客户的包裹,能到达目的地哇?

可以的,IP司机是地地道道的老司机,对路况非常熟悉。万一哪条高速公路堵车了,还可以走省道避开拥堵的高速公路。

但是,老司机开车也有翻车的时候,万一IP司机挂了,连同运输的货物一起消失,那货物的接收方永远也收不到自己的货物,对吗?

如何解决IP司机消失的难题?

TCP调度员!

TCP调度员一直再等待IP司机到达目的地的消息,可是一直没有等到。按照事先约定,超过一定的时间没有IP司机的消息,就默认IP司机挂了。

需要再派一名IP司机,拉着客户的包裹上路,通向目的地只要有一条路,IP司机不翻车、不掉进河里、不被交警扣车,肯定可以到达目的地的。

如果第二名IP司机又消失了,继续派遣IP司机运输同样的货物。。。

在极端情况下,将客户的包裹成功送达,可能要牺牲很多IP司机,但TCP调度员的首要目标是,将包裹成功送达目的地,至于牺牲了多少IP司机,那不是KPI考核指标。

如果在最极端情况下,所有通向目的地的路都断了,IP司机一次次开进河里消失。TCP调度员看到了牺牲的IP司机到达上限,于是对HTTP客户说:非常遗憾地通知您,您的包裹由于不可抗力因素丢失了且无法恢复,竭诚下一次为您服务,再见!

为何客户的货物可以一直像变魔术一样变出来的?

那是因为HTTP客户的货物是数字的,数字的货物可以无限制复制,这点和真实的货物是有一点区别的。

原文

中秋节到了,上海的老王想给北京的好友老张快递一些节日礼物,有鲜肉月饼、大闸蟹等,老王选择了机器人快递公司,听说送快递的全是机器人。

老王把礼物打好包并转交给快递公司,并叮嘱快递公司,要鲜肉月饼先到,大闸蟹后到,快递公司说:okay,放心好了。

快递公司将鲜肉月饼贴上标签1,大闸蟹标签2,放在仓库里,先联系到北京的老张再发货

于是快递公司派出机器人小哥,给小哥输入老张、老王的地址信息:

收件人地址
北京海淀区知春路xx号

寄件人地址
上海浦东新区世纪大道200号

机器人用导航软件智能选取路线,过程不表。

联系老张的过程(三次握手):

机器人A到达北京快递公司,快递公司看到老张的地址信息,去他家敲敲门,老张你在家吗?等会有快递要送过来,务必在家哦(服务器TCP端口号活),老张说好的好的。

北京的快递公司派出机器人B回复上海方面,老张在家的,快递可以运过来了。

上海的快递公司派出机器人A回复北京,快递马上就发出,请稍候。

有同学说,需要那么麻烦嘛?打个电话不就行了吗?没错,但这只是一个虚拟故事,在这个故事里没有电话,只有跑腿的机器人。

以上联系老张的过程,机器人A、B都是空载,什么货物也没有运,只是起到消息传递的作用,接下来开始运送货物了。

上海的快递公司让机器人C运鲜肉月饼,机器人D运大闸蟹,于是C、D先后上路了。

C的导航软件让他走沪陕高速,结果堵成狗了,高速成了停车场。

D的导航软件让他走京沪高速,虽然有点堵,但还是后发先至,结果比C先到北京的快递公司。

北京的快递公司将D运的礼物放在仓库里(缓存),耐心地等待C的到来,第二天C终于还是到了。

快递公司将货物按标签1、2按照顺序转交给了老张。

快递公司稍后还要派出机器人通知上海方面,货物(标签1、2)安全到达,请勿挂念。

老张心情大好,来而不往非礼也,于是将北京烤鸭、北京糕点打包好,让快递公司转交给老王,只有一个叮嘱,烤鸭先到,糕点后到(按序)

过程与上类似,机器人E运烤鸭,机器人F运糕点。

E走京沪高速,结果在某某大桥出车祸了,被撞到江里了,game over。

F走沪陕高速,堵了三天三夜没动弹。

北京的快递公司左等等、右等等,上海方面一点消息也没有,知道最坏的情况发生了,但快递公司有自己的预案,三天没有对方的消息,就默认机器人挂了,需要重新安排机器人重新运货物。

于是机器人G运烤鸭、H运糕点又重新上路了。

这次非常顺利,G、H走的都是京沪高速,按序到达了上海快递公司,不一会,F也到了,快递公司很恼火,对F很不客气滴说:你现在是多余的人(F与H是重复的货物,需要丢一个),快滚!

上海的快递公司于是将烤鸭、糕点按序转交给老王。

稍后再派出机器人通知北京方面,烤鸭、糕点已经安全到达,请不要再发重复的货物过来!

在这个虚拟故事里,老王是http客户端,老张是http服务器端,负责将什么样的礼物(数据)送给对方,同时负责解释这些礼物的真正含义。

快递公司是TCP,负责将客户的数据按序(客户的数据按序才有意义)送到客户指定的目的地,如果有丢失,TCP负责重传。

机器人是IP,根据快递公司输入的客户目的地,根据导航软件将货物送到目的地,如果有丢件,机器人无能为力。

上一篇:Android.bp入门指南之Android.mk转换成Android.bp


下一篇:HTTP响应状态码