一文带你了解tcp协议

目录

tcp协议

tcp协议的概念以及特点

tcp协议与udp协议的区别

tcp的三次挥手

tcp四次挥手

为什么会有2MSL的超时等待

总结

tcp协议

tcp协议的概念以及特点

TCP(传输控制协议)是一种在计算机网络中广泛使用的面向连接的协议。它提供了可靠的、有序的和基于字节流的数据传输。tcp协议也是在传输层中进行的

以下是 TCP 协议的一些关键特点:

  1. 面向连接:在进行数据传输之前,发送方和接收方需要建立一个连接。连接的建立是通过三次握手机制实现的,确保双方都愿意进行通信。

  2. 可靠性:TCP 提供可靠的数据传输机制,通过使用确认应答、序列号、超时重传和流量控制等技术来确保数据的可靠传输。它能够自动重传丢失的数据段,并按正确的顺序传递数据。

  3. 有序性:TCP 保证数据按发送顺序到达接收方。每个数据包都有一个序列号,接收方可以使用序列号来重新排序已接收的数据。

  4. 拥塞控制:TCP 使用拥塞控制机制来避免网络拥塞。它会根据网络的状况动态调整发送数据的速率,以避免网络过载。

  5. 双向通信:TCP 连接是全双工的,允许双方同时进行发送和接收数据的操作。

  6. 流量控制:TCP 使用滑动窗口机制来进行流量控制。接收方通过告知发送方自己当前可接收的数据量来控制发送数据的速率。

  7. 建立与释放连接:TCP 使用四次挥手机制来正常关闭连接。双方通信结束后,发送方和接收方会交换一系列的控制消息来协商关闭连接。

TCP 是一种可靠性较高、适用于可靠数据传输的协议。它在许多应用层协议中广泛使用,如 HTTP、FTP、SMTP 等。TCP 在网络通信中扮演着重要的角色,确保数据的可靠传输和有序交付。


tcp协议与udp协议的区别

TCP(传输控制协议)和 UDP(用户数据报协议)是在计算机网络中常见的两种传输层协议,它们有以下主要区别:

  1. 连接和无连接:TCP 是面向连接的协议,通信双方在发送数据之前需要先建立连接,然后进行可靠的数据传输。UDP 是无连接的协议,通信双方之间不需要建立连接,可以直接发送数据报。

  2. 可靠性:TCP 提供可靠的数据传输,通过确认应答、序列号、重传等机制确保数据的完整性和可靠性。UDP 不提供可靠性保证,数据报被发送之后,不会接收确认或进行重传,因此可能出现丢失、重复或乱序的数据。

  3. 有序性:TCP 保证数据按照发送的顺序进行接收。UDP 不保证数据报的有序性,接收方可能按照不同的顺序接收数据报。

  4. 拥塞控制:TCP 使用拥塞控制机制来避免网络拥塞,根据网络状况动态调整发送速率。UDP 不提供拥塞控制功能,发送方可以以任何速率发送数据,因此可能会导致网络拥塞。

  5. 数据量和性能:TCP 需要维护连接状态和数据传输的各种控制信息,因此头部较大,传输协议开销相对较高。UDP 的头部较小,传输开销较低,适合对实时性要求较高、传输量较小的数据。

  6. 应用场景:TCP 适合要求可靠传输的应用,例如文件传输、电子邮件等。UDP 适合实时性要求较高、丢几个包无所谓的应用,例如音频/视频流、游戏等。

综上所述,TCP 和 UDP 在连接性、可靠性、有序性、拥塞控制、开销和应用场景等方面存在显著差异。根据具体的需求和应用场景,选择适合的协议可以提高通信效率和可靠性。


tcp的三次挥手

三次握手是TCP(传输控制协议)建立连接时的一种具体过程。它确保客户端和服务器之间的通信双方都同意建立连接并能够进行数据传输。

名词描述:

  • seq(sequence number)用算法随机生成的序列号,将报文序列传输
  • SYN(synchronous) ,发起新连接
  • ack(acknowledgement number) 确认号 = seq + 1
  • ACK(acknowledgement) 确认序列号有效
  • Fin(finish) 关闭连接

  1.  第一次握手(SYN): 客户端发送一个带有 SYN(同步)标志的TCP段给服务器。这个段中的序列号(seq)是一个随机数,用于标识发送方的起始序列号。
  2. 第二次握手(ACK+SYN): 服务器收到客户端的TCP段后,会发送一个带有 SYN 和 ACK(确认)标志的TCP段作为应答。这个段中的序列号seq是服务器的起始序列号(seq),确认号(ack)是客户端序列号加1。
  3. 第三次握手(ACK): 客户端收到服务器的TCP段后,发送一个带有ACK标志的TCP段给服务端,来确认服务器应答。这个段中的序列号seq = 客户端的seq + 1 确认号ack = 服务端的seq + 1, 表示客户端已经准备好进行数据传输。

通过这个三次握手的过程,客户端和服务器都能够确认对方的请求和应答,并建立起可靠的连接。这个过程保证了双方的通信能够正常进行,同时也能确保每个方向上的序列号的正确性。一旦完成三次握手,双方就可以开始进行数据的传输。

需要注意的是,由于网络的延迟和丢包等因素,可能造成握手过程的延迟或中断。因此,TCP协议会设置一定的超时重试机制,以确保握手过程的可靠性。


tcp四次挥手

四次挥手是在 TCP 协议中用于关闭连接的过程,在双方完成数据传输后,通过一系列的交互来确保双方都完成了数据的传输并关闭连接。

  1. 第一次挥手(FIN):当一客户端决定关闭连接时,它发送一个带有 FIN(Finish)标志的 TCP 段给服务端。表示客户端不再发送数据,但仍然可以接收数据。这个段的序列号(seq)表示发送客户端最后一个发送的字节的序列号。此时,客户端进入FIN_WAIT_1等待状态

  2. 第二次挥手(ACK):服务端收到第一次挥手的段后,发送一个带有 ACK 标志的 TCP 段作为应答,确认收到关闭请求,这个 ACK 报文段不含任何数据。这个段的序列号(seq)表示服务端希望再次接收的字节的序列号,而确认号(ack)表示下一个期望接收的字节的序列号。在这个阶段,会有一段时间的等待,服务端可以将未完成的数据发送给客户端。等待结束后,服务端确认并同意客户端的关闭请求

  3. 第三次挥手(FIN) : 服务端也决定关闭连接时,它发送一个带有 FIN 标志的 TCP 段给客户端。表示接收方不再发送数据。服务端进入LAST_ACK状态,等待客户端确认关闭请求,并且服务端不会再发送数据了,可以接受数据

  4. 第四次挥手(ACK): 客户端收到第三次挥手的 TCP 段后,此时客户端的状态为TIME_WAIT会进入一个到一个超时等待的过程2MSL(两倍的最大数据包生存期) , 如果在2MSL时间内,客户端没有再收到数据,客户端会发送一个带有 ACK 标志的 TCP 段作为应答,确认接收到服务器的关闭请求。此时双方连接断开

通过这个四次挥手的过程,双方都能够确认对方的关闭请求和应答,最终完成连接的关闭。这个过程保证了双方的数据传输完整性和连接的正常关闭。


为什么会有2MSL的超时等待

2MSL(Maximum Segment Lifetime)是指TCP连接关闭后等待的时间,即两倍的报文段最大生存时间。在四次挥手过程中,当客户端发送最后一个ACK报文段确认对方的关闭请求后,会进入TIME_WAIT状态,并等待一段时间持续2MSL的时间。

2MSL的超时等待有以下几个目的和好处:

  1. 确保最后一个ACK能够可靠地到达。当一方发送最后一个ACK报文段时,可能会因为网络延迟、传输丢失或乱序等问题导致对方无法正确接收到。2MSL的等待期间,使得所有可能的重复报文都能够被丢弃,确保对方接收到最后的ACK。

  2. 防止旧的报文段在新连接中被接收。在之前的连接关闭后的一段时间内,可能仍然存在网络上滞留的旧报文段。如果客户端或服务器在短时间内建立了一个使用相同IP地址和端口号的新连接,旧的报文段可能会被错误地接收并导致混乱。通过等待2MSL,可以确保旧的报文段都被丢弃,避免对新连接的干扰。

  3. 允许可能延迟的报文段从网络中消失。2MSL的时间等待可以确保网络中所有相关连接的报文段都被丢弃,避免将旧的报文段误认为是当前连接的一部分。

如果没有2MSL的超时等待时间,假设ACK包丢失,那么服务端接收不到ACK,那么服务端的关闭请求就无法同意,那么服务端就无法断开了, 有了2MSL的超时等待时间,当ACK包丢失时,客户端会重新上传。(参考满哥的http://t.csdn.cn/1AV08)

总结

tcp协议,无论前后端都必须掌握,tcp协议也是面试常被问到的题目,希望能够有所帮助!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVS(Linux Virtual Server)是一种基于 Linux 系统的负载均衡集群技术,它主要用于将网络流量分发到多个服务器上,以提高系统的可靠性、可扩展性和性能。 LVS 集群一般包括四个组件:调度器(LVS 调度器)、前端服务器(负载均衡器)、后端服务器(真实服务器)和存储服务器(用于共享数据)。首先,调度器接收来自客户端的请求,然后根据配置的调度算法(如轮询、加权轮询、最小连接数等)将请求分发到多个前端服务器。前端服务器接收到请求后,通过相应的负载均衡算法将请求转发到后端的真实服务器上进行处理。在整个过程中,存储服务器用于存放共享的数据,以确保所有的真实服务器都能获取到相同的数据,并提供一致的服务。 LVS 集群的优点是能够提高网站的稳定性和可靠性,当某一台服务器出现故障时,调度器会自动将请求分发到其他可用的服务器上,从而保证服务的连续性。同时,LVS 集群还能够通过增加前端服务器和后端服务器的数量来提高系统的性能和吞吐量,以满足不断增长的用户需求。 在实际应用中,LVS 集群需要合理配置,包括选择合适的调度算法、调整每台服务器的权重、选择适当的硬件设备等。此外,还需要及时监控集群的运行状态,及时发现和解决故障,以确保整个系统的正常运行。 总的来说,LVS 负载均衡集群是一种强大而高效的集群技术,能够帮助企业提高系统的可靠性和性能,是现代互联网应用中不可或缺的重要组成部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值