| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> TCP/IP详解:TCP——初步 -> 正文阅读 |
|
[网络协议]TCP/IP详解:TCP——初步 |
1、ARQ(Automatic Repeat?Request自动重复请求)和重传 一个直接处理分组丢失或比特差错的方法是重发分组,那么发送方如何判定需要重发呢?引入接收方的确认机制ACK(Acknowledgment)。接收方在接收到一个正确的分组后给发送方发送一个ACK。于是又引入了三个问题:
问题1比较复杂,之后讨论。对于问题2,发送方不能轻易地把这种情况和分组丢失了区分开来,他只能再次发送原分组。问题3可以通过校验和与CRC(循环冗余校验算法)检测到,检测到出错后将不会发送ACK。 在问题3发生之后,发送方会再次发送分组,接收方则会收到重复的副本,这个问题需要使用序列号来处理。每个分组都有一个唯一的序列号,接收方通过序列号来判断是否已经见过这个分组,如果有则丢弃新来的分组 2、分组窗口和滑动窗口 分组窗口是一个已被发送但还没被确认的分组的集合,这个窗口的分组数量成为窗口大小,下图是一个发送方的窗口 发送方下一步可能收到一个分组4的ACK,这时窗口会向右滑动一个分组,此时意味着分组4已被确认,可以释放了,而分组7进入窗口可以被发送了。? 接收方也会维护一个类似的窗口用来记录哪些分组已经被接收和确认,哪些分组是下一步期望的,哪些是即使被接收也将会因为内存限制而被丢弃。 而对于这个窗口应该取多大,或者当接收方或网络处理不过来发送方的数据率时会发什么声明,看下面内容 3、变量窗口:流量控制和拥塞控制 接收方处理速率跟不上发送方时会强迫发送方慢下来,称为流量控制。通常有两种操作: 一种是基于速率,最适合流应用程序,可被用于广播和组播发现 另一种是基于窗口。接收方通过通知发送方应该使用多大的窗口来使发送方调整他的窗口大小,这称为窗口通告或窗口更新。窗口更新与ACK是由同一个分组携带的。 发送方的速率也有可能超过中间某个路由器的能力,从而导致丢包,这由一种特殊的流量控制形式来处理——拥塞控制,后面讨论。 4、TCP头部和封装 ?上图是TCP在IP数据报中的封装 ? ?上图是TCP的头部 5、四元组 TCP头部中包含了源和目的端口号,与IP头部中的源和目的IP地址一起称为四元组,唯一的标识了一个TCP链接。 ? ?以上所有配图来自TCP/IP详解 卷1 原书第二版 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/26 2:52:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |