【Linux】 -- TCP协议 (一)

TCP协议是一种可靠的传输协议,其可靠性主要通过确认应答机制、超时重传、连接管理和窗口大小等机制实现。冯诺依曼体系结构中,硬件间的通信也需要协议,但网络通信因长距离传输的不可靠性,需要TCP这样的协议来确保数据的正确传输。TCP报头包括多个字段,如序号、确认序号和标志位,用于实现其复杂而有效的通信策略。此外,TCP还使用窗口大小来控制发送速率,避免缓冲区溢出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tcp协议

TCP全称为 “传输控制协议”(Transmission Control Protocol)

TCP协议被广泛应用 其根本原因就是提供了详尽的可靠性保证 基于TCP的上层应用非常多 比如HTTP、HTTPS、FTP、SSH、MySQL等。

可靠性

为什么网络中会存在不可靠

冯诺依曼体系结构

在这里插入图片描述
这里的 输入设备 内存 输出设备 cpu这些硬件都是相互独立的

如果它们之间要进行数据交互 就必须要想办法进行通信 这几个设备是用“线”连接起来的

其中连接内存和外设之间的“线”叫做 IO总线 而连接内存和CPU之间的“线”叫做 系统总线

由于这几个硬件设备都是在一台机器上的 因此这里传输数据的“线”是很短的 传输数据时出现错误的概率也非常低

但如果要进行通信的各个设备相隔千里 那么连接各个设备的“线”就会变得非常长 传输数据时出现错误的概率也会大大增高 此时要保证传输到对端的数据无误 就必须引入可靠性

总之网络不可靠的根本原因就是 长距离传输数据使用的‘线’太长了 所以说数据在长距离传输的时候可能会遇到一些错误 而TCP就是在这种背景下诞生的 TCP就是一种可靠的协议

  • 单独的一台计算机可以看作成一个小型的网络 计算机上的各种硬件设备之间实际也是在进行数据通信 并且它们在通信时也必须遵守各自的通信协议 只不过它们之间的通信协议更多是描述一些数据的含义

为什么会存在UDP协议?

TCP协议是一种可靠的协议 而UDP是一种不可靠的协议

TCP是一种可靠的协议 这也就意味着TCP需要做更多的工作来保证数据传输的可靠 并且引起不可靠的因素越多 我们要保证可靠的成本就越高 其中常见的不可靠情况有丢包 乱序等 而我们的TCP由于要保证可靠所以说要想办法解决这些问题

UDP协议是不可靠的协议 这也就意味着UDP不需要考虑数据传输时需要处理的问题 因此UDP无论是使用还是维护都足够简单

但是虽然说TCP的使用比UDP更加复杂 但是TCP的效率缺不比UDP低

如果我们严格要求了数据在传输过程中可靠性 那么我们就必须采用TCP协议 如果说允许数据有一点点丢包的话我们就可以使用UDP协议

TCP的协议格式

TCP协议格式如下:
在这里插入图片描述

TCP报头当中各个字段的含义如下:

  • 源/目的端口号:表示数据是从哪个进程来 到发送到对端主机上的哪个进程
  • 32位序号/32位确认序号:分别代表TCP报文当中每个字节数据的编号以及对对方的确认 是TCP保证可靠性的重要字段
  • 4位TCP报头长度:表示该TCP报头的长度 以4字节为单位
  • 6位保留字段:TCP报头中暂时未使用的6个比特位
  • 16位窗口大小:保证TCP可靠性机制和效率提升机制的重要字段
  • 16位检验和:由发送端填充 采用CRC校验 接收端校验不通过 则认为接收到的数据有问题 (检验和包含TCP首部+TCP数据部分)
  • 16位紧急指针:标识紧急数据在报文中的偏移量 需要配合标志字段当中的URG字段统一使用
  • 选项字段:TCP报头当中允许携带额外的选项字段 最多40字节

TCP报头当中的6位标志位:

  • URG:紧急指针是否有效
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值