IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络传输层补充总结 -> 正文阅读

[网络协议]计算机网络传输层补充总结

计算机网络传输层补充总结

本文内容课件选自B站UP:湖科大教书匠 的计算机网络微课堂,对计算机传输层重点知识体系进行系统梳理记忆。

运输层端口号复用与分用的概念

在这里插入图片描述


应用层报文使用TCP封装称之为TCP复用,使用UDP封装称之为UDP复用,反之解封装称之为分用。
在这里插入图片描述


在这里插入图片描述

TCP和UDP的对比

TCP和UDP的使用频率仅次于网际层的IP协议
在这里插入图片描述
使用UDP,用户之间可以随时进行数据传输交换,在TCP中的“建立连接”是一种逻辑连接,而非物理连接。
在这里插入图片描述
UDP支持一对一(单播),一对多(多播),一对全(广播)的通讯。
TCP仅支持一对一的通讯。
在这里插入图片描述
UDP对应用进程交付下来的报文,既不合并也不拆分,而是保留报文的边界,也就是说UDP是面向应用报文的。
TCP并不知道也不关心应用进程进行传输的这一连串字节流,在自己的发送缓存中提取一定量的字节组成TCP头部进行传输,TCP是面向字节流的。TCP不保证接收方应用进程所收到的数据块与发送方应用进程所发出的数据块具有对应大小的关系,例如发送方进程交给发送方的TCP10个数据块,但接收方的TCP可能只用了4个数据块就把收到的字节流交付给了上层的应用进程,但接收方接收的字节流必须和发送方应用进程发出的字节流完全一样。
在这里插入图片描述


在这里插入图片描述
UDP由于提供不可靠的传输服务,它与IP协议相比仅仅提供了用于区分应用进程的端口的功能,故首部结构十分简单,每部分占2个字节。
TCP要提供可靠传输,流量控制,拥塞控制等功能,故首部内容十分复杂
在这里插入图片描述

TCP的流量控制

在这里插入图片描述


在收到接收方的累计确认ack之后,可将在发送方缓存中存在的ack=x之前的所有字节数据删除,因为它们已经全部正确到达接收方。
大写ACK是TCP报文段首部中的标志位,取值1表示这是一个TCP确认报文段。
小写ack是TCP报文段首部中的确认号字段,ack=x表示序号x之前的数据均已全部正确接收。
在这里插入图片描述
即时接收窗口为0,接收方也必须接收零窗口探测报文段、确认报文段、以及携带有紧急数据的报文段。
零窗口探测报文段也有重传计时器,当重传计时器超时后,零窗口报文段会被重传。
在这里插入图片描述

示例

TCP发送方的发送窗口 = min[自身拥塞窗口,TCP接收方的接收窗口]
在这里插入图片描述

TCP的拥塞控制

理想的拥塞控制状态下,横线表示输入的负载中有一部分损失掉了,例如,输入到网络中的某些分组被某个结点丢弃掉了。即使在这种状况下,网络的吞吐量仍然维持在其所能达到的最大值。实际的拥塞控制曲线应当尽量接近理想的拥塞控制曲线。
在这里插入图片描述


![在这里插入图片描述](https://img-blog.csdnimg.cn/64b28997fc1446bc8f3a1b74940c8664.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1a4a9fc0f50b4fff8f75321ccc19cc6d.png)

慢开始与拥塞避免

传输轮次是指,发送方给接收方发送数据报文段后,接收方给发送方发回相应的确认报文段,其实就是往返时间,往返时间并非是恒定的数值,使用传输轮次是为了强调把拥塞窗口所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个报文段的确认。
由于swnd=cwnd即拥塞窗口值是几就能发送多少个报文段。
在这里插入图片描述

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

快重传与快恢复

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

在这里插入图片描述

慢开始和快重传的整合理解

在这里插入图片描述

示例

较为简单,不作说明
在这里插入图片描述

TCP超时重传时间的选择

当RTO过小(小于RTT0)时会引起不必要的重传,使网络负荷增大。
在这里插入图片描述

当RTO过大(大于RTT0)时,会使网络的空闲时间增大,降低了传输效率。
在这里插入图片描述

每个IP数据报选择的转发路由可能都不同,如果一直使用RTT0作为RTO的选择标准,可能导致在另一条路由线路上,RTO<RTT1。这对数据报1是很不合适的,会造成没必要的重传。
在这里插入图片描述
将第一次测量得到的RTT作为RTTs,随后进行不断测量更新。
在这里插入图片描述


在这里插入图片描述

无法正确测量出RTT的两种情况

在这里插入图片描述
解决方法:
在这里插入图片描述

示例

在这里插入图片描述

TCP可靠传输的实现

  • 未收到确认的数据都必须在发送缓存中保留,以方便在超时重传过程中使用,在收到确认ack=x之后,可以将x之前的(不包含x,x表示期望接收的下一个数据序号)数据内容备份从缓存中删除。
  • TC不建议发送窗口前沿向后收缩这种情况,因为在接收方发来通知缩小发送窗口之前,发送方可能已经将不在发送窗口大小内的数据发出,这显然将产生错误。

在这里插入图片描述

发送窗口的状态描述

在这里插入图片描述
接收方并不会丢弃32号与33号数据,仍将它们存放在接收缓存中,请求31号数据的发送,在成功接收31号数据之后,可将31,、32/33号数据交付与应用进程,滑动接收窗口。
在这里插入图片描述
在这里插入图片描述

TCP可靠传输中的规定

在这里插入图片描述

TCP连接的建立

在这里插入图片描述

TCP连接要解决的问题

在这里插入图片描述

连接建立的具体过程

  • 首先TCP服务器创建传输控制块。

在这里插入图片描述

  • 然后TCP服务器进程被动等待来自TCP客户进程的连接 请求,被动打开连接。

在这里插入图片描述

  • TCP客户端创建传输控制块。
    -在这里插入图片描述

  • 向TCP服务器进程发送TCP连接请求报文段,并进入同步已发送状态。
    TCP连接请求报文段首部中的同步位SYN被设置为1,表明这是一个TCP连接请求报文段,TCP规定SYN被设置为1的报文段不能携带数据但要消耗掉一个序号。
    序号字段seq被设置了一个初始值x,作为TCP客户进程所选择的初始序号


在这里插入图片描述

  • 由于TCP建立是由客户端主动发起的,因此称之为主动打开连接。

在这里插入图片描述

  • 若同意连接,则向TCP客户端进程发送TCP连接请求确认报文段,并进入同步接收状态
    SYN与ACK均被设置为1,表示这是一个连接请求确认报文。序号字段seq被设置了一个初始值y作为TCP服务进程所选择的初始序号。确认字段ack的值被设置成了x+1,这是对TCP客户进程所选择的初始序号的确认,这个报文段也不能携带数据

在这里插入图片描述

  • 进入连接建立状态,TCP规定普通的TCP确认报文段可以携带数据,但如果不携带数据,则不消耗序号,在这种情况下,所发送的下一个数据报文段的序号仍是x+1。
    ack = y+1表示对TCP所选择的初始序号的确认。

在这里插入图片描述

能否使用两次握手建立连接

第三次客户端发送针对TCP连接请求的确认的确认报文是否多余?
***答:***不多余。如图所示若客户端发送第一次TCP连接请求之后超时计时器超时,那么客户端就会再发送一个连接请求报文,在TCP服务器发来连接请求确认之后,由于改为两次握手,那么此时客户端和服务器之间TCP连接建立完毕,在数据传输完成后,使用四次挥手断开连接,在断开连接之后,第一次发送的TCP请求报文到达服务器端,服务器返回请求确认报文,但该请求确认报文到达客户端时,客户端处于关闭状态,不予处理该确认报文,但服务器端误以为已成功建立TCP连接,一直等待客户端传输数据,会因无效的TCP连接浪费主机的大量资源。
综上所述,不多余!这是为了防止已失效的连接请求报文段突然又传送到了TCP服务器,因而导致错误。

在这里插入图片描述

示例

在这里插入图片描述

TCP的连接释放

TCP通过四次挥手来释放连接

  • 客户端进入终止等待状态
    终止位FIN与确认位ACK位均置为1,表明这是一个TCP连接释放报文段,同时也对之前收到的报文段进行确认,序号字段seq的值设置为u,它等于TCP客户端进程之前已传送过的数据的最后一个字节的序号+1,TCP规定终止位FIN等于1的报文段即时不携带数据,也要消耗掉一个序号,确认字段ack的值设置为v,它等于客户进程已经收到的数据的最后一个字节的序号+1

在这里插入图片描述

  • TCP服务器进入关闭等待状态
    seq的值与上一步ack的值相匹配(TCP服务器所发送的最后一个字节数据的序号+1),ack对上一步seq进行确认。这时表明客户端进程已经没有数据向服务器进程发送了,但从TCP服务器进程到TCP客户端进程这个方向的连接并未关闭,TCP服务器仍然可以向TCP客户端发送自

己要发送的数据,这个状态可能会持续一段时间。
在这里插入图片描述

  • TCP服务器进入最后确认状态
    seq=w表明在关闭等待期间,服务器又发送了部分数据,ack=u+1这是对之前收到的TCP连接释放报文段的重复确认

在这里插入图片描述


TCP客户端进入时间等待状态
对于TCP服务器发送的连接释放报文,TCP客户端发送一个普通的TCP确认报文。
seq=u+1表明最开始的连接释放请求报文虽然不携带数据,但需要消耗一个序号。
ack=w+1表示对TCP服务器发来的连接释放报文的确认。
TCP服务器在接收到连接关闭确认报文后直接进入关闭状态,而TCP客户端进程需要等待2MSL才能进入关闭状态。
在这里插入图片描述

为什么在最后一次挥手之后客户端不能直接进入关闭状态

答:在最后一次连接释放确认报文丢失重传的情况下,以确保TCP客户端能顺利接收服务器发来的最后一次连接释放请求报文。同时,在TCP客户端进程在发送玩完最后一个YTCP确认报文段后,再经过2MSL时长,就可以使本次连接持续时间内所产生的所有报文段都行从网络中小时消失,使在下一次新的连接中,不会出现旧连接中的报文段。在这里插入图片描述

保活计时器

在这里插入图片描述

TCP报文段的首部格式

在这里插入图片描述

源端口号和目的端口号

在这里插入图片描述

序号以及确认号

数据载荷部分的序号仅为字节数据标识,而非数据内容。
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

数据偏移

与IP数据报首部的首部长度字段是一致的,单位为4B。
在这里插入图片描述

窗口

发送窗口的大小还取决于拥塞窗口的大小,应从拥塞窗口接收窗口取小者在这里插入图片描述

校验和

检查范围是首部与数据载荷部分全部检查,IP数据报首部的检验和字段只检验首部,要区分开来。
在这里插入图片描述

SYN

在这里插入图片描述

FIN

在这里插入图片描述

复位标志位RST

在这里插入图片描述

推送标志位PUSH

在这里插入图片描述

紧急标志位URG

在这里插入图片描述

选项字段

在这里插入图片描述


### 填充字段 ![在这里插入图片描述](https://img-blog.csdnimg.cn/dc8884a0473443a895517680a53abe8f.png)
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 01:21:54  更:2022-09-30 01:24:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/19 23:36:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码