TCP传输控制协议二

news2024/9/23 21:24:57

 

TCP 是 TCP/IP 模型中的传输层一个最核心的协议,不仅如此,在整个 4 层模型中,它都是核心的协议,要不然模型怎么会叫做 TCP/IP 模型呢。

它向下使用网络层的 IP 协议,向上为 FTP、SMTP、POP3、SSH、Telnet、HTTP 等应用层协议提供支持。其他的还有我们常用的 Redis 的 RESP 协议、MongoDB的网络协议,以及我们编程中用到的 Socket,都是 TCP 协议在背后提供支持的。

 

 

网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。

语法:即数据与控制信息的结构或格式;
语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;                                  时序(同步):即事件实现顺序的详细说明。

 

TCP协议格式

c500349af5234605be1cd2d2922f4f19.png

 TCP首部 + 用户数据被称为TCP段,其中 TCP 首部就是这里要主要研究的 TCP 协议的核心所在,用户数据部分是 TCP 段的负载。TCP 段的大小也是有限制的,最大是 1460 字节。

529c74c586ec49c899b1c3bc37911b2d.png

 最终由网卡发出去的数据包叫做以太网帧,以太网帧由以太网首部和负载构成。以太网帧的负载就是一个 IP 数据报,IP数据报由IP首部和负载构成。

 

 

 

下图是TCP协议的示意图,如果不算「可选项」部分的话,共占用 32bit x 5 = 160bit,也就是20个字节

44174e13b25d49a49336c4efaab20f83.png

 

源端口和目标端口


源端口和目标端口分别占用 2个字节,共占用 4 字节,分别记录数据发送端的端口号和数据接收端的端口号,这两个标记和 IP 协议中记录的发送端 IP 和接收端 IP组合起来,便可确定一个唯一的 TCP 连接。

序号
由于TCP段的大小有限制,当要传输的数据量大于这个限制的时候,就要对数据进行分段,一段一段的发送,既然发送方要分段,那接收方就要对分段进行重组,才能还原回原始数据。在重组的过程中,要保证各段间的先后顺序,序号正是起到保证重组顺序的作用。

序号占用 4 字节,32 位,它的范围是 0,
2(32)。
 ​TCP是字节流服务,会对每一个发送的字节进行编号。在建立连接的时候,系统会给定一个 ISN(初始序号),然后这个设备在当前连接中发送的第一个字节的序号就是 ISN+1,假设 ISN 初始为0,那第一个字节的序号就是 1。

 

 

 

举个例子:

假设ISN为0,发送端第一次发送 100 字节的数据包,那这第一个 TCP段的序号就是1,下次再发送 100字节的数据包,那这第二个 TCP段的序号就是 101。

这样一来,最大可以一直标记 2(32)
 个字节,也就是 4个G的数据。当达到最大值后,又会从 0 开始标记。

序号只有在下面两种情况下才有用:

1:数据字段至少包含一个字节。
2:是一个 SYN 段,或者是 FIN 段,或者是 RST 段。

 

 

 

 

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

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

相关文章

MySQL—— if/cast/case.... end/md5 函数

目录 1. if 使用 2. if 嵌套 ​3. case ... end 4. 类型转换 cast() 5. 加密函数 md5() 1. if 使用 将姓名为smith的员工工资上调10%; 2. if 嵌套 如果岗位是manager,工资上调10%,如果岗位是s…

收到赵健老师的限量签名书,开心

收到赵老师的亲笔签名📖,开心一下下[愉快],由外而内,首先是我喜欢的线装书,展开阅读舒适,手感友好,纸张更是很讲究,密度很高也很温润,应该是进口纸,每个对页的…

前端简历:项目经历(经验)-外卖送餐类

项目经历-堂食外送点餐 2022年2月-2022年5月 项目描述:该平台提供外送订餐服务,用户可以在手机中轻松地浏览菜品、下单、支付、编辑地址、填写个人信息等,我主要负责首页、订单、我的这3个功能/模块。 技术栈:Amfe-flexibleAxi…

【BUG】已解决:TypeError: object of type ‘int‘ has no len()

已解决:TypeError: object of type ‘int‘ has no len() 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市…

2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛)

RC-u1 热҈热҈热҈ 分数 10 全屏浏览 切换布局 作者 DAI, Longao 单位 杭州百腾教育科技有限公司 热҈热҈热҈……最近热得打的字都出汗了! 幸好某连锁餐厅开启了气温大于等于 35 度即可获得一杯免费雪碧的活动。但不知为何,在每个星期四的时候&#x…

云渲染服务:初创企业的成本效益与效率提升

视觉营销对于吸引潜在客户至关重要,而云渲染作为一种革命性工具,为创意产业提供了强大的计算能力和灵活性,帮助企业在竞争激烈的市场中脱颖而出。 一、什么是云渲染? 云渲染是指客户利用远程计算资源,将图形传输到云服…

linux虚拟机主ip地址:网络信息不可用(没IP)

第一种情况其它博主写的很详细 就是在 /etc/sysconfig/network-scripts/ifcfg-ens33 的onbootno 改为 yes 然后重启 第二种就是我遇到的,是因为服务没有启动 首先winr打开搜索 然后搜索service.msc 把这两项手工右键开启即可,然后重启虚拟机&a…

SpringCloud网关的实现原理与使用指南

Spring Cloud网关是一个基于Spring Cloud的微服务网关,它是一个独立的项目,可以对外提供API接口服务,负责请求的转发和路由。本文将介绍Spring Cloud网关的实现原理和使用指南。 一、Spring Cloud网关的实现原理 Spring Cloud网关基于Spring…

F. Custom-Made Clothes(武汉icpc邀请赛)

题意:有一个n*n的矩阵,a[i][j]>a[i-1][j],a[i][j]>a[i][j-1](每一行非递减,每一列非递减),每次可以查询a[i][j]是否小于等于x,如果返回1,否则返回0.输出操作,求第k小的最大数。 知识点&a…

在CANopen协议中,SDO的意思

在CANopen协议中,SDO(Service Data Object)指的是服务数据对象,它是CANopen网络中用于设备配置和参数化的主要机制之一。SDO用于在主站和从站之间传输配置和状态数据,特别适用于传输那些长度超过标准CAN数据帧所能承载…

savgol_filter丢数据点

y_smooth scipy.signal.savgol_filter(src, window_length15, polyorder3, modeconstant, cval15) # 数据变少了 plt.figure(str(i)) plt.plot(x, src, labelsrc) plt.plot(x, y_smooth, labelsmoothed) plt.legend()按照教程:python 数据、曲线平滑处理——方…

【深度学习入门篇 ⑧】关于卷积神经网络

【🍊易编橙:一个帮助编程小伙伴少走弯路的终身成长社群🍊】 大家好,我是小森( ﹡ˆoˆ﹡ ) ! 易编橙终身成长社群创始团队嘉宾,橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…

速部署 HBase 测试环境

快速部署 HBase 测试环境 第一步:下载软件,在HBase官网下载最新版, 找到 bin,点击下载,比如我这里下载的是 hbase-2.5.6-bin.tar.gz 第二步:解压软件 $ tar -zxvf hbase-2.5.6-bin.tar.gz $ cd hbase-2.…

完美解决ImportError: cannot import name ‘PILLOW_VERSION‘的正确解决方法,亲测有效!!!

完美解决ImportError: cannot import name PILLOW_VERSION’的正确解决方法,亲测有效!!! 亲测有效 完美解决ImportError: cannot import name PILLOW_VERSION的正确解决方法,亲测有效!!&#xf…

Java---多态

乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 欢迎大家访问~ 创作不易,大佬们点赞鼓励下吧~ 前言 前面博客了解了Java语法中继承的相关知识&…

泛微Ecology8明细表对主表赋值

文章目录 [toc]1.需求及效果1.1 需求1.2 效果2.思路与实现3.结语 1.需求及效果 1.1 需求 在明细表中的项目经理,可以将值赋值给主表中的项目经理来作为审批人员 1.2 效果 在申请人保存或者提交后将明细表中的人名赋值给主表中对应的值2.思路与实现 在通过js测…

MySQL数据库慢查询日志、SQL分析、数据库诊断

1 数据库调优维度 业务需求:勇敢地对不合理的需求说不系统架构:做架构设计的时候,应充分考虑业务的实际情况,考虑好数据库的各种选择(读写分离?高可用?实例个数?分库分表?用什么数据库?)SQL及索引:根据需求编写良…

鸿蒙语言基础类库:【@system.notification (通知消息)】

通知消息 说明: 从API Version 7 开始,该接口不再维护,推荐使用新接口[ohos.notification]。本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import notification fro…

生信学院|07月19日《在线产品设计工具》

课程主题:在线产品设计工具 课程时间:2024年07月19日 14:00-14:30 主讲人:武旭 生信科技 售后服务工程师 基于云的设计平台高效的在线设计工具与SOLIDWORKS对比Q&A 安装腾讯会议客户端或APP,微信扫描海报中的二维码报名哦…

【光伏发电功率预测】方法综述学习笔记1

文章目录 研究背景为什么要做光伏发电功率预测?光伏功率预测难点影响光伏发电的因素光伏发电功率预测分类光伏发电功率预测方法预测评价指标总结 研究背景 近十年,化石能源消耗不断增加,环境污染日趋严重,已经成为国际社会普遍关…