当前位置: 首页 > news >正文

打工人日报#20251029

打工人日报#20251029

TCP 协议介绍

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接、可靠的传输层协议,在 TCP/IP 协议族中扮演着核心角色,为应用层提供了稳定的数据传输服务。

1. TCP 协议的特点

  • 面向连接:在数据传输之前,TCP 需要在发送方和接收方之间建立一条逻辑连接。这个过程通过三次握手来完成,确保双方都做好数据传输的准备。连接建立后,数据在这条连接上有序地传输。传输结束后,通过四次挥手来关闭连接,释放相关资源。例如,在进行文件传输时,TCP 会先建立连接,保证文件数据能够准确无误地按顺序传输到接收方。
  • 可靠传输:TCP 通过一系列机制来保证数据的可靠传输。它使用序列号对每个发送的数据段进行编号,接收方通过确认应答(ACK)机制告知发送方已成功接收的数据。如果发送方在一定时间内没有收到确认应答,就会重传数据。此外,TCP 还会对数据进行校验和计算,以检测数据在传输过程中是否出错。例如,在网络不稳定的情况下,部分数据段可能丢失,TCP 的重传机制会确保这些数据段最终能被接收方正确接收。
  • 流量控制:为了防止发送方发送数据过快,导致接收方来不及处理而丢失数据,TCP 采用流量控制机制。接收方通过在确认应答中携带自己的接收窗口大小信息,告知发送方自己当前能够接收的数据量。发送方根据接收方的接收窗口大小来调整自己的发送速率。比如,当接收方处理数据的速度较慢时,会减小接收窗口大小,发送方收到这个信息后就会降低发送速率。
  • 拥塞控制:TCP 能够感知网络的拥塞情况,并采取相应措施来避免网络拥塞。当网络出现拥塞时,路由器可能会丢弃数据包,导致发送方重传数据,进一步加剧拥塞。TCP 通过慢启动、拥塞避免、快速重传和快速恢复等算法来调整发送窗口大小,从而控制数据发送速率,缓解网络拥塞。例如,在网络拥塞时,TCP 会逐渐降低发送窗口大小,减少数据发送量,直到网络状况改善。

2. TCP 数据段格式

  • 源端口号(Source Port):2 字节,标识发送端应用程序使用的端口号,用于区分同一主机上的不同应用程序。
  • 目的端口号(Destination Port):2 字节,指定接收端应用程序的端口号,确保数据能够准确交付给目标应用程序。
  • 序列号(Sequence Number):4 字节,用于标识 TCP 数据段在数据流中的位置。在连接建立时,发送方会随机选择一个初始序列号,后续发送的数据段序列号依次递增。接收方根据序列号对数据进行排序和重组,确保数据的顺序性。
  • 确认号(Acknowledgment Number):4 字节,是接收方期望接收的下一个数据段的序列号。当接收方成功接收数据后,会在确认应答中返回确认号,告知发送方已成功接收的数据位置,让发送方知道可以继续发送后续数据。
  • 数据偏移(Data Offset):4 位,以 4 字节为单位,表示 TCP 首部的长度。由于 TCP 首部可能包含选项字段,长度是可变的,数据偏移字段用于指示首部的实际长度,从而确定数据部分的起始位置。
  • 保留(Reserved):6 位,保留字段,目前未使用,通常设置为 0。
  • 控制位(Control Bits):6 位,包含多个控制标志位,用于控制 TCP 连接的建立、数据传输和连接关闭等操作。常见的控制位包括:
  • SYN(Synchronize):同步序列号,用于连接建立阶段。SYN = 1 表示这是一个连接请求或连接接受报文。
  • ACK(Acknowledgment):确认标志,ACK = 1 时,确认号字段有效,表明接收方已成功接收数据。
  • FIN(Finish):结束标志,FIN = 1 表示发送方已完成数据发送,请求关闭连接。
  • RST(Reset):复位标志,RST = 1 时,表示连接出现异常,需要重置连接。
  • 窗口大小(Window Size):2 字节,接收方通过该字段告知发送方自己当前的接收窗口大小,即还能接收多少字节的数据。发送方根据这个窗口大小来调整自己的发送速率,实现流量控制。
  • 校验和(Checksum):2 字节,用于检测 TCP 数据段在传输过程中是否发生错误。校验和的计算包括 TCP 首部、数据部分以及一个伪首部(包含源 IP 地址、目的 IP 地址、协议字段和 TCP 长度等信息)。接收方通过重新计算校验和来验证数据的完整性。
  • 紧急指针(Urgent Pointer):2 字节,当 URG 标志位为 1 时,紧急指针字段有效。它指向紧急数据的末尾,告诉接收方在数据流中紧急数据的位置。
  • 选项(Options):可变长度,用于一些可选功能,如最大段大小(MSS)协商、窗口扩大因子、时间戳等。选项字段以 32 位为边界进行填充,不足部分补 0。

3. TCP 连接的建立与关闭

  • 连接建立(三次握手):
  • 第一次握手:客户端向服务器发送一个 SYN 报文段,其中包含客户端随机生成的初始序列号(ISN),表示客户端希望与服务器建立连接。
  • 第二次握手:服务器接收到客户端的 SYN 报文段后,向客户端发送一个 SYN + ACK 报文段。该报文段中的 SYN 标志位为 1,确认号为客户端的序列号加 1,同时服务器也随机生成自己的初始序列号,告知客户端自己也准备好建立连接。
  • 第三次握手:客户端接收到服务器的 SYN + ACK 报文段后,向服务器发送一个 ACK 报文段,确认号为服务器的序列号加 1,表明客户端已收到服务器的连接确认。此时,双方的连接建立成功,可以开始数据传输。
  • 连接关闭(四次挥手):
  • 第一次挥手:主动关闭方(通常是客户端)发送一个 FIN 报文段,FIN 标志位为 1,表示主动关闭方已完成数据发送,请求关闭连接。
  • 第二次挥手:被动关闭方(通常是服务器)接收到 FIN 报文段后,发送一个 ACK 报文段,确认号为主动关闭方的序列号加 1,表明已收到关闭请求,但被动关闭方可能还有数据需要继续发送,所以不会立即关闭连接。
  • 第三次挥手:当被动关闭方完成数据发送后,向主动关闭方发送一个 FIN 报文段,请求关闭连接。
  • 第四次挥手:主动关闭方接收到被动关闭方的 FIN 报文段后,发送一个 ACK 报文段,确认号为被动关闭方的序列号加 1,然后等待一段时间(2MSL,Maximum Segment Lifetime,最大报文生存时间)后关闭连接。被动关闭方收到 ACK 报文段后,也关闭连接。

4. TCP 的应用场景

  • 文件传输:如 FTP(文件传输协议)和 SFTP(安全文件传输协议),需要确保文件的完整性和准确性,TCP 的可靠传输特性能够保证文件在传输过程中不丢失、不损坏,并且按顺序到达接收方。
  • 电子邮件:SMTP(简单邮件传输协议)用于发送邮件,POP3(邮局协议版本 3)和 IMAP(互联网消息访问协议)用于接收邮件,这些协议都依赖 TCP 来保证邮件数据的可靠传输,避免邮件内容出现错误或丢失。
  • 网页浏览:HTTP(超文本传输协议)在传输网页数据时,通常使用 TCP 协议。浏览器与服务器之间通过 TCP 连接进行通信,确保网页的文本、图片、视频等资源能够完整、正确地传输到浏览器端显示。

阅读

《晚熟的人》
晚熟的人似乎也是不靠谱的!
在这里插入图片描述

http://www.dtcms.com/a/544558.html

相关文章:

  • (107页PPT)食品零售行业数字化转型解决方案参考(附下载方式)
  • 【打靶日记】VulNyx 之 Lower5
  • Linux小课堂: LNMP架构下Discuz论坛部署全流程解析
  • 徐州网站建设推广做餐饮企业网站的费用
  • 网站搭建合同基于漏斗模型网站关键路径分析
  • 利用腾讯开源 Hunyuan3D 2.1:在 DigitalOcean GPU Droplet 上快速搭建 3D 模型
  • 【开题答辩全过程】以 多媒体素材管理系统为例,包含答辩的问题和答案
  • 聊聊高并发访问遇到过期的缓存项测试策略
  • 目标检测算法与原理(一):迁移学习
  • 第三章 线性模型
  • 【WordPress】Nova WordPress 主题:为内容创作者打造的极致体验
  • 网站一般几年创新的沈阳网站建设
  • 惠普电脑网站建设策划方案h5模板下载有哪些网站
  • 怎么做网站seo山东省旅游网站建设
  • web网页,在线%抖音,舆情%分析系统demo,基于python+web+echart+nlp+知识图谱,数据库mysql
  • 把浅色的pdf文件加深
  • Actix-Web 框架实战:构建高性能 RESTful API 服务
  • 边缘计算中针对不同类型的任务(如分类、回归)评估指标
  • 【16】C语言-编辑`task.json`文件以改变警告等级
  • Rust高性能优化与零拷贝技术深度实践
  • Linux-Redhat系统启动读取文件流程
  • React 10
  • 京东方 EV101WXM-N10 工业液晶模组技术摘要
  • Deep End-to-End Alignment and Refinement for Time-of-Flight RGB-D modules复现
  • Java-163 MongoDB 生产安全加固实战:10 分钟完成认证、最小权限、角色详解
  • MinIO 与云原生_现代化对象存储解决方案
  • 【C语言实战(63)】从0到1:51单片机GPIO控制实战秘籍
  • 金仓替代MongoDB:互联网医院聊天脱敏实战
  • 使用 ESLint + Prettier + Husky
  • mongodb备份脚本(单机+副本集)