TCP协议总结

news2024/11/16 21:37:18

一、TCP协议概念。

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的传输层协议。它主要用于在计算机网络中,通过建立可靠的通信连接来进行数据传输。

TCP协议的特点如下:

  • 可靠性:TCP使用确认、重传和超时等机制,确保数据可靠地传输到目标主机,并且按照正确的顺序组装。
  • 面向连接:数据传输之前需要在发送端和接收端建立连接,传输完成后再释放连接。
  • 全双工通信:TCP允许同时进行双向的数据传输,即发送方和接收方可以同时发送和接收数据。
  • 流量控制:TCP通过滑动窗口机制进行流量控制,控制发送速率,以适应接收方的处理能力。
  • 拥塞控制:TCP通过拥塞窗口机制和慢启动算法来进行拥塞控制,防止网络拥塞。
  • 高效性:TCP使用各种优化算法,如快速重传、快速恢复等,提高数据传输的效率。
  • 适用性广泛:TCP被广泛应用于互联网和局域网等各种计算机网络中,支持各种应用程序的可靠数据传输。

二、TCP工作流程。

通过NDS获取IP地址之后,就会把HTTP的传输工作交给TCP协议完成。
在这里插入图片描述

三、TCP报文格式。

在这里插入图片描述

四、三次握手和四次挥手。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 为什么需要四次挥手?
    把ACK和FIN分开发送的原因是因为当主动方在数据传送结束后发出连接释放的通知,由于被动方可能还有必要的数据要处理,所以会先返回 ACK 确认收到报文。当被动方也没有数据再发送的时候,则发出FIN通知,对方确认后才完全关闭TCP连接。
  • 为什么TIME_WAIT等待时间是2MSL?
    MSL是报文的最大生存时间,超过这个时间,报文就将丢弃。
    确保对方能够收到最后一个ack报文,如果服务端没有收到最后的ACK报文,就会触发超时重传FIN报文,从客户端发送ACK报文到接到到服务端重传的FIN报文,一去一来,最多就需要2MSL。

五、TCP协议特点。

1.流量控制

产生原因TCP协议是需要接收方回复给发送方ACK之后才算一次连接的建立,而在等待回复的时间就是浪费的,于是就一次性发送了多条数据,就算遇到丢包的问题,就会在重发最后一次接收到ACK的序列号的后面的封包,这样发送方就需要缓存已经发出但是还没有接收到ACK的封包,接收方把已接收但是没有交给用户进程之前的封包也要保留着,但是缓存是有大小限制的,就需要一种机制来确定这个大小,所以就出现了滑动窗口和拥塞窗口。
TCP把应用交付的数据仅仅看成一串无结构的字节流,TCP不关心应用程序一次将多大的报文发送到TCP的缓存中,而是根据窗口值和当前网络情况来调整当前一个报文应该包含多少个字节。TCP协议通过TCP报文中的窗口大小的信息,因为所有的报文都有这个信息,不论发送方还是接受方都会接收,就会保证实时获取。
获得窗口大小后,换算成流量大小的方法:
接收窗口大致 = 接收缓冲区大小 - 已用大小(接收的数据,暂时没被应用层读走)
最大发送量 = 对方的接收窗口

控制方式:

1.滑动窗口(RWND)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接收方会把AdvertisedWindows这个值回给发送方,发送方就会把这个值当作WindowsSize就会放到TCP头部里面。所以,在TCP协议中,滑动窗口的值是由接收方控制的。
2.拥塞窗口
拥塞窗口的值是由发送方定义的,又名CWND(congestion window)。
拥塞控制是用来处理网络拥堵的情况。
具体做法是:发送端的发送范围是拥塞窗口和滑动窗口中较小的一个,min[rwnd,cwnd]。
拥塞窗口的大小会根据网络情况动态调整。
大体的策略是无拥塞扩大窗口大小,反之减小。
网络不好造成丢包的原因?
拥塞窗口因为网络造成丢包的原因是由发送方引起的。拥塞窗口是TCP协议中用于实现拥塞控制的一个重要参数。它表示在一个往返时间(RTT)内,发送方可以发送的最大字节数量。拥塞窗口的大小会随着网络的拥塞程度进行动态调整。当网络出现拥塞时,网络设备的缓存可能会被填满,导致数据包丢失。此时,TCP发送方会通过观察网络传输过程中是否发生了丢包来确定网络的拥塞程度。当发送方检测到丢失的数据包时,它会认为这是由于网络拥塞引起的。为了降低发送速率以缓解拥塞,发送方会减小拥塞窗口的大小,从而减少每个RTT内发送的数据量。这种减小拥塞窗口的行为就是发送方对网络拥塞的响应。
慢启动
在这里插入图片描述
拥塞避免
在这里插入图片描述
在这个过程中,出现了丢包,就会马上降低CWND,以便网路可以缓过来。
在这里插入图片描述
两者对比
在这里插入图片描述

2.超时重传机制

超时重传是为了保证可靠性传输而采取的一种机制。当发送方发送数据后,会启动计时器来等待接收方的确认(ACK)。
如果在规定的时间内(超时时间)未收到接收方的确认,发送方就会认为数据包丢失,并进行超时重传。发送方会重新发送相同的数据包,以确保接收方正确收到数据。
超时重传的目的是保证数据的可靠性,即使在网络中发生了丢包或延迟等问题,通过重传机制可以尽可能保障数据的传输成功。

六、与UDP的对比。

TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的传输层协议,它们在功能和特点上有以下几个主要区别:

  • 连接性:TCP是面向连接的协议,而UDP是面向无连接的协议。TCP在通信之前需要先建立连接,确认双方的身份和通信参数,然后才能进行数据传输;而UDP直接发送数据,无需先建立连接。
  • 可靠性:TCP提供可靠的数据传输,它通过序列号、确认应答、超时重传等机制来确保数据的完整性和顺序性;而UDP不保证可靠性,它只负责将数据包发送到目标地址,但不能保证是否成功送达。
  • 建立和断开连接:TCP使用三次握手来建立连接,即发送方发送连接请求,接收方回复连接确认,最后发送方再回复一个确认;而UDP不需要建立和断开连接,可以直接发送数据。
  • 传输效率:由于TCP提供了可靠性保证和数据流控制机制,它的传输效率相对较低,通信过程中会有较多的开销;而UDP没有这些机制,传输效率较高,但也容易受到网络条件的影响。
  • 应用场景:TCP适合于对数据可靠性要求较高的应用场景,如文件传输、Web浏览器访问等;而UDP适用于实时性要求较高且对数据可靠性要求相对较低的应用场景,如音频、视频流传输、在线游戏等。

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

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

相关文章

【Linux C】Linux如何执行一个程序(程序存储空间、系统调用、内核调用)

文章目录 一、程序存储空间1.1 C语言程序存储空间1.2 用户空间和内核空间1.3 用户模式和内核模式 二、内核调用-系统调用-C语言库函数2.1 系统调用和内核调用2.2 C语言库函数 三、Linux如何执行一个程序 一、程序存储空间 本节说的空间主要是指内存空间,即程序如何分…

【STM32 中断】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STM32中断 前言一、STM32的中断如何?如何管理这么复杂的中断?实际优先级如下怎么使用呢? 二、使用步骤1.引入库函数先分组,怎么…

Gin 文件上传操作(单/多文件操作)

参考地址: 单文件 | Gin Web Framework (gin-gonic.com)https://gin-gonic.com/zh-cn/docs/examples/upload-file/single-file/ 单文件 官方案例: func main() {router := gin.Default()// 为 multipart forms 设置较低的内存限制 (默认是 32 MiB)router.MaxMultipartMem…

IP协议总结

一、定义。 IP全称为Internet Protocol,是TCP/IP协议族中的一员,负责实现数据在网络上的传输。它是一种无连接、不可靠的数据报协议。 IP协议常用于Internet网络和局域网中,它通过将数据包进行分组并进行逐跳转发来实现数据在网络中的传输。…

Android App备案获取公钥、签名MD5值

1.生成签名文件 keytool -genkey -alias 别名XXX -keypass 密码XXX -keyalg RSA -keysize 2048 -validity 36500 -keystore D:\XXX.keystore -storepass 密码XXX2.查看签名MD5值 keytool -list -v -keystore D:\XXX.keystore3.查看公钥 导出证书XXX.cer keytool -export -a…

小程序分销商城有哪些功能?

越来越多的企业,开始打造商城小程序,想要利用商城小程序功能来进行转型升级,那么商城小程序功能有哪些,[可R]下面就来分享一下商城小程序功能有哪些?常用小程序商城功能介绍; 1.产品展示功能:产…

DataGrip导出和导入文件

导出文件后用excel打开 发现乱码。解决办法: DataGrip导出CSV文件中文乱码 | 一个博客 (imguan.com) 再次导入进行测试

java - 设计模式 - 状态模式

文章目录 前言java - 设计模式 - 状态模式1. 概述2. 作用3. 示例 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话&#xf…

CDGA数据治理工程师考试心得

2023年8月初,准备备考CDGA。当时也是很迷茫,啥时候考试都不知道,也不知道该怎么做。写这篇文章的目的也只是记录一下。 1.什么是CDGA? CDGA就是数据治理工程师(Certified Data Governance Associate),“D…

【安鸾靶场】cmseasy内网渗透 (500分)

文章目录 题目一、渗透开始后台执行rce漏洞内网横向 题目 一、渗透开始 上burp后没有报漏洞&#xff1a; /admin存在后台&#xff1a; 爆破一下&#xff1a; admin admin123 后台执行rce漏洞 POC&#xff1a; 1111111111";}<?php phpinfo()?> 触发漏洞&#xf…

公众号运营重要策略-公众号排名优化

排名优化一直以来都是公众号运营的重要策略之一。公众号作为连接用户和商家的桥梁&#xff0c;其排名的高低直接影响着曝光量和用户关注度&#xff0c;因此公众号排名优化是每个运营者必须掌握的技能之一。本文将从以下几个方面&#xff0c;为大家深入剖析公众号排名优化的技术…

CCF CSP认证 历年题目自练Day27

题目一 试题编号&#xff1a; 202104-1 试题名称&#xff1a; 灰度直方图 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 样例输入 7 11 8 0 7 0 0 0 7 0 0 7 7 0 7 0 7 0 7 0 7 0 7 0 7 7 0 0 0 7 0 0 0 7 0 7 7 0 0 0 0 7 0 0 7 7 0 7 0 0 0 0 0 7 0 7 0 0 7 0 …

MySQL对日期计算

mysql日期计算 前言使用场景一 日期作减法操作二 获取前一天或后一天的日期三 获取前一个月或后一个月的日期四 获取前一年或后一年的日期五 查询一个月内的申请记录 总结 前言 在MySQL中&#xff0c;日期计算是非常常见的操作。其中&#xff0c;日期减法操作可以用来计算两个…

PTE DESCRIBE IMAGE做题方法 (一)

目录 界面切换来判断 到了哪一种题目 说废话 还是会给流利度加分 回答问题的时候想想哪些不说 必定是不行的呢 事先会预计学生会说些什么 鱼池理论 1st:Ttle.Unit,Legends.非说不可2nd:X-axis.Y-axis. 多多益善3 rd:Extra information(implications&development)不…

滚雪球学Java(45):探秘Java Runtime类:深入了解JVM运行时环境

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

《深入理解计算机系统》(2):虚拟内存

虚拟内存是一种对主存的抽象概念。 &#xff08;1&#xff09;将主存看作一个存储在磁盘上的地址空间的高速缓存&#xff0c;在主存中只保存活动区域&#xff0c;并根据需要在磁盘和主存之间来回传送数据&#xff0c;通过这种方式高效地使用内存 &#xff08;2&#xff09;为每…

30天入门Python(基础篇)——第4天:Python中的【输入】+【数据类型】的认识(万字建议点赞收藏)

文章目录 专栏导读上节课回顾Python中的输入Python中的数据类型1、可变数据类型2、不可变数据类型 如何查看一个变量(数据)的变量类型字符串&#xff08;str不可变&#xff09;整数&#xff08;int不可变&#xff09;浮点数&#xff08;float不可变&#xff09;列表&#xff08…

```,```中间添加 # + 空格 + 空行后遇到的底部空行出错,书接上回,处理空行

【python查找替换&#xff1a;查找空行&#xff0c;空行前后添加&#xff0c;中间添加 # 空格 空行后遇到的第1行文字&#xff1f; - CSDN App】http://t.csdnimg.cn/QiKCV def is_blank(line):return len(line.strip()) 0txt 时间戳&#xff1a; ("%Y-%m-%d %H:%M:…

软件设计师考试知识点大全思维导图

软件设计师考试知识点大全思维导图 欢迎交流学习

BDJ-A02-32、BRJ-A02-50比例减压阀放大板

BDJ-A02-210、BDJ-A02-100、BDJ-A02-32、BRJ-A02-50、BRJ-A02-100、BRJ-A02-210、BRJ-A02-315、BCJ-A03-315、BCJ-A06-100、BCJ-A08-50、BYJ-A02-20、BYJ-A02-40是比例减压阀&#xff0c;阀的二次压力与输入电信号成正比。此类阀工作时是通过电子放大器提供比例电磁铁的驱动电流…