您的位置:首页 > 理论基础 > 计算机网络

计算机网络----- TCP协议

2016-03-03 21:58 309 查看
IP协议提供一种使计算机发送数据和接收数据的方法,但将数据从信源地址传送到目的地址,必须通过TCP协议解决数据包丢失或顺序传递的问题。

TCP 通过检验和,序列号,确认应答,重发机制,连接管理,以及窗口控制等机制实现可靠性传输。

一:通过序列号与确认应答提高可靠性:

TCP中,当发送端的数据到达接收端,接收端主机会返回一个以收到的消息通知,这个消息叫做确认应答(ACK)TCP通过确认应答实现可靠的数据传输。

(当然, 为收到确认应答并不意味着数据一定丢失,也有可能是数据已经接受到只是返回的确认应答在途中丢失,这种情况也会引起重发,与此类似的情况,因此引入一种机制 ,能够确认是否已经接收数据,又能判断是否需要接收)重发控制,确认应答,重复控制可以通过序列号来实现。

二:TCP连接过程 (三次握手)

1:客户端发送一个带SYN标志的TCP报文到服务器,这是三次握手过程中的第一个报文。

2:服务器端回应给客户端,这是第二个报文,报文同时带ACK标志与SYN标志,表示对客户端SYN报文的回应,同时又返回SYN,询问客户端是否准备还数据通信。

3:客户端必须再次回应服务器端一个ACK报文。

三:TCP以段为单位发送数据

在建立TCP连接的同时,也可以确认发送数据包的单位,称其为最大消息长度(MSS)

TCP传输大量数据的时候,是以MSS(最大消息长度)的大小将数据进行分割发送,重发时也是以MSS为单位。

MSS是在三次握手的时候,在两端主机主机间被计算得出。

利用窗口控制提高速度:

Tcp在发送数据的时候是以一个段为单位,但是缺点就是包的往返时间越长通信性能就越低,因此引入窗口概念,确认应答不再是以每个分段,而是以更大的单位进行确认,发送端主机发送了一个段以后不必一直等待确认应答,而是继续发送,该机制实现使用了大量的缓冲区,



上图可以看出没有收到确认应答的数据也能发出去,发送端主机在等到确认返回之前,必须在缓冲区中保留这部分数据,当然在窗口以外的数据以及已经确认的数据,就没有必要进行重发,此时数据就可以从缓存区清除。

当收到确认应答的情况下,将窗口滑动到确认应答中的序列号位置。这种机制被称为滑动窗口机制。

高速重发控制:

当某一端报文丢失后,发送端会一直收到丢失段[序列号] 的确认应答,在窗口较大的情况下,会出现报文段丢失的情况,同一个序号的确认应答将会被重复不断的返回,如果发送端主机连续三次收到同一个确认应答(因为三次才会触发重发机制)就会将对应的数据进行重发。

流控制:

接收端主机向发送端主机发送通知自己可以接收的数据的大小,于是发送端发送不会超过这个限度的数据。TCP 首部中,专门有一个字段用来通知窗口的大小,接收主机将自己可以接收的缓冲区大小通知给发送端,这个值越大,说明网络吞吐量越大。

拥塞控制:

可以有效的减少通信开始时连续发包,导致的网络拥堵,可以避免网络拥塞的情况发生。

TCP首部格式:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: