本篇文章只举出一些便于理解tcp和udp的思路,具体的协议内容请打开《计算机网络》
在神通广大,四通八达,便捷方便,五花八门,错综复杂的网络中一直存在一个问题(瞎编的问题不要在意),数据是通过什么样的机制传输的呢?
在计算机网络的传输层中有着两坐大山,一个叫做tcp传输控制协议,一个叫做udp用户数据报协议。听起来就很厉害啊,在这里先给出一个简单的总结:1tcp是面向连接的、可靠的、基于字节流的传输层通信协议(明明抄的百度百科)。2udp是无连接的传输协议。那么又有问题了(事真多)这两种协议满足需求了吗?我能不能创建一个新的协议?答:1不敢肯定,但是目前为止互联网数据传输都是基于这两个协议的。2当然可以,协议就是大家协商而制定的共同承认、共同遵守的流程,你的协议如果得到大家的认可是完全没问题的。
其实这两种协议和人与人之间的沟通方式其实是类似的,接下来我就要用日常人与人之间的方式来模拟协议的内容了
一 TCP:
上面说了,tcp是一个面向连接的,既然是连接状态的,那就要有连接的建立,连接的关闭。
假设情景:一个男生(客户端),一个女生(服务端),一个降噪耳机(复杂的网络),两个人都是瞎子(只通过声音进行沟通)
小白:TCP是一个可靠的传输协议,如果不用可靠的传输协议不行吗?
帅逼博主:用韩剧《心里的声音就可以解释一下》
https://haokan.baidu.com/v?pd=wisenatural&vid=1721973275520522845
抱歉不会制作gif
男主说的话: 女主认为的:
连接的建立(搭讪的开始)三次握手
人与人的沟通其实要有前提条件的:1两个人都有正常的说话和听话功能(生理上的)、2两个人之间声音是可以传输的。3彼此之间是知道对方是正常人
如何进行这个条件的判断,tcp就引入的三次握手,通过三次握手来进行连接的建立
简单的总结一下上述过程,1男提出了搭讪的请求,2女知道了男的名字,回应了自己的名字,3男也知道了女的名字,并且恭维的称赞了一下。通过了上面的三个过程其实就可以判定这两个人可以愉快的聊天了。为什么这个过程后就能那么接下来细细的分析一下:
1次握手过程结束后:女生听到了男说出的话,并且是正确的收听到了男的名字叫做大帅,这个时候能确认的信息(上帝小三视角):男:有正常的说话能力(数据发送能力)。女:有正常的听话能力(数据接收能力)。网络:男——>女的方向是通的
心中的对方 | 声音是否畅通 | |
男 | 女:一无所知 | 一无所知 |
女 | 男:可以说话,叫做大帅(数据正确) | 能听到男说的话 |
2次握手过程结束后:男生听到了女生的话,知道对方刚才清楚的听见了自己的名字,并且女生也是可以说话的我可以听到。这个时候能确认的信息(上帝小三视角):男:能说话、能听话。女:能说话、能听话。网络:互通的。
心中的对方 | 声音是否畅通 | |
男 | 女:能听话,能说话,叫做大美(数据正确) | 完全畅通,而且没有噪音干扰 |
女 | 男:可以说话,叫做大帅(数据正确) | 能听到男说的话 |
小白:哎!!!不对啊!上帝视角都看出来了,他们之间满足前置条件了啊,为什么要进行第三步啊?
帅逼博主:因为上帝视角是不存在的,在真正的连接建立的过程中,需要满足双方都清楚对面有正常的收发数据能力,而且得到的信息都是正确的。这个时候女生(服务器)其实并不能确认男生是否听到了消息。所以要去掉上帝小三视角了,我们只看表格中的内容就好了
3次握手过程结束后:女生听到了男生叫她大美。
心中的对方 | 声音是否畅通 | |
男 | 女:能听话,能说话,叫做大美(数据正确) | 完全畅通,而且没有噪音干扰 |
女 | 男:能听话,能说话,叫做大帅(数据正确) | 完全畅通,而且没有噪音干扰 |
这个结束后,男生和女生才能真正的确认,彼此之间都可以说话、听话。
然后大家可以想象一下,有个人如果带上降噪耳机会怎么样,在这里就不细致的写明了
连接的关闭(搭讪的结束)四次挥手
因为tcp是全双工的有连接状态的协议,所以关闭连接的时候并不是简单的一句再见就可以结束的。用下面的过程简述一下tcp的四次挥手
总结:第1次挥手男生通知去吃饭吧,结束聊天吧。第2次挥手女生回复知道了。第3次挥手女生我准备好了走吧。第4次挥手男生说 好的
小白:为什么!!!好麻烦啊,两次挥手不行吗(钢铁直男思维)?
帅逼博主:万一女生正在上厕所呢!万一女生要喝水呢!对应在服务器上服务器有可能正在做一些数据的一些操作也会通知客户端,所以从tcp上都能看出来,钢铁直男是做不好程序员的啊。
小白:哦哦哦,那我在4次挥手后应该就可以走了吧!
帅逼博主:直男无法拯救,你啊一点都顾虑女生的感受,如果你回答的时候,一辆车笛声盖过了你的声音,女生没有听到你的回回答,她肯定会一直跟你说 我准备好了走啊!,但是这个时候你已经走了,那么女生只能白白等待。
小白:哦哦哦,我懂了,我回答好的后,可以等待一下,看看女生有没有再次进行第三次挥手。
以上就是对于TCP的三次握手和四次挥手的简单解释,至于具体的报文内容请去看计算机网络。经过上面的简单分析可以得出TCP保证了可靠传输的双向的有连接状态的传输层协议
二 UDP:
由于UDP是没有连接状态的,所以用图画表示来说就简单的多
场景可以类似于收破烂的过程,生活中收破烂可能会带着大喇叭在街上喊着收破烂,但是在UDP中不是用着大喇叭,而是只对应一个地址去发送消息,由于没有连接过程所以传输的结果是不确定的。用UDP的场景和收破烂很吻合,收破烂的不需要你和他有太多的交互。由于没有三次握手和四次挥手,所以UDP在速度上理论上是快过TCP的