聊聊web的底层-TCP

web是基于TCP/IP来传输数据的,要想了解web,必须先了解TCP/IP的相关原理。


TCP全称:Transmission Control Protocol,中文传输控制协议。相较于TCP,还有其他的传输协议,比如UDP,FTP,这些大家大概都听说过。


说什么传输协议,很多人觉得很高级。通俗点说:就是一个文件从一台PC上复制到另外一台PC上使用的方法。

技术分享

比如你访问百度,其实是你复制百度页面的HTML文件,CSS文件,图片文件等等,在浏览器打开显示而已。至于copy的方法,就是协议的具体实现内容。


那么TCP是如何传输数据呢?(TCP的经典三次握手

还是拿我的电脑请求百度的一张image来讲:

技术分享

第一次握手:我的电脑向百度的服务器电脑喊一句(SYN):百度小哥,能不能约,求回复!

第二次握手:百度小哥回复:帅哥,能约!我在百度大厦,快过来吧。

第三次握手:我的电脑回复:好,知道了,我马上过来。

经过这三次握手,我的电脑就与百度服务器成功约上,至于约上之后的激情事,请自行YY,很多宅男,肯定45度望天,嘴角微笑....

别想太多,我的电脑只是打开了一张图片:

技术分享

很多人看到这里,肯定觉得,原来建立一次TCP连接跟约X一样复杂,累觉不爱呀!


由于三次握手的低效性,在处理web时,一定要合并一些JS,CSS等文件,以提升效率。


了解过TCP是如何建立连接,再来看看TCP的几大特点

可靠性

TCP协议中,包含数据确认,重发等机制。确保对方一定收到数据。

刚才我的电脑约百度,百度服务器发送给我图片后,然后问我:小哥,收到没?

由于我的PC在喝茶,没空回复它(超时)百度又发送一次给我。又问:小哥,收到没?

有人肯定会问,百度会一直重发吗? TCP默认重发三次,如果没有回复,即不会重发了,当然这个次数是可以设置的。

HTTP正是基于TCP的可靠性,迅猛发展,成为现在web的基础。


无状态性

TCP的每次连接都不保存状态,用完即销毁,下次连接和本次连接没有任何关系。这跟现实世界是一样一样的,本次约和下次约肯定是不一样的!!

很多人都知道HTTP是无状态的,根本原因是HTTP构建于TCP之上的缘故。

无状态性,保持TCP连接的简单性,当然在一定程度上降低了效率。

在下一章中,我们将讲解HTTP为了提升效率,加上了连接复用的功能,在HTTP2.0中也引入了长连接功能。


分段

如果数据太大,TCP是对数据自行分段的。每个分段上加上顺序码,确保接受后,可以正确重组。

现在的多线程下载以及断点续传都是使用了传输协议的分段机制。

当然,下载不一定是基于TCP协议。


TCP简单原理到此讲解完毕,中间还有很多涉及报文,重发,传输的细节,请自行研究。

下一章,将讲解HTTP基于TCP进行的优化方法,以及HTTP连接复用等,敬请期待。


如果您有兴趣,请关注我的微信公众号,谢谢。


技术分享







郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。