TCP协议基础

news2025/5/17 13:18:34

在这里插入图片描述

一: TCP协议是什么?

  • TCP协议是基于面向连接可靠传输基于字节流的传输层通信协议

1. 面向连接

TCP协议是一种面向连接的协议,意味着在双方在建立数据传输之前,需要进行一个逻辑上的连接,且是一对一的连接,这种连接的建立和维护使得数据可以在发送和接受中能够进行可靠和有序的传输

UDP协议是无连接协议,可以进行一对多的连接通信

2. 可靠传输

TCP可靠传输是基于以下几点机制达成的

  • 连接的建立和终止:TCP在数据传输之前需要建立逻辑上的连接,在传输完成后会进行连接的断开,这样确保数据在开始时和结束时的完整性
  • 流量控制: TCP使用滑动窗口机制来控制发送方的数据流量。接收方可以通知发送方它可以接受的数据量,以防止发送方发送过多的数据导致接收方缓冲区溢出
  • 拥塞控制: TCP具有拥塞控制机制,可以在网络出现拥塞时降低数据发送速率,以避免网络拥塞问题进一步加剧
  • 确认与重传机制:发送方向接收方发送数据,在一段时间内若为收到接受方的确认,会认为该数据在传输中丢失,会触发数据的重传机制。这确保了数据在丢失后仍会被重新发出
  • 序列号与顺序控制:TCP会为每一个发送的数据段分配唯一的序列号,接收方会通过序列号将发送的数据片按重组成正确的顺序,从而避免了数据的乱序
    • 校验和:TCP首部有个校验和控制 字段,用于检测数据是否在传输中被损坏或者修改
    • 校验和的计算基于发送方的TCP首部内容,包括源端口、目标端口、序列号、确认号、控制位等等。这些字段的数值会被计算成一个校验和值,并附加在TCP首部中。接收方在接收到TCP首部后,会重新计算校验和并与传输过来的校验和值进行比较。如果两者不匹配,接收方可以推断数据在传输过程中发生了错误。

3. 字节流

字节流指的是在数据的传输中,数据被视为连续的字节序列,而不是离散的数据块

  • TCP并不关心应用程序中数据的分块结构,它只负责在发送方和接收方之间传输字节数据
  • 这种字节流的特性使得TCP适用于各种应用,包括传输文件、网页内容、视频流等。应用程序可以在发送数据时将其分块,但在TCP层面,这些数据将会被重新组织成一个连续的字节流,然后在接收端按照顺序重新分块以供应用程序处理

二:TCP首部格式

TCP/IP# TCP头部选项功能详解_tcp选项长度_arvin_xiaoting的博客-CSDN博客

  • 源端口号(Source Port):16位,指示发送方的应用程序使用的端口号。
  • 目的端口号(Destination Port):16位,指示接收方的应用程序期望使用的端口号。
  • 序列号(Sequence Number):32位,用于对TCP数据段进行编号,以便接收方按正确的顺序重组数据。
  • 确认号(Acknowledgment Number):32位,指示接收方期望下一个接收的数据的序列号,用于确认已经成功接收到的数据。
  • 数据偏移(Data Offset):4位,指示TCP头部的长度,以32位字(4字节)为单位计算。
  • 控制位(Control Bits):6位,包含了TCP控制信息,如SYN、ACK、FIN等标志位,用于控制连接的建立、数据传输和连接的释放等。
  • 窗口大小(Window Size):16位,指示发送方允许接收方缓存的字节数量,用于流量控制。
  • 校验和(Checksum):16位,用于检测TCP头部在传输过程中的错误。
  • 紧急指针(Urgent Pointer):16位,指示紧急数据的末尾位置,用于通知接收方需要紧急处理的数据。
  • 选项和填充(Options and Padding):TCP头部可包含选项字段和填充字段,用于扩展头部功能或填充字节,可变长度。

2.1 如何计算TCP首部长度?

  • 通过数据偏移控制字段计算

    TCP首部的长度是通过数据偏移控制字段来表示的,其表示TCP数据段部分相较于整个TCP报文起始位置的偏移量大小,这个偏移量是以4字节单位计算的

    • 所以 TCP首部的长度 = 数据偏移控制字段的值 * 4字节

注意

尽量避免通过IP首部信息进行计算TCP负载数据长度

  • 由于TCP和IP协议是两个独立的协议,在网络通信中各自负责不同的任务
  • TCP协议无法直接从IP首部中获取对应的数据
  • 在传输过程中,应用程序会在TCP首部中的数据偏移字段和TCP数据段的长度中指示负载数据的实际长度

2.2 TCP目的端口号和IP目的地址

  • TCP首部中包含源端口和目的端口号字段,是16位的
  • IP首部中包含源地址和目的地址,是32位的

访问一个网址时,IP地址 和 对应端口号显示的并不是32位的和16位的二进制数,例如http: // 127.0.0.1 : 5173 /

  • IP地址: 在IPv4协议中,IP地址是32位的,通常用四个8位的数字(0-255的范围)表示,每个数字之间使用点号(.)分隔
  • 端口号: 端口号是16位的整数,用来标识应用程序或服务的通信端口。它可以是0到65535之间的值。例如,“:5173” 表示连接的目标端口号是5173。
    • 实际的通信过程中,操作系统和网络设备会将IP地址和端口号转化为相应的二进制格式,以进行数据的传输和路由

2.3 什么是TCP连接?

用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括 Socket、序列号和窗口大小称为连接。

TCP连接是一种虚拟的通信路径,用于在网络上的两台计算机之间传输数据

  • Socket: Socket是一种用于网络通信的抽象概念,它可以被看作是一个端点,用于标识网络中的一台计算机上的进程或应用程序。一个Socket由IP地址和端口号组成,形如"IP地址:端口号"。在TCP连接中,客户端和服务器分别使用Socket来识别彼此,建立连接,并进行数据的发送和接收。
  • 序列号: TCP协议使用序列号来标识发送和接收的数据段。发送方为每个数据段分配一个唯一的序列号,接收方根据序列号来重新组装数据段,保证数据的顺序性。
  • 窗口大小: 窗口大小是TCP流量控制的一部分,用于控制发送方发送数据的速率,以适应接收方的处理能力。窗口大小表示接收方还有多少可用的缓冲区空间来接受更多的数据。通过调整窗口大小,可以防止发送方过快地发送数据,导致接收方的缓冲区溢出。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SCFMipms-1693303535358)(https://wximg.eefocus.com/forward?url=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FEvvXlctHqffXHrJgE6S2okca8DkESvf8kRd7XRyiaRrIjNZpMibWqYtahRNSK2J8g6S8X1ABL40jdD5a97RfgAuA%2F640%3Fwx_fmt%3Djpeg&s=e24da3)]

三:IP协议和TCP协议联合工作

  • 在网络传输中,通常同时使用IP协议和TCP协议进行工作的
  • IP协议负责将数据包在网络中从一个计算机传输到另一个计算机中
  • TCP协议负责在这个传输过程中,建立可靠的连接和可靠的数据传输

3.1 访问网站时的联合工作

IP协议和TCP协议通常是一起使用的,以实现在网络中的可靠数据传输。它们在不同层级上执行不同的任务,共同构成了网络通信的基础。

  • DNS解析:当我们键入网址,计算机会向DNS服务器,查询该域名的IP地址,涉及到IP协议的工作,来找到目标的IP地址
  • TCP建立连接:直到目标的IP地址,计算机会使用TCP协议与目标网站建立可靠连接。涉及到IP地址和端口连接的过程,确保你的计算机与目标网站可进行数据传输
  • 数据传输:TCP建立连接后,要与目标网站进行数据传输,TCP协议负责将数据分割成数据段,并为每个数据段添加确认号,序列号,达成数据的可靠传输
  • IP传输:TCP将数据段交给IP协议,然后IP协议负责将数据段从你的计算机发送给目标的服务器,经过多个中间路由和网络设备
  • TCP数据重组:目标服务器通过IP协议获得数据段,通过TCP协议将数据段的按照序列号重组数据恢复正确顺序,获得原始的数据流
  • 数据响应: 目标服务器通过TCP协议将响应数据发送回您的计算机,经过类似的过程。

四:UDP协议是什么

UDP(User Datagram Protocol)是一种在计算机网络中使用的传输层协议,与TCP一样属于传输层的两个主要协议之一。不同于TCP的面向连接特性,UDP是一种无连接的、简单的协议,它主要用于支持实时性要求高、对数据可靠性要求较低的应用。

  • 无连接性: UDP协议不需要在通信开始之前建立连接,通信双方可以直接开始传输数据。这使得UDP的传输过程更加轻量和快速,但也导致了数据传输过程中的不可靠性。
  • 不可靠性: UDP不提供数据的可靠传输,这意味着发送的数据包可能会在传输过程中丢失、重复、乱序等。UDP不执行像TCP那样的序列号和确认号机制,也不会进行自动重传。
  • 简单: UDP头部相对较短,仅包含源端口、目的端口、长度和校验和等基本信息,这使得UDP在处理速度上更快。
  • 实时性: 由于UDP的无连接性和不可靠性,它更适用于那些需要实时性、低延迟的应用,如实时音视频传输、在线游戏等。
  • 广播和多播: UDP支持广播和多播,使得一个主机可以向多个目标主机发送相同的数据。
  • 应用场景: 由于UDP的特性,它适用于那些对数据完整性和可靠性要求较低的应用,例如音频和视频流传输、DNS查询、实时通信等。

4.1 UDP首部格式

UDP · GitBook

4.2 TCP和UDP的区别

  • 连接性:
    • TCP:是一种面向连接的协议,它在通信的开始和结束时都需要建立和终止连接。数据传输前需要建立连接,传输结束后需要释放连接。
    • UDP:是一种无连接的协议,它不需要事先建立连接或释放连接。每个UDP数据包都是独立的,它们之间没有直接的关系。
  • 可靠性:
    • TCP:提供可靠的数据传输。它通过确认、重传、序列号等机制确保数据的可靠性和顺序性,但这也导致了一些额外的开销。
    • UDP:不提供数据传输的可靠性保证。数据包在传输过程中可能丢失、重复或乱序,因此应用程序需要自行处理这些情况。
  • 数据包大小:
    • TCP:由于TCP有额外的头部信息用于管理连接、确认等,它的头部开销比较大。因此,对于较小的数据包,TCP的开销可能会相对较高。
    • UDP:UDP的头部开销相对较小,适用于传输较小的数据包。
  • 流量控制和拥塞控制:
    • TCP:具有流量控制和拥塞控制机制,以避免数据过载导致网络拥塞。这使得TCP更适合对网络质量要求较高的应用。
    • UDP:不具备流量控制和拥塞控制机制,数据传输的速率受限于应用程序的设计和网络的状况。
  • 适用场景:
    • TCP:适用于需要可靠传输、数据顺序和错误检测的应用,如网页浏览、文件下载等。
    • UDP:适用于实时性要求较高、且能容忍少量数据丢失的应用,如在线游戏、实时视频传输等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/944846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL的mysql-bin.00xx binlog日志文件的清理

目录 引言手工清理配置自动清理 引言 公司一个项目生产环境mysql数据盘占用空间增长得特别快,经过排查发现是开启了mysql的binlog日志。如果把binlog日志关闭,如果操作万一出现问题,就没有办法恢复数据,很不安全,只能…

手机实景无人直播应该如何操作?

实景无人直播是一种创新的直播方式,通过利用实景场景进行直播,为观众带来真实、沉浸式的观赏和参与体验。本文将深入探讨实景无人直播的技术操作和商业思考,帮助读者全面了解如何搭建和运营这一新型直播模式。 一、实景无人直播的技术操作…

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom)

文章目录 前言参考目录版本说明Windows 部署 seata-server1:下载压缩包2:文件存储模式3:db 存储模式3.1:建表3.2:修改配置文件3.3:启动脚本4:源码部署 Docker 部署 seata-server (基…

报名开启!2023 SuperMap开发者大会全议程揭幕

2023年9月13日-15日,2023 SuperMap开发者大会(2023 SuperMap Developer Conference,简称SDC 2023)将在线举办,聚焦地理空间智能和GIS前沿技术,与全体开发者一起,探寻利用新技术简化开发流程的方法,商讨如何…

【pyqt5界面化开发-5】网格布局(九宫格)界面

一、网格布局 需要模块:QGridLayout 代码 import sys from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QDesktopWidget, QHBoxLayout, QVBoxLayout, QGroupBox, QRadioButton, QGridLayoutc…

集创北方ICN6211 是一款MIPIDSI转RGB视频桥接IC

ICN6211 1.描述: ICN6211是一个桥接芯片,它接收MIPIDSI输入并发送RGB输出。MIPIDSI最多支持4个车道, 每个车道的最大运行频率为1Gbps;总最大输入带宽为4Gbps;并且还支持MIPI定义的ULPS(超 低功耗状态&a…

企业级数据共享规模化模式

数据共享正在成为企业数据战略的重要元素。对于公司而言,Amazon Data Exchange 这样的亚马逊云科技服务提供了与其他公司共享增值数据或从这些数据获利的途径。一些企业希望有一个数据共享平台,他们可以在该平台上建立协作和战略方法,在封闭、…

低功耗低成本BLE发射器

低功耗低成本BLE发射器MG223基于巨微薪火架构的蓝牙射频、基带和协议栈,根据自研蓝牙基带和蓝牙5.1广播的特点,做了面向无线传感器的简化和创新,使之更加适合广泛的轻量级蓝牙无线传感的应用。MG223符合蓝牙5.1广播发射规范,现已获…

44、基于51单片机的热敏电阻的数字温度计(AD1674)(程序+Proteus仿真)

编号:44 基于51单片机的热敏电阻的数字温度计(AD1674) 功能描述: 本设计由51单片机最小系统AD1674模块热敏电阻模块液晶1602显示模块 1、主控制器是89C82单片机 2、AD1674模块模数转换器进行A/D转换,读取热敏电阻值电…

【JavaWeb 专题】15个最经典的JavaWeb面试题

文章目录 HTTP长连接和短连接HTTP/1.1 与 HTTP/1.0 的区别可扩展性缓存带宽优化长连接消息传递Host 头域错误提示 AjaxAjax 的优势: JSP 和 servlet 有什么区别?定义区别 JSP 的9大内置对象及作用JSP 的 4 种作用域?session 和 cookie 有什么…

运营型CRM的五大特点

随着市场和需求的变化,CRM系统的形态也开始出现改变。为了更好地管理客户,运营型CRM应运而生,成为了一种新型的客户关系管理模式。那么,运营型CRM是什么?运营型CRM有什么特点? 运营型CRM的定义 例如Zoho …

聚集索引 VS 二级索引(非聚集索引) 原理图

一个表中有且只有一个聚集索引,可以有多个非聚集索引。 聚集索引存储记录是物理上连续存在,物理存储按照索引排序,聚集索引中的叶子节点就是数据节点。 聚集索引的叶子节点称为数据页(16KB) 而非聚集索引是逻辑上的连续…

芭比》拿下全美最高票房!TEMU、TIKTOK随之爆火!

据美国CNN报道,《芭比娃娃》现已成为今年国内票房最高的电影,取代了《超级马里奥兄弟》的桂冠。据电影公司估计,截至上周四,《芭比娃娃》美国票房收入为 5.754 亿美元,超过了《马里奥》的国内票房收入 5.742 亿美元。在…

idea2023远程调试

使用idea2023版远程调试springboot 1.添加remote jvm debug 2.填写远程ip, 选择要调试项目 3.将 参数附带到需要远程调试的jar 命令之前, 重启即可, 命令一定要在jar包之前 , -agentlib:jdwptransportdt_socket,servery,suspendn,address5005即 java -agentlib:jdwptranspor…

linux并发服务器 —— 多进程并发(四)

进程概述 程序是包含一系列信息的文件,描述了如何在运行时创建一个进程; 进程是正在运行的程序的实例,可以用一个程序来创建多个进程; 用户内存空间包含程序代码以及代码所使用的变量,内核数据结构用于维护进程状态…

大型医院影像信息系统(PACS)源码,自主研发,支持二开

影像信息系统(PACS)可接收和显示多种设备的不同影像,比如CT、DR、B超和彩超等,具有医学影像获取、存档、观片、处理、打印和多种管理功能。使资料保存更加完整,共享性更强。医生可以方便的对影像资料进行浏览、拷贝和光…

visual stdio 2015创建QDialog界面类

问题引入 在visual stdio 2015中创建的界面默认为QWidget,可手动修改为继承自QDialog界面类。操作方法 右键项目 -> 添加 -> Add Qt Class… 选择第二项,如下图

九、脉宽调制(pwm)与脉冲频率调制(pfm)

1、概述 pwm和pfm是两大类dc-dc转换器架构 每种类型的性能特征不一样 重载和轻载时的效率不一样 负载调节 设计复杂性能 EMI、噪声的考虑 集成式转换器解决方案可整合这两种操作 2、PWM控制架构 3、损耗部分 损耗组成部分: MOS管的开关损耗、栅极驱动器损耗&…

辉瑞乡村振兴战略下传统村落文化旅游设计小红书中美德少许

辉瑞乡村振兴战略下传统村落文化旅游设计小红书中美德少许

2021年06月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:数字变换 给定一个包含5个数字(0-9)的字符串,例如 “02943”,请将“12345”变换到它。 你可以采取3种操作进行变换 (1)交换相邻的两个数字 (2)将一个数字加1。如果…