TCP与HTTP的区别: TCP是底层协议,定义的是数据传输和连接方式的规范。 HTTP是应用层协议,定义的是传输数据的内容的规范。 总结:TCP是一条路,HTTP是一辆车,数据是车上的人和物。协议就是指这条路修建 时的规则,这辆车行驶遵守交规,人和物也遵守相应的规矩。
TCP的三次握手和四次挥手: 三次握手: 基本的就不多写了,网上一大堆。主要讲我对三次握手的理解:首先我们要知道TCP的连接概念,tcp是双向的,客户端与服务端都要发送数据与接收数据,而完整的连接那就要先验证连接双方是否功能正常。 三次握手的作用就是让连接双方互相验证功能是否正常,第一次握手是验证A的发送功能和B的接收功能,第二次握手是验证B的发送功能和A的接收功能,正常来说两次握手已经验证成功了。但是这是以我们上帝视角来观察的,带入A、B的视角,可以发现两次握手后A知道了AB所有功能是否正常,而B只知道A的发送功能和B的接收功能,对第二次握手的结果并不知道,这是就需要第三次握手来告诉B二次握手的结果。 四次挥手: 这里很多人第一次接触都想不明白,按照tcp连接协议应该和挥手一样也是三次啊。为什么会有四次挥手呢?这里对于挥手的理解不能全部套用握手的。不然就会陷入根本错误中,握手我们是AB\BA\AB,而挥手是AB\BA\BA\AB不是AB\BA\AB\BA。挥手去掉第三次挥手BA就完全和握手是一样的,连本质都是一样的,就是为了让AB知道彼此的发送与接收功能是否正常。现在你已经逃出陷阱,要到达目的了。 为什么要有第三次挥手:第三次挥手是因为断开与连接还是有区别,断开的时候我们要考虑到A单方面要断开连接,这时B就会有三种情况:1.B接收到信息,并且随时可以断开连接;2.B接收到信息,但是正在运行处理数据等操作中,要等操作完成后才能断开连接;3.AB之间的通讯有问题。 如果用一次挥手来处理,会有3种情况:1.B直接发送信息给A;2.B等待操作完成后发送信息给A;3.AB直接通讯有问题。其中2、3两种情况就产生冲突了,B可能会因为2或3没有在短时间内回复给A,A肯定会以为发生了3这种情况,重新开始断开操作。 为了避免这种情况,就有了第三次挥手。第二次挥手B发给A是验证B的发送功能和A的接收功能,第三次挥手B发给A是让A知道B操作已经完成随时可以断开连接。
这些都是个人的理解,表达能力不是很好只能用白话解释,多看几遍应该都能懂。
|