JavaEE|TCP/IP协议栈之TCP协议端格式详解

news2025/7/13 23:19:14

文章目录

    • 一、对TCP协议的感性认识
      • 简介
      • 特点
    • 二、TCP的报文结构
      • 概览
      • 16位端口号和16位目的端口号
      • 32位序号和32位确认序号
      • 4位首部长度
      • 保留位(6位)
      • 6个标志位
      • 16位窗口大小
      • 16位校验和
      • 16位紧急指针
      • 40位头部选项(option)
    • 参考

一、对TCP协议的感性认识

简介

TCP,是Transmission Control Protocol的简称,中文名是传输控制协议,是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设置的一个传输协议。

互联网络与单个网络有很大的不同,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数。而不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

相关术语:

(注意这里的延迟的概念)

网络拓扑结构就指用传输媒体把计算机等各种设备互相连接起来的物理布局,是指互连过程中构成的几何形状,它能表示出网络服务器、工作站的网络配置和互相之间的连接。网络拓扑结构可按形状分类,分别有:星型、环型、总线型、树型、总线/星型和网状型拓扑结构。

带宽:在数字设备中,带宽指单位时间能通过链路的数据量。通常以bps(bits per seconds)来表示,即每秒可传输之位数。

延迟:延迟是指数据从网络的一端传送到另一端所需的时间。 有时也被称为迟延或者时延。

每台支持TCP的机器都有一个TCP传输实体。TCP实体可以是一个库过程、一个用户进程,或者内核的一部分。在所有这些情形下,它管理TCP流,以及与IP层之间的接口。TCP传输实体重构出原始的字节流。

关于TCP传输实体

TCP传输实体接受本地进程的用户数据流,将它们分割成不超过64KB(实际上去掉IP和TCP头,通常不超过1460数据字节)的分段,每个分段以单独的IP数据报形式发送。当包含TCP数据的数据报到达一台机器时,它们被递交给TCP传输实体,TCP传输实体重构出原始的字节流

为简化起见,我们有时候仅仅用“TCP”来代表TCP传输实体(一段软件)或者TCP协议(一组规则)。根据上下文语义你应该能很消楚地推断出其实际含义。例如,在“用户将数据交给TCP”这句话中,很显然这里指的是TCP传输实体。

特点

有连接、可靠传输、面向字节流、全双工

二、TCP的报文结构

概览

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rstnQtTM-1676975737007)(F:\typora插图\image-20230221181213885.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ELZ0tfFo-1676975737008)(F:\typora插图\image-20230221183241450.png)]

与UDP类似,TCP也是报头(head)+载荷(payload)。

16位端口号和16位目的端口号

即各两个字节,表示范围为0~65535.

表示了数据从哪个进程来到哪个进程去。

32位序号和32位确认序号

这里与后边我们要重点讨论的TCP内部工作机制——确认应答有关,必须连在一起理解,所以这里先放放。

4位首部长度

即表示TCP报头有多少个32个bit,注意,这里的单位是4字节。

2^4=16==>表示的范围是0~15==>15*4=60,所以TCP报头最多有60个字节。

这里边的影响的主要就是选项这个字段。

保留位(6位)

是为了之后的扩展准备的。

对于网络协议,扩展升级成本很高。

有了这里的保留位,之后扩展可能会容易一点。

即使升级,也可以兼容以前的版本。

这里体现了开发的可扩展性。

6个标志位

  • URG:紧急指针是否有用
  • ACK:确认序号是否有用(是不是应答报文)
  • PSH:提示接收端应用程序立即从TCP缓冲区把数据读走
  • RST:对方要求重新建立连接【带这种标识的叫做复位报文段】
  • SYN:请求建立连接【带这种标识的叫做同步报文段】
  • FIN:通知对方,本段要关闭了【携带这种标识的叫做结束报文段】

16位窗口大小

这里与后边我们要重点讨论的TCP内部工作机制——滑动窗口、流量控制有关,必须连在一起理解,所以这里先放放。

16位校验和

发送端填充,CRC校验。接收端校验不通过,则认为数据有问题。此处的检验和不光包含TCP首部,也包含TCP数据部分。

这里其实跟UDP那里相似。

16位紧急指针

标识哪部分数据是紧急数据 。

40位头部选项(option)

可以先看这里

参考

1

选项

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

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

相关文章

【新品发布】三颗国产新“芯”硬核亮相——1颗电机驱动IC+2颗电源管理IC

拓尔“芯”常态,性能为王创新进取永不止步!自2023年新品发布会1月场发布5款重磅新品后,伴着春律,2月场它来了! 2023年2月20日晚,拓尔微线上发布电机驱动芯片TMI8723及两颗电源管理芯片TMI7205B、TMI5122D8…

初识SSTI

SSTI概念SSTI就是服务器端模板注入(Server-Side Template Injection),实际上也是一种注入漏洞;可以类比于SQL注入,实际上这两者的基本思想是一致的;SSTI也是获取了一个输入,然后在后端的渲染处理…

AVS3中ECCSAO

AVS3引入了CCSAO,通过不同通道间的预测来去除通道间的冗余以提升编码效率。然而CCSAO在处理时未考虑边界像素的分类问题,所以在处理纹理复杂的内容时效率还是不高。CCSAOAVS3中引入了CCSAO,它是帧级的环路滤波工具,如Fig.1所示&am…

ABAP 351 - 动态编程

作为面对对象的编程语言,ABAP也是支持动态编程的。ABAP351作为一门独立的课程介绍了类反射机制如何实现的过程。一、Field SymbolsField Symbols(字段符号)在ABAP编程中经常使用,实际上它具备以下几点特性:字段符号只是字段的一个别名&#x…

一个http请求的全过程是怎样的?

一、前言 当我们在浏览器栏输入:http//:www.baidu.com 的时候,具体发生了什么呢?这个请求是怎么到达服务器及返回结果的呢 http请求过程图示 二、概述 浏览器进行DNS域名解析(就是域名到IP地址的转换过程)&#xff0…

字节10年架构师职业发展经历,助你做好职业规划

一直以来程序员这一职业都给人高薪资的印象,近年来随着互联网行业的快速发展,程序员更是人满为患,然而很多人关注的却是程序员的薪资,而非职业本身。 一批批程序员进入工作岗位,但是很多人并没有对自己的职业生涯有清…

2023环翠区编程挑战赛小学组题解

T1. 乘车费用 题目描述 星期天上午小红乘出租车去本市的奶奶家。出租车计价方案为:333公里以内(包括333公里)起步价是131313元,超过333公里之后按2.32.32.3元/公里计价,整个乘车途中另加111元钱的燃油费。 已知&…

一篇文章带你搞懂spring6的概念、spring入门与容器IoC详解(尚硅谷笔记)

文章目录1、概述1.1、Spring是什么?1.2、Spring 的狭义和广义1.3、Spring Framework特点1.4、Spring模块组成1.5、Spring6特点1.5.1、版本要求2、入门2.1、环境要求2.2、构建模块2.3、程序开发2.3.1、引入依赖2.3.2、创建java类2.3.3、创建配置文件2.3.4、创建测试类…

YOLOv8模型调试记录

前言 新年伊始,ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务,在还没有开源时就收到了用户的广泛关注。 值得一提的是,在博主的印象中,YOLO系…

【蓝桥OJ】门牌制作、七段码、成绩统计、分数

文章目录门牌制作七段码成绩统计分数总结门牌制作 小蓝要为一条街的住户制作门牌号。这条街一共有 2020位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 …

OpenHarmony ArkTS 框架下如何自定义权限

系统有很多权限,比如:多媒体权限 ohos.permission.READ_MEDIA 那么,当我们在做开发板定制hap 时需要我们自定义的特殊权限,该如何做呢,比如要做个ohos.permission.MY_TEST_PERMISSION自定义权限,我的思路就是&#x…

黑马程序员-Linux网络编程-01

目录 课程链接 协议 分层模型 网络传输数据封装流程 以太网帧和ARP请求 IP协议 TCP协议 BS与CS模型对比 套接字 网络字节序 IP地址转换函数 sockaddr地址结构 socket模型创建流程 socket()和bind() listen()和accept()​ 课程链接 03-协议_哔哩哔哩_bilibili 协…

【python学习笔记】:2种用 Python 作为小程序后端的方式

微信的小程序是一个很不错的体验,简单,上手快,这几天也在学习使用小程序,总结了2种用 Python 作为小程序后端的方式,供你参考。 方法一、微信的云托管[1]。 优点:不需要购买服务器,不需要域名…

Go语言环境安装与试运行

下载参考Go语言中文网https://studygolang.com/Go语言中文网下载会快一些,与Go官网是同步的,按对应操作系统下载。Windows下安装这里只展示Windows下的安装场景下载后双击文件:本地环境路径(其实建议把环境都放在同一个指定目录下…

数据结构与算法:Map和Set的使用

1.搜索树 1.定义 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子…

5年测试在职经验之谈:3年手工测试、2年的自动化测试,从入门到不可自拔...

毕业3年了,学的是环境工程专业,毕业后零基础转行做软件测试。 已近从事测试行业8年了,自己也从事过3年的手工测试,从事期间越来越觉得如果一直在手工测试的道路上前进,并不会有很大的发展,所以通过自己的努…

【机器学习】为什么需要对数值型的特征做归一化(Normalization)?

目录:为什么需要对数值型的特征做归一化?一、概念定义二、标准化、归一化的原因、用途2.1 原因三、数据归一化的影响四、常用的3种归一化方法4.1 归一化公式4.1.1 线性归一化(Min-Max Scaling,即我们一般指的归一化)4.…

十二、Django表单

表单 在之前的案例中,每次我们需要提交表单数据的时候。我们都需要去手动编辑html表单,根据不同的字段,字段名,进行编码。做了很多重复的部分,所以django提供了一个专门用来处理表单的类,django.forms.For…

23年PMP真的值得考吗?分析+资料分享

我觉得,如过是真的想学习项目管理,或者工作要求考PMP,招聘要求又的确“PMP证书”优先,那考一个是划算的,毕竟在项目管理这一块,PMP是专业和知名度最高的证书了。 它是由美国项目管理协会(PMI)在全球范围内推…

Java 给视频添加背景音乐 | Java工具

目录 前言 Maven依赖 环境依赖 代码 总结 前言 本文提供给视频添加背景音乐的java工具&#xff0c;一如既往的实用主义。 Maven依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.1.1…