TCP协议讲解一

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hanani_Jia/article/details/83241256

我想给在北京上学的同学发一份包裹,所以我就去了菜鸟驿站找到了大华。

我跟他说:“大华我要往北京的同学那里发一份包裹你帮帮我呗”。

大华说:“好,可是北京那边有这么多通道你准备走哪一个通道?”

我:“那就走80这个通道吧(TCP协议默认端口80)”

我跟着大华来到了菜鸟驿站的后边,大华说不急,你先等我跟北京的小胖建立一个连接再说。大华拿出一张纸写了“发货地址:西安市233号,收货地址:北京80号”把信纸放到信封里之后就叠成纸飞机扔了出去。大华就开始坐着等,等了十分钟之后一个纸飞机飞了过来,上边写着“西安西安,你好我是北京,我收到你的回信了,你那边有个序号是4396吧,我这个序号是7777”

我很激动:“那咱们就准备发货吧”

大华:“不行,咱们刚刚给他发了消息,他给咱们回复了消息,但是万一这个消息是咱们两年之前发的,纸飞机刚刚才飞到,他误以为咱们要跟他发包裹怎么办,所以他必须要有一个我的确认,确认我现在确实是想发消息。所以我再给他写一封信,大华拿来纸开始写北京北京,我是西安,我已经看到你的回信了,也明白了你的序号,我这就开始发消息了,写完叠成纸飞机就发出去了,这样链接就算是建立了”

我:“这就是链接吗?我咋没看见你们有啥链接,只看见你们在扔纸飞机”。

大华:“这就是TCP链接,他是一个虚拟的,链接状态并不会被路径上边的保存,用来维持靠的是链接信息的两端,也就是我和北京小胖来维持的”

我:“你这三封信是不是有点过于复杂和冗余了?”

大华:“愚蠢,这就是TCP的三次握手,你是不知道他的重要性, 有了它网络传输可靠了不少呢,你看啊,我给你分析一下,这三次握手不仅要建立链接,还得让我们互相明白,我们都是正常的,不存在问题的两端,我第一次给小胖发消息,当小胖收到之后,就明白,我大华的发信能力是没有问题的,他小胖的收信能力是没有问题的,但是他不清楚我的收信能力和他的发信能力,然后他给我发了一个,当我收到小胖回我的消息之后我就买明白,我的发信和收信都成功了,都没有问题,但是这时候小胖还是不太确定自己的发信和我的收信,我就再给他一个ACK,告诉他我收到你的消息了,放心吧, 我能正常收,你的发送也没问题。”

之后大华弄了一个大纸飞机,说来把你的东西放上来。

我:“你这么辛辛苦苦建立的链接,你自己不来发我的包裹?”

大华:“我才不去呢,西安到北京这一路全是山,人烟稀少,我要是再遇到个野人野兽啥的,我在这不就交代了么,让纸飞机去,就算纸飞机没送到中途出了意外,也没有啥大损失”

那这纸飞机咋知道我要发给你啊,咋知道送到哪?

这你不用担心,我们菜鸟中途有很多的网点,它们会沿着我们给他们设定好的路线开始走,每到一个网点的时候,网点的小红、小蓝、小粉它们看到我在纸飞机上做的标记,它们就知道该让纸飞机继续往哪个方向飞,这样一点一点往北京小胖那边靠拢,(这些网点就是我们的路由器)

那万一这飞机,半路被熊孩子抓走了,或者下雨掉在半路上了,可咋办。我这些特产丢了我还得重新再去买,很麻烦的。

这就是我们的问题咯,这也不能避免,到时候我们会有解决办法的。你这货 太大了,分开发,分成一个个的小份,不然飞机带不动啊。然后给你的这些小部件都编一个号码,不然小胖太笨了,万一组装不起来咱们就算是白忙活了。

按规定啊, 我这次只能先给你发前三个,说完大华弄来三个纸飞机,把我编号1.2.3的包裹放上去了。

我咋知道这些东西到底有没有到北京那边啊。

来,看见这个沙漏没,如果说这个沙漏漏完了,小胖还没给确认说他收到了,那就是你倒霉,货丢了。

过了二十分钟,一个纸飞机落了下来,大华赶紧捡起来,上边写着:大华,大华,一号包裹收到了。大华拿起我的四号包裹就又放到纸飞机上,让他又走了。所以大华每次都是保证有三个包裹还没有确认的包裹在路上,等了一会一下了来了三架纸飞机,2,3,4小胖都收到了。之后又把5,6,7直接发送了过去,等了一会5小胖收到了,然后大华直接抓起8发了出去,我俩就在这坐着等,可是等着等着就就发现,这次的沙漏都快完了,6号的确认消息还没回来,我开始慌了...这玩意不会给我整丢了吧。大华一脸淡定的说,没准是渭南或者石家庄下雨了,纸飞机没了,小胖没收到。你去想想6号包裹里边装的啥,你赶紧再去买。

那7,8收到没有?

我们现在还不确定,如果他俩也遇到雨了,那你也得重新再去买。

那你干啥每次都给我发三个,你就不能每次一个一个来,确认收到了再去发下一个。

大华说,别喊了,这又不是我定的,这是我们老板定的,这叫滑动窗口协议,你说我们要是一个一个发,现在没准才发到你的第三个包裹,你说慢不慢,而且你说我发送完一个包裹到收到确认消息这段时间我干啥,我们要是一次发三个,这样大家都能不闲着,速度快不少呢

我赶紧去买了,两袋特产又编好6给了大华。

大华就重新把我的6放到纸飞机上发了出去,

等把这十个包裹都发完已经晚上了。

我也明白了,TCP协议就是在那些不靠谱的纸飞机上做了一些相对可靠的机制,我能知道你纸飞机是不是安全的到了,是不是发给正确的人了。

TCP全称是Transmission Control Protocol,是工作在传输层上的协议,TCP协议是面向连接的,可靠的,面向数据流的,可以看到上边,我和大华在给小胖发送数据之前,我们先通过三次握手来建立了连接,这就是我们所说的面向连接有链接,可靠是因为小胖到底有没有收到我们数据,我们会有确认机制,收到了自然皆大欢喜,如果要是没有收到我们也可以及时给他再重新发送一份,而面向数据流就是我和大华在发送数据之前,把我们的数据给拆分了,没有一整份数据直接全都发送过去。自然这些特点有时候会给我们带来极大的安全感,但是在有些方面TCP协议并不是全都是优点。

 

 

 

猜你喜欢

转载自blog.csdn.net/Hanani_Jia/article/details/83241256