码迷,mamicode.com
首页 > Web开发 > 详细

http服务器二:TCP协议

时间:2020-04-28 00:37:20      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:完整   方式   损坏   视频   发送数据   可靠性   传输   数据处理   通过   

一:网络的TCP/IP四层模型

技术图片

Http服务器,工作在传输层和应用层。

Tcp:传输控制协议,解决可靠传输的问题,比udp稳定,丢包几率低。

普通的传输控制协议就像,古代A给B写信,寄出去后,A不知道B是否收到信(B给A回信前),也不知道信在传输的过程中有没有损坏等情况的发生。但是Tcp协议可以保证数据的可靠传输

数据可靠传输

TCP保证数据可靠传输的方式主要有以下六点:校验和、确认应答与序列号、超时重传、连接管理、流量控制、拥塞控制。

1、校验和

在数据传输的过程中,将发送的数据段都当做一个16位的整数。将这些整数加起来。并且前面的进位不能丢弃,补在后面,最后取反,得到校验和。发送方在发送数据之前计算校验和,并进行校验和的填充。接收方收到数据后,对数据以同样的方式进行计算,求出校验和,与发送方的进行比对。

简单理解:A给B发一箱货物,发之前清点获取总数,将数量写在纸条,放在箱子里,B收到后,清点货物总数与A留的纸条进行对比,就知道货物数量是否一致,简单的做到了数量比对。

注意:如果接收方比对校验和与发送方不一致,那么数据一定传输有误。但是如果接收方比对校验和与发送方一致,数据不一定传输成功。

2、确认应答与序列号

序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。

确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。

序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。这也是TCP传输可靠性的保证之一。

3、超时重传

简单理解就是发送方在发送完数据后等待一个时间,时间到达没有接受到ACK报文,那么对刚才发送的数据进行重新发送。由于TCP传输时保证能够在任何环境下都有一个高性能的通信,因此这个最大超时时间(也就是等待时间)是动态计算的。

4、连接管理

连接管理就是三次握手和四次挥手的过程,保证可靠的连接,是保证可靠性的前提。

5、流量控制

接收端在接收到数据后,对其进行处理。如果发送端的发送速度太快,导致接收端的结束缓冲区很快的填充满了。此时如果发送端仍旧发送数据,那么接下来发送的数据都会丢包,继而导致丢包的一系列连锁反应,超时重传。而TCP根据接收端对数据的处理能力,决定发送端的发送速度,这个机制就是流量控制。

6、拥塞控制

TCP通过维护一个拥塞窗口来进行拥塞控制。网络中没有出现拥塞,拥塞窗口的值就可以再增大一些,以便把更多的数据发送出去。网络出现拥塞,拥塞窗口的值就应该减小一些,以减少注入到网络中的数据包数。

简单理解:地铁,非下班高峰期,通道很宽,下班高峰期,通道收窄。

流量控制

技术图片

服务器和普通计算机的网卡性能差异很大,普通计算机和服务器进行通信,因为有Tcp传输协议的存在,互相知道彼此的数据处理能力,调整发送速度。服务器会减缓数据的发送速度,保证普通计算机能够正常完整的接收数据,不至于让普通计算机崩溃。

拥塞控制

技术图片

与流量控制不同的是,感知的是互联网的网络压力,而不是处理数据的压力,网络压力大,就控制传输速度,保证整个网络不会瘫痪。

 

二:TCP报文

技术图片

TCP数据包的数据,包括给应用层的报文,也就是http请求传输的报文。

TCP协议是面向字节流的协议,因此图片,文字,音频,视频都必须转成字节进行传输

 

三:应用场景

微信/QQ等app消息发送、浏览器与服务器的通信、其他可靠通信的场景

 

 

 

 

 

 

 

 

 # TODO

http服务器二:TCP协议

标签:完整   方式   损坏   视频   发送数据   可靠性   传输   数据处理   通过   

原文地址:https://www.cnblogs.com/meloncodezhang/p/12791129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!