搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
weixin_40725706
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
IntelliJ IDEA 最新版本2024.1新特性+完整安装激活使用(亲测有效)_idea2024.1
2
基于kuberay的rayjob中集群启动时间测试
3
JSP_JDBC_jsp jdbc
4
linux终端信息输出到文件_linux 将终端内容显示在文件
5
##20 实现图像风格迁移:使用PyTorch深入学习的艺术之旅
6
【C语言】常见的几种排序方式_c语言排序
7
Quartus2入门及半加器设计_半加器quartus
8
JAVA Springboot报错(一)_org.springframework.boot:spring-boot-starter-paren
9
Ansible自动化部署高可用K8S集群_ansible kubectl apply
10
2020 年了,微信公众号还有前途吗?
当前位置:
article
> 正文
【计算机网络】传输层——TCP_tcp传输层
作者:weixin_40725706 | 2024-05-16 18:14:28
赞
踩
tcp传输层
文章目录
TCP
TCP协议的特点
TCP报文段
TCP连接管理
TCP连接的建立
TCP连接的释放
TCP可靠传输
序号
确认
重传
超时
冗余ACK(冗余确认)
TCP流量控制
TCP拥塞控制
慢开始和拥塞避免
慢开始算法
拥塞避免算法
慢开始和拥塞避免算法的实现过程
快重传和快恢复
快重传
快恢复
快恢复算法的实现过程
TCP
TCP协议的特点
主要解决传输的可靠、有效、无丢失和不重复问题;
主要特点:
TCP是面向连接的传输层协议;
每条TCP连接只能有两个端点,每条TCP连接只能是点对点的;
TCP提供可靠的交付服务,保证传送的数据无差错、不丢失、不重复且有序;
TCP提供全双工通信,允许通信双方的应用进程在任何时候都可以发送数据,为此TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据;
发送缓存用来暂时存放:
发送应用程序传送给发送方TCP准备发送的数据;
TCP已发送但尚未收到确认的数据;
接收缓存用来暂时存放:
按序到达但尚未被接收应用程序读取的数据;
不按序到达的数据;
TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据仅视为一连串的无结构的字节流;
TCP报文
段
TCP报文段既可以用来运载数据,又可以用来建立连接、释放连接和应答;
各字段意义:
源端口和目的端口:各占2B,端口是传输层与应用层的服务接口,传输层的复用和分用功能都要通过端口实现;
序号:占4B,范围0~2
32
-1,共2
32
个序号,序号字段的值是指本报文段所发送的数据的第一个字节的序号;
确认号:占4B,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则表明到序号N-1为止的所有数据都已正确收到;
数据偏移:即首部长度,占4位,表示首部长度,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远;
保留:占6位,保留为今后使用,目前应置为0;
紧急位URG:URG = 1表明紧急指针字段有效,告诉系统有紧急数据应尽快传送;
确认位ACK:ACK = 1时确认号字段有效,在连接建立后所有传送的报文段都必须把ACK置1;
推送位PSH:接收方TCP收到PSH = 1的报文段,尽快交付给接收应用程序,而不再等到整个缓存都填满后再向上交付;
复位位RST:RST = 1时,表明TCP连接中出现严重差错,必须释放连接,然后重新建立传输连接;
同步位SYN:同步SYN = 1表示这是一个连接请求或连接接受报文;
终止位FIN:用来释放一个连接,FIN = 1时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接;
窗口:占2B,范围0~2
16
-1,指出现在允许对方发送的数据量,接收方的数据缓存空间是有限的,因此用窗口值作为接收方让发送方设置其发送窗口的依据;
校验和:占2B;
紧急指针:占2B,紧急指针仅在URG = 1时才有意义,指出本报文段中紧急数据共有多少字节,紧急数据在报文段数据的最前面;
选项:长度可变;
填充:为了使整个首部长度时4B的整数倍;
TCP连接管理
TCP连接的三个阶段:连接建立、数据传送、连接释放;
需解决问题:
钥匙每一方能够确知对方的存在;
要允许双方协商一些参数,如最大窗口值,、是否使用窗口扩大选项、时间戳选项及服务质量等;
能够对运输实体资源,如缓存大小、连接表中的项目进行分配;
连接的建立采用客户/服务器方式,主动发起连接建立的应用进程称为客户,而被动等待连接建立的应用进程称为服务器;
TCP连接的建立
连接建立前,服务器进程处于LISTEN(收听)状态,等待客户的连接请求;
连接建立步骤:
第一步:
客户机的TCP首先向服务器的TCP发送连接请求报文;
SYN = 1, seq = x;
第二步:
服务器的TCP收到连接请求报文段后,如同意建立连接,则向客户机发回确认,并为该TCP连接分配缓存和变量;
SYN = 1, ACK = 1, seq = y, ack = x+1;
第三步:
当客户机收到确认报文段后,还要向服务器给出确认,并为该TCP连接分配缓存和变量;
ACK = 1, seq = x+1, ack = y+1;
提供全双工通信,因此通信双方的应用进程在任何时候都能发送数据;
注意
服务端的资源是在完成第二次握手时分配的,客户端资源是在完成第三次握手时分配的;
使得服务器易于收到SYN洪范攻击;
TCP连接的释放
连接释放步骤:
第一步:
客户机打算关闭连接时,向其TCP发送连接释放报文段,并停止发送数据,主动关闭TCP连接;
TCP是全双工的,可以想象为一条TCP连接上有两条数据通路,发送FIN的一端不能在发送数据,即关闭了其中一条数据通路,但对方还可以发送数据;
FIN = 1, seq = u;
第二步:
服务器收到连接释放报文段后即发出确认;
此时,从客户机到服务器这个方向的连接就释放了,TCP连接处于半关闭状态,但服务器若发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭;
ACK = 1, seq = v, ack = u+1;
第三步:
若服务器已经没有要向客户机发送的数据,就通知TCP释放连接;
FIN = 1, ACK = 1, seq = w, ack = u+1;
第四步:
客户机收到连接释放报文段后,必须发出确认;
ACK = 1, seq = u+1, ack = w+1;
TCP可靠传输
TCP的任务是在IP层不可靠的、尽力而为服务的基础上建立一种可靠数据传输服务;
TCP提供的可靠数据传输服务保证接收方进程从缓存区读出的字节流与发送方发出的字节流完全一样;
TCP使用了校验、序号、确认和重传等机制达到可靠传输目的;
序号
TCP首部的序号字段用来保证数据能有效提交给应用层,TCP把数据视为一个无结构但有序的字节流;
序号建立在传送的字节流之上,而不建立在报文段之上;
TCP连接传送的数据流中的每个字节都编上一个序号,序号字段的值是指本报文段所发送的数据的第一个字节的序号;
确认
TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号;
发送方缓存区会继续存储那些已发送但未收到确认的报文段,以便在需要时重传;
TCP默认使用累计确认,即TCP只确认数据流中至第一个丢失字节为止的字节;
重传
有两种事件会导致TCP对报文段进行重传:超时和冗余ACK;
超时
TCP每发送一个报文段,就对这个报文段设置一次计时器,计时器设置的重传时间到期但还未收到确认时,就要重传这一报文段;
为计算超时计时器的重传时间,TCP采用一种自适应算法,它记录一个报文段发出的时间,以及收到相应确认的时间,这两时间之差称为报文段的往返时间RTT,TCP保留了RTT的一个加权平均往返时间RTT
s
,他会随新测量RTT样本值的变化而变化;
冗余ACK(冗余确认)
超时触发重传存在的一个问题时超时周期往往太长;
发送方通常可在超时事件发生之前通过注意所谓的冗余ACK来较好地检测丢包情况;
冗余ACK就是再次确认某个报文段地ACK,而发送方先前已收到过该报文段地确认;
TCP流量控制
TCP提供流量控制服务来消除发送方发送速率太快使接收方缓存区溢出地可能性,因此可以说流量控制是一个速度匹配服务,匹配发送方的发送速率与接收方的读取速率;
TCP提供一种基于滑动窗口协议的流量控制机制;
在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方地发送窗口大小,这称为接收窗口rwnd;
发送方根据其对当前网络拥塞程度的估计而确定的窗口值,这称为拥塞窗口cwnd,其大小与网络带宽和时延密切相关;
一个例子
传输层和数据链路层的流量控制的区别:
传输层定义端到端用户之间的流量控制;
数据链路层定理两个中间的相邻结点的流量控制;
传输层的窗口协议的窗口大小可以动态变化;
数据链路层的窗口协议的窗口大小不能动态变化;
TCP拥塞控制
拥塞控制是指防止过多的数据注入网络,保证网络中的路由器或链路不致过载;
拥塞控制与流量控制的区别:
拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素;
流量控制是指点对点的通信量控制,是个端到端的问题,他所要做的是一直发送端发送数据的速率,以便使接收端来得及接收;
拥塞控制与流量控制的相似:
都通过控制发送方发送数据的速率来达到控制效果;
进行拥塞控制的4种算法:
慢开始;
拥塞避免;
快重传;
快恢复;
TCP协议要求发送方维护以下两个窗口:
接收窗口rwnd:
接收方根据目前接收缓存大小所许诺的最新窗口值,反映接收方的容量;
由接收方根据其放在TCP报文的首部的窗口字段通知发送方;
拥塞窗口cwnd:
发送方根据自己估算的网络拥塞成都而设置的窗口值,反映网络的当前容量;
只要网络未出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去;
只要网络出现拥塞,拥塞窗口就减小一些,以减少注入网络的分组数;
发送方上限值应取接收窗口rwnd和拥塞窗口cwnd中较小的一个,即:
发送窗口上限值 = min[rwnd, cwnd];
慢开始和拥塞避免
慢开始算法
在TCP刚连接好并开始发送TCP报文段时,先令拥塞窗口cwnd = 1,即一个最大报文段长度MSS;
每收到一个对新报文段的确认后,将cwnd加1,即增大一个MSS;
使用慢开始算法后,每经过一个传输轮次RTT,cwnd就会加倍,即cwnd的大小指数式增长;
直到cwnd增大到一个规定的慢开始门限ssthresh阈值,然后改用拥塞避免算法;
拥塞避免算法
每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,使拥塞窗口cwnd按线性规律缓慢增长;
归纳如下:
swnd < ssthresh,使用慢开始算法;
swnd > ssthresh,停止使用慢开始算法而改用拥塞避免算法;
swnd = ssthresh,即可使用慢开始算法,又可使用拥塞避免算法;
慢开始和拥塞避免算法的实现过程
快重传和快恢复
快重传
当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时;
快恢复
原理:当发送方连续收到三个冗余ACK时,执行“乘法减小”算法,把慢开始门限ssthresh设置为此时发送方swnd的一半;
快恢复算法的实现过程
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/weixin_40725706/article/detail/579972
推荐阅读
article
【
计算机网络
】
期末考试
复习简答题最全整理:题目+答案_在
包括
因特网
的
现代
分组
交换网
中,源
主机
...
第一部分为所有题目,没给答案,便于背诵,后面为分章节给出
的
对应题目
的
答案。_在
包括
因特网
的
现代
分组
交换网
中,源
主机
在
包括
...
赞
踩
article
《
计算机网络
(第7版)-谢希仁》
期末考试
复习题
和答案
(
总结整理
)
_
计算机网络
期末考试
题库
...
期末复习试题总结一、选择题。1、广域网覆盖的地理范围从几十公里到几千公里。它的通信子网主要使用
(
B
)
。A、报文交换技...
赞
踩
article
计算机网络
:如何
传输
一条
数据
(详解)_
计算机网络
发消息
的
过程
...
一:不同
的
localhost如何传送信息1:图示概览图(1):无注解(2):有注解这里我在这个线路层中又连了一些新
的
s...
赞
踩
article
【
计算机网络
】
数据
传输
的
封装
与解
封装
,7
层
+4
层
+5
层
参考模型
_
数据
封装
在
传输
层
封装
的
主要内容是什么...
TCP/IP四
层
模型,是由实际应用发展总结出来
的
,它包含了应用
层
、
传输
层
、网际
层
和网络结构
层
,不过从实质讲,TCP/IP...
赞
踩
article
计算机网络
-
负载
均衡算法...
2.源地址哈希法(Source Hashing):根据请求来源的IP地址进行哈希计算,然后将请求分发到对应的服务器上,这...
赞
踩
article
计算机网络
第三章
数据
链路层
数据
链路层
的
三大问题...
计算机网络
分为五个层次,从下往上依次是物理层(实际传输01代码),
数据
链路层
,网络层,运输层,应用层。这一次我们学习
的
是...
赞
踩
article
《
计算机网络
—自顶向下方法》
Wireshark
实验(四):
TCP
协议
分析
_
tcp
协议
分析
实验...
本篇主要学习
TCP
协议
,报文结构、三次握手、四次挥手、可靠传输、超时重传、连续ARQ
协议
、流量控制和拥塞控制,最后通过W...
赞
踩
article
《
计算机网络
—自顶向下方法》
Wireshark
实验
(六):
IP
协议
分析
_ip
协议
分析
实验
...
本文主要学习
IP
协议
,包括
IP
数据包、数据包分片、
IP
v4编码、划分子网、
IP
路由选择、路由聚合、
IP
分组转发,最后通过...
赞
踩
article
计算机网络
—
TCP
协议
数据分析
_
tcp
协议
发送与解析...
1.捕获
TCP
数据报;2.熟悉
TCP
数据报头各个字段的作用;3.加深理解
TCP
报文结构;4.通过跟踪
TCP
应用通信,能结...
赞
踩
article
[计算机网络]
实验
四
TCP
协议
分析
_
tcp
协议
分析
实验
...
目录
实验
目的
实验
内容1.wget使用和
TCP
分析
实验
目的了解运输层
TCP
协议
基本概念、报文结构
分析
TCP
报文头部...
赞
踩
article
【
计算机网络
】
TCP
协议_包含
http
post
消息的tcp
报文
段的序号是...
gaia.cs.umass.edu发送给客户端计算机以回复 SYN 的 SYN-ACK
报文
段的序列号是88306178...
赞
踩
article
【
计算机网络
】
数据
链路层
差错控制
循环
冗余
码
CRC
及
FCS
习题5...
在
计算机网络
中,关于
差错控制
,我们主要要比特控制。比特控制,简单理解,即在传输过程中,0变为1,1变为0。
差错控制
主要有...
赞
踩
article
计算机网络
——
TCP
与UDP...
cwnd = 1,即门限设为拥塞窗口的一半,拥塞窗口设为1。接收⽅不要等待⾃⼰发送数据时才进⾏捎带确认,⽽是要⽴即发送确...
赞
踩
article
计算机网络——
静态
路由
的
配置
实验_
静态
路由
器
的
配置
实验...
静态
路由
是由用户管理员在
路由
器
中手动
配置
的固定
路由
,因为是人工
配置
的,所以当网络的拓扑。)根据以上拓扑划分出的三个网段,...
赞
踩
article
【
计算机网络
】
实验
三
路由器
实验
...
一、
实验
目的1、掌握
路由器
的基本原理和基本管理命令2、掌握
路由器
的Telnet管理配置方法。3、理解静态路由的概念、原理...
赞
踩
article
计算机网络
——
路由
实验
(
静态
路由
,
RIP
,
ospf
单
区域
,多
区域
)_
静态
路由
实验
...
(1)学习
静态
路由
理论知识,熟悉并掌握
静态
路由
配置;(2)学习
RIP
路由
理论知识,熟悉并掌握
RIP
路由
的配置;(3)学习...
赞
踩
相关标签
计算机网络
网络
tcp/ip
网络协议
负载均衡
算法
三次握手四次挥手
超时重传
连续ARQ协议
流量控制和拥塞控制
IPv4
划分子网
路由选择
分组转发
服务器