计网 - TCP扫盲

文章目录


知识点

TCP头格式

TCP头部包含多个字段,其中一些是必需的,而另一些是可选的。

常见的字段包括源端口号、目标端口号、序列号、确认号、窗口大小、校验和等。

每个字段都有特定的长度和作用,这些字段一起构成了TCP数据包的头部信息。


TCP有限状态机(FSM)

TCP连接在其生命周期内经历不同的状态,这些状态构成了TCP有限状态机。

常见的状态包括

  • CLOSED(连接未打开)
  • LISTEN(等待连接请求)
  • SYN_SENT(发起连接请求)
  • SYN_RECEIVED(收到连接请求)
  • ESTABLISHED(连接已建立)
  • FIN_WAIT_1
  • FIN_WAIT_2
  • LAST-ACK
  • TIME-WAIT
  • CLOSING
  • CLOSE-WAIT

状态之间的转换遵循一定的规则,形成了TCP连接的生命周期。


为何需要TCP协议

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。

它提供了错误检测、流量控制、拥塞控制等机制,确保数据的可靠传输。TCP适用于需要可靠性和有序性的应用场景,如文件传输、网页访问等。


TCP的定义

TCP是一种面向连接的协议,它提供可靠的、有序的数据传输。通过使用序列号、确认号、校验和等机制,TCP确保数据的完整性和正确性。它在IP协议的基础上,为应用程序提供了可靠的数据传输服务。


TCP连接的概念

TCP连接是指在通信的两端之间建立的虚拟通道,通过这个通道,数据可以在两端之间可靠地传输。TCP连接的建立经历三次握手,而连接的终止则经历四次挥手。


如何唯一确定一个TCP连接

一个TCP连接可以由源IP地址、源端口号、目标IP地址、目标端口号四元组唯一确定。这意味着在网络中,每个连接都可以通过这四个参数唯一标识。

因协议都是TCP,所以就简化成了四元组。


TCP vs UDP

  • TCP是面向连接的,提供可靠的数据传输,确保数据的有序性和完整性。UDP是面向无连接的,提供不可靠的数据传输,不保证数据的有序性和完整性。
  • TCP使用三次握手建立连接,四次挥手终止连接,而UDP没有连接的建立和终止过程。
  • TCP有拥塞控制和流量控制机制,适用于对可靠性要求较高的应用。UDP没有这些机制,适用于实时性要求较高的应用,如视频流和语音通话。

TCP拥塞控制

TCP拥塞控制是一种机制,用于防止网络拥塞并调整发送速率,以确保网络中的流量不超过其容量。拥塞控制是端到端的,它通过一系列算法和策略来动态调整发送方的速率,以适应网络的变化。

主要的TCP拥塞控制算法包括:

  1. 慢启动(Slow Start): 在连接开始时,发送方逐渐增加发送速率,直到发现网络的容量。
  2. 拥塞避免(Congestion Avoidance): 一旦网络达到拥塞点,发送方将减慢发送速率,以避免加剧拥塞。
  3. 快速重传(Fast Retransmit): 接收方发现缺失的数据后,会立即通知发送方重传,而不必等到定时器超时。
  4. 快速恢复(Fast Recovery): 在快速重传后,发送方进入快速恢复状态,逐渐增加发送速率。

TCP流量控制

TCP流量控制是为了防止快速发送方压倒缓慢接收方的机制。它通过使用窗口大小来实现,接收方通过通告窗口大小来告知发送方它还能接收多少数据。发送方根据窗口大小来控制发送的速率,以确保不超过接收方的处理能力。

流量控制的关键是使用滑动窗口机制,其中窗口大小动态调整以适应接收方的处理能力。如果窗口大小为零,发送方将停止发送数据,直到接收方准备好接收更多数据。

综合来说,TCP拥塞控制和流量控制是为了确保网络中的数据传输既可靠又高效。拥塞控制防止网络过载,而流量控制确保发送方不会压倒接收方。


导图


相关推荐
python算法(魔法师版)20 分钟前
网络编程入门(一)
大数据·网络·网络协议·计算机网络
网络小白不怕黑27 分钟前
Python Socket编程:实现简单的客户端-服务器通信
服务器·网络·python
君鼎3 小时前
muduo库TcpServer模块详解
linux·网络·c++
开***能3 小时前
包装设备跨系统兼容:Profinet转Modbus TCP的热收缩包装机改造方案
服务器·网络·tcp/ip
zyp2468104 小时前
深入理解TCP与UDP:协议对比、头部结构与连接管理
网络协议·tcp/ip·udp
卡戎-caryon4 小时前
【MySQL】02.数据库基础
linux·网络·数据库·mysql·存储引擎
技术宝哥4 小时前
从另一个视角理解TCP握手、挥手与可靠传输
网络·网络协议·tcp/ip
李白你好4 小时前
H3C网络设备(交换机、路由器、防火墙)常用命令整理
运维·网络·智能路由器
終不似少年遊*5 小时前
【从基础到模型网络】深度学习-语义分割-基础
网络·人工智能·深度学习·语义分割·卷积·上采样
卡戎-caryon5 小时前
【Linux网络与网络编程】12.NAT技术&&内网穿透&&代理服务
linux·运维·服务器·网络·网络协议·https