TCP协议:如何保证页面文件能被完整的送达浏览器

120 阅读4分钟

TCP(Transmission Control Protocol)是一种面向连接的协议,它提供了可靠的数据传输机制。为了确保页面文件能够完整地送达浏览器,TCP采用了一系列机制:

  1. 三次握手: 在建立TCP连接时,客户端和服务器之间会进行三次握手,确保双方都准备好进行数据传输。这防止了在正式传输数据前的不确定性。
  2. 序号和应答号: TCP通过使用序号(Sequence Number)和应答号(Acknowledgment Number)来保证数据的有序传输。每个TCP段都包含一个序号,用于指示数据的顺序,以及一个应答号,表示已经成功接收的数据。接收方使用这些信息来组装和确认数据的正确接收。
  3. 流控制: TCP通过流控制机制来确保发送方不会以高于接收方处理速度的速率发送数据。这可以防止接收方被过量的数据淹没,从而保证接收方有足够的时间和资源来处理和存储接收到的数据。
  4. 超时重传: 如果发送方没有收到对方的确认,或者在发送数据后一段时间内没有收到应答,TCP会启动超时重传机制。这确保了数据能够在网络上可靠地传输。
  5. 连接的保持与维护: TCP连接是被维护的,如果在一定时间内没有数据传输,连接可能会被关闭。这确保了连接不会无限期地占用资源。对于浏览器下载页面文件而言,连接的保持和维护确保了文件能够完整地送达。

image.png

一个数据包的传输过程

互联网是一套理念和协议组成的体系架构。协议是一套众所周知的规则和标准。 互联网中的数据是通过数据包来传输的。如果发送的数据很大,该数据会拆分为很多小数据包来传输。

1.IP:把数据包送到目的主机

数据包要在互联网上进行传输,需要符合网际协议(IP)标准。

计算机的地址成为IP地址,访问任何网站实际上只是计算机在向另外一台计算机请求信息。

主机A发送数据从应用层到网络层包装上IP头通过底层传输到B主机,B主机的网络层通过IP头解析交给上层应用层。

2.UDP:把数据包送达应用层

用户数据包协议(User Dataprogam Protocol)

IP通过地址信息把数据包发送到指定的电脑,而UDP通过端口号把数据包分发给正确的程序。和IP头一样,端口号会被装进UDP头里面,UDP头在和原始数据包合并组成新的UDP数据包(在传输层添加UDP头)

UDP不能保证数据可靠信,但是传输速度非常快

3.TCP:把数据完整送达应用程序

TCP(Transaction Control Protocol,传输控制协议)是一种面向连接的,可靠的,基于字节流的传输层通信协议。

相对于UDP,TCP的特点:

1、对于数据包丢失的情况,TCP提供重传机制;

2、TCP引入了数据包排序机制,用来保证把乱序的数据包组成一个完整的文件。

TCP头除了包含本机和目标端口外,还包括了用于排序的序列号。TCP作用域传输层。

4.TCP完整的连接过程(三次握手、传输数据、四次挥手)

image.png

三次握手(Three-Way Handshake):

1.第一步(SYN): 客户端向服务器发送一个带有SYN标志的数据包,表示请求建立连接。

2.第二步(SYN-ACK): 服务器收到客户端的SYN请求后,会回复一个带有SYN和ACK标志的数据包,表示同意建立连接。

3.第三步(ACK): 客户端收到服务器的回复后,发送一个带有ACK标志的数据包,表示连接建立完成。

这样,TCP连接就建立起来了,可以开始进行数据传输。

传输数据:

一旦建立了TCP连接,数据传输阶段就开始了。在这个阶段,客户端和服务器可以相互发送数据。TCP协议会确保数据的可靠性,通过序号和应答号来管理数据的顺序和重传。

四次挥手(Four-Way Handshake):

1.第一步(FIN): 当客户端完成数据传输后,它发送一个带有FIN(Finish)标志的数据包,表示数据传输结束。

2.第二步(ACK): 服务器收到客户端的FIN后,发送一个带有ACK标志的数据包,表示已经接收到了FIN。

3.第三步(FIN): 服务器也可能在数据传输完毕后发送一个带有FIN标志的数据包,表示服务器也准备关闭连接。

4.第四步(ACK): 客户端收到服务器的FIN后,发送一个带有ACK标志的数据包,表示已经接收到了服务器的FIN。