新梦想软件测试
上次我们知道小明把他的床通过了快递公司运回家里了,但是快递的发送细节并不太清楚。所以关于小明的故事还是得继续,我们回到小明跟小MM对话的场景,当小MM确定好接收点正常营业之后,故事是怎么进行的。
Part 1
小MM说:”你的东西呢,拿过来看看啊”。小明指着外面的床说:“那就是了”。小MM说:“那么个东西,我们可没有这么大的箱子,要把床拆了,一个一个小包的送过去”。小明没有办法,只能把床都拆散了。然后再包成一个一个小箱子。小MM在每个箱子上按顺序贴上快递单号:“到时候让你家里人按编号组装起来就行了”。然后叫来快递员把1号至4号箱子装上三个车。小明比较奇怪为什么不一次全部发过去。小MM说:“这是规定一次只发三个”。小明担心的问:“万一路上出了什么事故怎么办。”小MM说:“我们送快递是有时间限制的,如果在规定的时间内没有收到回复,那你就去买一个一模一样的零部件回来重新发一次过去”。
图一:wireshark抓包的结果
Part 2
在小明觉得可能不太靠谱的时候,小明总算收到了1号箱送达的回复,3号箱的回复。但是没有2号箱子的回复。小MM说:“没事,2号肯定是收到了,不然不会发3号箱子的确认回复。估计只是回复消息在路上出了什么事情了”。再发接来的3个箱子就是了。于是小MM又把4号,5号,6号箱子发出去了,然后重新启动计时,但是时间都过去了4号,5号,6号回复信息都没有收到,小明这下紧张了,赶紧问一下:“怎么还没有收到回复?”,小MM说:“现在不知道原因,肯定是出问题了,你去买这几个零部件,一模一样的,然后再发一次”。小明觉得这也太坑了点,但是人家快递公司可不管,没办法,赶紧去买回来,然后重新发送了出去。经过多次折腾后,总算是把床全部发了出去,然后收到床已经组装成功的消息。
图二:wireshark抓包服务器给客户端的响应
Part 3
通过这个过程大家应该知道,TCP的每个数据包的大小是有限制的,当数据超大的时候,就会切分成多个包进行传输。每个数据包的发送出去以后就会收到消息确认,而且消息确认是有顺序的。TCP的可靠性就是通过消息确认和数据包超时重传来保证的,当然还有一些其它的措施。
大家了解过传输协议的话应该知道,TCP协议有一个不太靠谱的兄弟叫做UDP(用户数据报)协议。为啥不靠谱,因为他不建立连接。他也不太去管对方是否会收到数据,只管发送数据。那这两个协议分别用在什么场景呢?
你觉得你什么时候会比较关注延时和数据质量问题。有想到的么?
一般情况下,要求文件准确无误的传送给对方的就会使用TCP协议,应用层很多都是的,比如:HTTP协议,FTP协议,QQ文件传输,邮件传输等。而UDP协议的使用有:QQ语音,QQ视频。你可以想象一下,当你跟朋友视频或者语音的时候,如果因为一点点没有听清楚,对方就一直重复一直重复。整个过程多么惨不忍睹。当然UDP有它的优点:速度快。
既然HTTP是用的TCP协议,那下次我们就来说一说HTTP与TCP是怎么配合的吧。