基础:TCP是什么?


1. TCP 是什么?


TCP(Transmission Control Protocol 传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 [1]定义。

  • TCP旨在适应支持多网络应用的分层协议层次结构。
  • 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。
  • TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。
  • 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。
  • TCP在IP报文的协议号是 6。


2. TCP 在 OSI 七层模型中的角色

2.1 OSI七层模型

在这里插入图片描述

数据从应用层发下来,会在每一层都会加上头部信息,进行 封装,然后再发送到数据接收端。

在这里插入图片描述

按照从下到上的顺序:

  • 第二层上的数据,叫 Frame
  • 第三层上的数据,叫 Packet
  • 第四层上的数据,叫 Segment

2.2 TCP 协议参数


TCP协议头部的格式如下:

在这里插入图片描述

  • Source PortDestination Port:分别占用 16 位,表示源端口号和目的端口号。源端口号和目的端口号配合上 IP 首部中的源 IP 地址和目的IP地址就能唯一 的确定一个TCP连接

  • Sequence Number:用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据 字节在数据流中的序号;主要用来解决网络报乱序的问题

  • Acknowledgment Number:32位确认序列号包含发送确认的一端所期望收到的下一个序号,因此,确认序号应 当是上次已成功收到数据字节序号加1。不过,只有当标志位中的ACK标志(下面介绍)为1时该确认序列号的字 段才有效。主要用来解决不丢包的问题

  • Offset:给出首部中32 bit字的数目,需要这个值是因为任选字段的长度是可变的。这个字段占4bit(最多能 表示15个32bit的的字,即4*15=60个字节的首部长度),因此TCP最多有60字节的首部。然而,没有任选字段, 正常的长度是20字节。

  • TCP Flags:TCP首部中有6个标志比特,它们中的多个可同时被设置为1,主要是用于操控TCP的状态机的,依次 为URG,ACK,PSH,RST,SYN,FIN。每个标志位的意思如下:

    • URG:此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促 中间层设备要尽快处理这些数据;
    • ACK:此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值:0和1, 为1的时候表示应答域有效,反之为0;
    • PSH:这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立即传送给应用程序, 而不是在缓冲区中排队;
    • RST:这个标志表示连接复位请求。用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包;
    • SYN:表示同步序号,用来建立连接。SYN标志位和ACK标志位搭配使用,当连接请求的时候,SYN=1, ACK=0;连接被响应的时候,SYN=1,ACK=1;这个标志的数据包经常被用来进行端口扫描。扫描者发送 一个只有SYN的数据包,如果对方主机响应了一个数据包回来 ,就表明这台主机存在这个端口;但是由于这 种扫描方式只是进行TCP三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器不很安全,一台安全 的主机将会强制要求一个连接严格的进行TCP的三次握手;
    • FIN: 表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN标志 位的TCP数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描。
  • Window:窗口大小,也就是有名的滑动窗口,用来进行流量控制

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI人员入侵识别摄像机

AI人员入侵识别摄像机是一种智能监控设备,利用人工智能技术辨认并报警可能的入侵行为。这种摄像机利用深度学习算法实时分析监控画面,识别出普通行人和潜在入侵者之间的差异,从而更准确地预警可能发生的安全事件。 该摄像机通过对比数据库中存…

redis 缓冲区详解(性能优化缓冲区优化)

目录 前言 客户端输入缓冲区 输出缓冲区 集群缓冲区 全量复制缓冲区问题 增量复制缓冲区问题 前言 在我的《Redis 为啥那么快》这篇文章中,详细总结了Redis 为啥那么快。今天当我要详细阐述Redis 的缓冲区时,意识到应该加上Redis 的缓冲区。我们假…

CC攻击详细

CC攻击是DDoS攻击的其中一种,是目前应用层攻击的主要手段之一,相比其它的DDoS攻击CC似乎更有技术含量一些。CC攻击借助代理服务器生成指向目标系统的合法请求,实现伪装和DDoS。我们都有这样的体验,访问一个静态页面,即…

c++基础语法—————默认成员函数

文章目录 一、构造函数(初始化)1.构造函数的名称与类名相同,没有返回类型,可以有参数。2.对象实例化时,编译器自动调用构造函数进行初始化3.若类中没有显示定义一个用户的构造函数,编译器则会自动生成一个默…

MCM箱模型的运行及结果分析,MCM建模技巧与参数设置、EKMA曲线绘制、大气O3来源解析

目录 一、大气中O3形成知识基础、MCM和Atchem 2原理及Linux系统安装 二、MCM建模、数据输入、模型运行及结果输出 三、O3形成途径、生成潜势及其敏感性分析 EKMA曲线及大气O3来源解析 更多应用 臭氧污染不仅对气候有重要影响,而且对人体健康、植物生长均有严重…

大门对楼梯,怎么办?

​ 中国是一个非常重视风水的国家,风水学发扬和流传已有几千年的历史,很多懂风水的人都知道,大门风水是其中非常重要的一环,因为大门风水直接影响全家人的各种运势。大门风水好,能帮助你一臂之力;若大门风…

加密货币在网络违法犯罪活动中的利用情况调查

一、调查背景 区块链基于分布式共识和经济激励等手段,在开放式、无许可的网络空间中,为价值的确立、存储、转移提供了新的解决方案。然而随着加密生态在过去若干年的快速发展,加密货币也越来越多地被用于各类风险活动,为网络赌博…

了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透?

目录 一、面试官心理分析 二、面试题剖析 1. 缓存雪崩 2. 缓存穿透 3. 缓存击穿 一、面试官心理分析 其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题&#x…

发票OCR-国税可进行的发票查验种类-接口文档

发票查验内容包括发票种类名称、发票代码、发票号码、金额、销售方名称、购买方名称等信息。可以在国家税务总局全国增值税发票查验平台上进行查验,也可以进入发票所属省、直辖市税务局官方网站的“我要查询-发票查询”模块进行查验,企业也可以通过发…

vue生命周期函数原理解析,vue阻止事件冒泡方法实现

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

#15封装vue3+el-table表格数据请求函数

目录 1、useTableData 2、util 3、使用 开箱即用,理解容易。 1、useTableData import { reactive } from vue import { getType } from /utils/utilsexport const useTableData (api) > {if (typeof api ! function && getType(api) ! Promise) {th…

Unity类银河恶魔城学习记录10-1 10-2 P89,90 Character stats - Stat script源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Stat.cs using System.Collections; using System.Collections.Generic; us…

【MAC】OpenResty安装

首先官方网站:http://openresty.org/cn/download.html 安装: 我是安装官网去执行的安装命令 配置环境变量 1.打开配置文件 vim ~/.bash_profile2.粘贴进去变量配置 #OPENRESTY export NGINX_HOME/opt/homebrew/etc/openresty export PATH$PATH:$NGI…

【面试精讲】String是如何实现的?String源码分析

【面试精讲】String是如何实现的?String源码分析 目录 一、String实现机制 二、String不可变性(使用final修饰) 三、String 和 StringBuilder、StringBuffer 的区别 四、和equals的区别 五、String创建对象与JVM辨析 六、String源码解…

Mybatis 动态sql环境搭建(学习笔记16)

什么是动态sql:根据不同的条件生成不同的sql语句 借助功能强大的基于 OGNL 的表达式,MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。 ifchoose (when, otherwise)trim (where, set)foreac…

拆解Spring boot:Springboot为什么如此丝滑而简单?源码剖析解读自动装配

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…

Screaming Frog SEO Spider:网站优化利器,轻松掌握网络爬虫精髓

在数字时代,网络爬虫已成为各行各业获取数据、分析趋势的重要工具。而在众多网络爬虫开发工具中,Screaming Frog SEO Spider以其强大的功能和易用性脱颖而出,成为众多网站优化师和SEO从业者的首选。 Screaming Frog SEO Spider是一款适用于M…

笔记本电脑数据恢复:如何轻松地从笔记本电脑恢复文件

不小心从笔记本电脑中删除了一些重要文件?或者恶意软件和其他不可控因素是否导致您的文件消失?人们很容易认为这些文件已经永远消失,并且无法恢复。但这与事实相差甚远。通过遵循正确的数据恢复礼仪并使用良好的数据恢复工具,您可…

英语翻译报价,千字英语翻译报价

众所周知,英语作为全球通用的语言,其翻译需求量极大。无论是欧美国家的日常交流,还是小语种的翻译工作,英语都常常作为中介语言,扮演着桥梁的角色。那么,英语翻译公司是如何定价的?每千字的英语…

Qt中进行客户端开发框架

在Qt中进行客户端开发是一种常见的做法,Qt是一个跨平台的C框架,提供了丰富的工具和类库,用于开发图形用户界面(GUI)应用程序、网络应用程序以及其他类型的软件。以下是一些常用的Qt客户端开发框架和技术,希…
最新文章