网络协议篇

TCP(Transmission Control Protocol,传输控制协议)是位于OSI模型的传输层的一个核心协议。它通过滑动窗口机制来管理数据包的传输速率,并利用拥塞控制算法来避免网络过载,从而确保数据的可靠传输。TCP支持全双工通信,允许数据在两个方向上同时传输,使得双方可以在保持连接的同时,进行数据的发送和接收。

滑动窗口:是TCP确保数据传输效率和可靠性的关键,可以比喻为一个火车过隧道,隧道(网络带宽)的长度限制了火车(数据包)的数量。当火车成功穿越隧道(数据包确认被接受),新的火车(数据包)就可以进入隧道。这种机制帮助控制数据的流动速度和量,确认网络不会被过量的数据包淹没。

拥塞控制:可以比喻为一个交通灯系统,它监控整个网络的拥塞程度,根据当前网络的用塞成度来调整数据包的发送速率,当网络流量较轻时,它变绿灯允许更多的数据包通过,当网络流量较大时,他变红灯减少发送的数据包量,以防止数据丢失和重传。

TCP三次握手:首先客户端向服务端发送SYN(同步序列编号)报文,表示客户端希望开始通信,服务端收到报文后,回复ACK和SYN(确认应答和同步序列编号)的报文,即确认了收到了SYN报文,也表明服务端准备好通信,进入SYN_RECEIVED状态,客户端收到报文后,进入ESTABLISHED状态,向服务端发送ACK(确认应答)报文,确认收到了服务端的同步请求。这一系列交换完成后,客户端和服务端就可以正式开始通信,传输数据了。

TCP三次握手用于在客户端和服务端建立可靠连接,以便进行数据传输,这个过程包含以下三个步骤:

第一步:客户端发送一个SYN(同步序列编号)报文到服务端,携带客户端的初始序列号(比如100),表示客户端希望与服务端建立连接。可以比喻为打电话给服务端,并告知“我想开始通话,并从编号100开始计数”

第二步:服务端收到该SYN报文后,会向客户端发送ACK报文确认客户端的序列号(确认编号100+1),同时发送自己的SYN报文,包含服务端的初始序列号(比如300),准备好接受客户端从编号100开始的数据,并告知自己从300开始计数,表明服务端准备好开始通信。可以比喻为服务端回应:“我明白你从100开始计数,我也准备好了,从300开始计数”

第三步:客户端收到服务端发来的ACK和SYN报文后,发送一个ACK报文和序列号301作为回应,确认了服务端的序列号300。表示客户端准备好接受从编号300开始的数据。此时,标志着双方已准备就绪,可以比喻为:“好的,从你的300开始计数,我们可以开始通话了”

TCP四次挥手用于在客户端和服务端终止数据传输,关闭连接时,包含以下四个步骤:

第一步:客户端向服务端发送一个FIN报文,序列号为100,表明客户端已经没有数据发送了,希望终止连接。可以类比为电话通话中说:“我说完了,准备挂电话”

第二步:服务端收到FIN报文后,向客户端发送确认号为101的ACK报文作为回应,确认收到客户端的终止请求。此时,服务端可能还有数据等待发送,所以连接的这一方向不能立即关闭。可以类比为通话中的回应:“我知道你说完了,但请让我说完我的部分”

第三步:服务端向发送完所有待处理的数据后,向客户端发送一个FIN报文序列号为300,表示服务端的数据已经传输完毕了,可以终止该连接。可以类比为通话中:“我的话也说完了,可以挂断电话了”

第四步,客户端收到FIN报文后,向服务端发送确认号为301的ACK报文作为回应,确认了服务端的终止请求。在发送完这个报文后,客户端会进入一个等待状态(TIME_WAIT),等待两倍的报文最大生存时间,以确保服务端收到了这个报文,并允许网络中延迟的任何报文到达,然后彻底关闭连接。可以类比为:“我知道你也说完了,我要等一会确保没有消息遗漏,然后挂断”

UDP:UDP是一种位于传输层的全双工通信协议,它的无连接性质意味着数据包可以在不建立连接的情况下直接发送至接收方,从而降低了数据传输的延迟。然而,这种协议不保证数据包的顺序或确切到达,且不会对丢失的数据包进行重发,使其在需要实时性高于可靠性的应用场景中,如视频流、在线游戏和VoIP,表现出独特的优势。


:D 一言句子获取中...