TCP建立连接的本质

TCP面向连接的本质

HTTP-应用层协议:

1.0与1.1最大的区别在于,HTTP1.1可以支持长连接,头部加入:Connection:keep-alive,即可保持长连接,那么HTTP是如何实现保持长连接的呢?

TCP-UDP-传输层协议:

UDP:面向无连接的协议,数据封装成数据包,发送出去,不保证数据是否送达

TCP:面向连接的协议,所谓面向连接,就是在数据传输之前A和B之间保持一条”连接“,通过这条“连接”,所有的数据被可靠,有序的在两者之间传输

“连接”:这个连接并不是真正意义上的连接,称之为“虚电路”,其实也并不是说A和B之间震荡建立了一条连接,或者说保证了路由路径是一致的,因为路由选择并不是传输层控制的,传输层负责流量控制和差错控制,因此所有的拥塞控制和路由选择其实是IP协议的工作,所以说,TCP怎能保证路由路径是一样的呢,如果出现网络拥堵,必然会重新选择路径。那么这个连接究竟是什么呢?

答案是:状态和序列号,以及错误校验(可以查看TCP和UDP的请求头,就会发现两者之间的差距了),其实所谓的TCP三次握手请求连接,无非就是初始化一个序列号,保证后面的数据有序到达且全部接收,同时TCP还支持重传,错误校验,保证数据的可靠性,当然UDP也提供校验。

状态:TCP与UDP的区别还在于TCP有很多状态,这个状态保证了A和B如何处理自己收到的数据包,因为如果状态是连接状态,大家可以愉快的通信,但是当一方断开连接,那么之后收到的数据包就该丢弃掉才是正确的选择,所以状态也是保证TCP可靠性的重要因素,具体了解TCP有哪些状态可以网络上搜索一下,这不是这篇的重点。

转载自:https://www.jianshu.com/p/78c...

你可能感兴趣的:(java)