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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络运输层 -> 正文阅读

[网络协议]计算机网络运输层

来源于湖科大教书匠

运输层概述

AP是应用进程的缩写

image-20211027190921892

image-20211027190644247

image-20211027190902870

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

image-20211027212126184

image-20211027212212761

image-20211027212243552

UDP与TCP的对比

image-20211027214043133

连接指的是逻辑连接关系,而不是物理连接

image-20211027214214773

TCP使用三次握手建立连接,连接建立后,就类似于一条可靠信道

image-20211027214749566

TCP不保证接收与发送各自的进程快具有对应大小的关系。

TCP是全双工通信的。

例如:发送方应用进程向发送方TCP发送了10个数据块,接收方TCP只用了4个数据块,就把收到的字节流交付给了上层的应用进程,并还原出了有意义的应用层数据

image-20211027214836361

image-20211027214916504

image-20211027214930166

TCP的流量控制

image-20211029214253372

image-20211029213530247

image-20211029213722363

image-20211029213827830

image-20211029213900935

TCP规定,即使接收窗口为0,也必须接受零窗口探测报文段、确认报文段、以及携带有紧急数据的报文段。

如果零窗口探测报文段丢失,也会打破死锁局面,因为零窗口探测报文段也有重传计时器。

image-20211029214223450

TCP的拥塞控制

image-20211030095201537

image-20211030095235128

image-20211030095312211

慢开始(slow-start)

image-20211030095539709

image-20211030095610579

image-20211030095634372

拥塞避免(congestion-avoidance)

image-20211030095800158

image-20211030095829209

image-20211030095852757

image-20211030095928426

image-20211030100019450

image-20211030100131718

快重传(fast-retransmit)

image-20211030100222643

快恢复(fast-recovery)

image-20211030100439832

image-20211030100636651

image-20211030100809302

TCP超时重传时间的选择

image-20211030153605417

image-20211030153620914

image-20211030153707043

image-20211030153749198

image-20211030154042318

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GufVrtQj-1636447373575)(https://gitee.com/he-hao-hh/cloudimage/raw/master/img/image-20211030154201605.png)]

image-20211030154224175

image-20211030154540440

TCP可靠传输的实现

image-20211030162846743

image-20211030162910785

image-20211030163049484

image-20211030163121889

image-20211030163324139

image-20211030163339222

image-20211030163407408

image-20211030163432275

TCP的运输连接管理--------TCP的连接建立(三报文握手)

image-20211031100601758

要解决的问题

image-20211031100705652

实现过程

开始,TCP服务进程首先创建传输控制块,用来存储TCP连接的一些重要信息。(例如:TCP连接表等)

image-20211031101335226

接下来准备接收TCP客户进程的连接请求。此时,TCP服务器进程进入监听状态,等待客户进程的连接请求。

image-20211031101313486

然后,在打算建立TCP连接时,向TCP服务器进程发送TCP连接请求报文段,并进入同步已发送状态。

image-20211031101413813

TCP连接请求报文段首部中的同步位SYN被设置为1(表明这是一个TCP连接请求报文段),序号字段seq被设置了一个初始值x,作为TCP客户进程所选择的初始序号。

TCP规定,SYN被设置为1的报文段不能携带数据,但要消耗掉一个序号。

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

image-20211031101929916

服务器端收到请求后,若同意建立连接,则向客户端发送TCP连接请求确认报文段,并进入同步已接收状态。

该报文段的同步位SYN和确认位ACK都为1,表明这是一个TCP连接请求确认报文段。序号字段seq被设置为初始值y,作为TCP服务进程所选择的初始序号。确认号字段ack为x+1,这是对TCP客户进程所选择初始序号的确认(这个报文段也不能携带数据)

image-20211031102515271

TCP客户进程收到TCP服务器的连接请求报文段后,还要发送一个普通的TCP确认报文段,并进入连接已建立状态。

确认位ACK为1,表明这是一个普通的TCP确认报文段,序号字段seq为x+1,确认号字段为y+1,这是对TCP服务器进程所选择的初始序号的确认。TCP服务器进程收到该确认报文段后也进入连接已建立状态。

TCP规定普通的TCP确认报文段可以携带数据但如果不携带数据则不消耗序号

在这种情况下,所发送的下一个数据报文段的序号仍是x+1

image-20211031103640203

双方连接建立后,就可以进行数据传输了。

image-20211031103722095

为什么不能使用“两报文握手”建立连接?

image-20211031103859163

采用三报文而不用两报文是为了防止已失效的连接请求报文段突然又传送到了TCP服务器。

练习

image-20211031104550184

TCP的运输连接管理--------TCP的连接释放(四报文挥手)

实现过程

客户与服务器都处于连接已建立状态,假设使用TCP客户进程的应用进程通知其主动关闭TCP连接,TCP客户进程会发送TCP连接释放报文段 并进入终止等待1状态,终止位FIN=1,确认位ACK=1表明这是一个TCP连接释放报文段,同时也对之前收到的报文段进行确认。

序号seq字段的值设置为u,它等于TCP客户进程之前已传送过的、数据的最后一个字节的序号+1。确认号ack=v,它等于TCP客户进程之前已收到的、数据的最后一个字节+1。

TCP规定终止位FIN=1的报文段即使不携带数据,也要消耗掉一个序号。

image-20211031121136733

TCP服务器进程收到TCP连接释放报文段后,会发送一个普通的TCP确认报文段并进入关闭等待状态。

ACK=1,表明这是一个普通的TCP确认报文段,序号seq=v,它等于TCP服务器进程之前已经传送过的数据的最后一个字节的序号+1。

确认号ack=u+1,这是对TCP连接释放报文段的确认。

TCP服务器进程这时要通知高层应用进程:TCP客户进程要断开与自己的TCP连接。

image-20211031121805402

此时TCP客户——>TCP服务器这个方向的连接就释放了。这时TCP属于半关闭状态,也就是客户进程无数据发送,但服务器进程如果还有数据要发送,TCP客户进程仍要接收。也就是说从TCP服务器——>TCP客户这个方向的连接并未关闭。(此状态会持续一段时间)

TCP客户进程收到确认报文段后就进入终止等待2状态。等待TCP服务器进程发出的TCP连接释放报文段。若使用TCP服务器进程的应用进程已没有数据要发送了,应用进程就通知其TCP服务器进程释放连接。(由于TCP连接释放是由TCP客户进程主动发起的,因此,TCP服务器进程对TCP连接的释放称为被动关闭连接)

image-20211031122734273

TCP服务器进程发送TCP连接释放报文段并进入最后确认状态。

终止位FIN=1,确认位ACK=1,表明这是一个TCP连接释放报文段,同时也对之前收到的报文段进行确认。

假定序号seq字段的值为w。这是因为在半关闭状态下,TCP服务器进程可能又发送了一些数据。

确认号ack字段的值为u+1,这是对之前收到的TCP连接释放报文段的重复确认。image-20211031123917392

TCP客户进程收到TCP连接释放报文段后,必须针对该报文段发送普通的TCP确认报文段,之后进入时间等待状态。

确认位ACK=1,表明这是一个普通的TCP确认报文段,seq字段的值为u+1,这是因为TCP客户进程之前发送的TCP连接释放报文段虽然不携带数据,但要消耗掉一个序号,确认号ack=w+1,这是对所收到的TCP连接释放报文段的确认。TCP服务器进程收到该报文段后就进入关闭状态。而TCP客户进程还要进过2MSL后才能进入关闭状态。

image-20211031131703027

TCP客户进程在发送完最后一个确认报文段后,为什么不直接进入关闭状态,而是进入时间等待状态?

image-20211031132020505

TCP客户进程发送完最后一个TCP确认报文段后,再经过2MSL,就可以使本次连续持续时间内所产生的所有报文段从网络中消失,这样就可以使下一个新的TCP连接中,不会出现旧连接中的报文段。

TCP中保活计时器的作用

image-20211031132503638

TCP报文段的首部格式

image-20211103111030967

固定首部

image-20211103111104172

image-20211103111201328

image-20211103111230658

image-20211103111245092

image-20211103111300040

image-20211103111356589

image-20211103111416113

image-20211103111431560

image-20211103111444206

发送窗口应该从接收窗口和拥塞窗口中取小者

? image-20211103111602685

TCP报文段中检错算法不是重点

image-20211103111624880

image-20211103111729993

image-20211103111750342

image-20211103111800805

image-20211103111816279

image-20211103111838925

扩展首部

image-20211103111907475

image-20211103111925990

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:45:58  更:2021-11-10 12:47:09 
 
开发: 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年7日历 -2024/7/1 21:22:04-

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