
麦子学院 2016-07-05 23:50
一个小故事带你理解TCP
回复:0 查看:2674
夜朦胧,人方静,无聊的人打开了无聊的电脑看到了一张无聊的图,想着想着就睡着了,梦到了人
a
和人
b
的一次聊天。

有一天,
a
有事情想跟
b
商量就问
b“
有时间么,想和你聊一下天
”
,
b
想了一会发现自己能抽出时间就回复
a
说
“
可以啊,并把具体时间告诉了
a”
,
a
收到消息后就高高兴兴的去安排自己的时间,并告知
b“
我的时间也安排好了,可以说话了
”
,然后
a
和
b
噼里啪啦的说了好长时间,最后
a
的话终于说完了,想要结束聊天了。于是
a
说
“
我的话说完了
”
,
b
这个时候就有两种可能性了
:b
的话没说完和
b
的话说完了。
1.
如果
b
的话没说完,
b
就要跟
a
说
“
我的话还没说完了,你还得多听一会,等我说完了着
”
,然后
b
就噼里啪啦的又跟
a
说了一堆事情,
a
就在那里安静的听着,终于
b
说完了,这个时候
b
就跟
a
回了句
“
好了,我的事情终于说完了,你可以去忙其他的事了
”
,然后
a
就准备去忙其他的事情,但是他不知道
b
是不是还在想着这次谈话,出于礼貌和不放心,
a
还是决定再回一句让
b
也去忙其他的,于是
a
就给
b
回了一句
“
我要去忙其他的了,你也去忙你的其他的事吧
”
。于是这次谈话就愉快的结束了。
2.
如果
b
的话说完了,
b
就说
“
好,我的话也说完了,你去忙其他的事吧
”
,
a
收到了
b
的回话,
a
就准备去忙其他的事情,但是他不知道
b
是不是还在关注着这次谈话,出于礼貌和不放心,
a
还是决定再回一句让
b
去忙其他的,于是
a
就给
b
回了一句
“
我要去忙其他的了,你也去忙你的其他的事吧
”
。
有这次谈话,他想到了计算机的世界,计算机
a
要和计算机
b
建立链接,如果
b
刚好有资源就可以分配一段资源(建立进程,分配端口号等)去处理
a
的请求,他们之间通过三次
TCP
链接后就正式传输数据,处理数据。断开连接则有可能是
b
请求断开链接也有可能是
a
,但是过程是类似的,假设是
a
的数据传完了,就请求断开链接,
b
要给
a
的答复就有两种可能了,如果
b
还有数据没传完要断开链接总共就得四次
TCP
链接了,如果
b
的数据传完了要断开链接其实三次
TCP
链接就可以完事了。
由于考虑到网络的不稳定性、
TCP
的不可靠性以及充分利用计算机资源等原因,人们就给计算机设定了一个合理的最高等待时间限度,如果网络断了,过了这个时间限度还没收到彼此回复,双方计算机就主动结束这次通信,终止这次通信所带来的资源开销。上例中
a
最后一次发消息给
b
也是由于
b
在这个时间限度内不会主动让出这次通信所占用的资源,为了让
b
更早的让出这些资源,
a
就及时发一个消息主动告诉
b
,让
b
腾出这段资源去忙其他的。
a
发送完最后一条消息后等到时间到了这个时间段就也让出因这次通信所占用的资源。
计算机本来是笨的,然而人类很聪明,就让计算机变得很聪明;也让计算机变得很懂礼貌,然而计算机却让人类变得越来越不懂礼貌,越来越虚假。晨曦初露,人渐醒,原来只是整个世界打了个盹,做了个不近人情的交易!
”
醒来的那个人,揉了揉眼,不小心碰到了键盘,借着微光,无力地瞅了一眼横在面前的那副图,心想:
“Y
的,这世界和这图与我有关么,还害得我一宿没睡好?
”
于是就又无精打采地趴着睡了。

原文来自:博客园