| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 计算机网络(三) -> 正文阅读 |
|
[网络协议]计算机网络(三) |
第三章:传输层概述和传输层服务
网络层服务:主机之间的逻辑通信 传输层服务:进程间的逻辑通信
多路复用与解复用 在发送方主机多路复用 从多个套接字接收来自多个进程的报文,根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装 (该头部信息用于以后的解复用 在接收方主机多路解复用 根据报文段的头部信息中的IP地址和端口号将接收到的报文段发给正确的套接字(和对应的应用进程)
当主机接收到UDP报文时:
具备相同目标IP地址和目标端口号,即使是源IP地址且源端口号的IP数据报,将会被传到相同的目标UDP套接字上
TCP套接字:四元组本地标识 解复用:接收主机用这四个值来将数据报定位到合适的套接字 服务器能够在一个TCP端口上同时支持多个TCP套接字
Web服务器对每个连接客户端有不同的套接字
多线程Web Server
无连接传输:UDP
为什么使用UDP
注意:当数字相加时,在最高位的进位要回卷,再加到结果上 可靠数据传输原理 rdt在应用层、传输层和数据链路层都很重要,信道的不可靠性特点决定了可靠数据传输的复杂性
?
rdt2.0存在致命缺陷:如果ACK/NAK出错,发送方不知道接收方发生了什么事情,发送方可能会重传(导致重复问题),不重传(导致出错) 需要引入新的机制:序号,用于标识当前需要的分组序号 处理重复:发送方在每个分组中加入序号,如果ACK/NAK出错,发送方重传当前分组,接收方丢弃重复分组,重新发送ACK信号 停等协议:发送方发送一个分组,然后等待接收方应答 FSM描述
功能同rdt2.1,但只使用ACK(ack要编号) 接收方对最后正确接收的分组发ACK,以代替NAK
当收到重复的ACK(如:再次收到ack0)时,发送方与收到NAK采取相同的动作:重传当前分组、 为后面的一次发送多个数据单位做一个准备
FSM描述 发送方和接收方片段,对比rdt2.1
引入计时器应对分组丢失 新的假设:下层信道可能会丢失分组(数据或ACK),将会导致死锁问题 方法:发送方等待ACK一段合理的时间(后续会介绍)
FSM描述 rdt3.0的性能 rdt3.0可以工作,但链路容量比较大的情况下,性能很差,链路容量比较大,一次发一个PDU 的不能够充分利用链路的传输能力
两种通用的流水线协议:回退N步(GBN)和选择重传(SR)
发送缓冲区
发送窗口
接收窗口
发送缓冲区大于1的情况 正常情况下的2个窗口互动 发送窗口
接收窗口
异常情况下GBN的2窗口互动 异常情况下SR的2窗口互动
Go-back-N:
Selective Repeat:
GBN : ? ; 解释 SR : ?:解释见下图 由于SR对每个分组都会进行确认,如果超过序号的一半,出现下列情况,接收窗口不知道当前接收的分组是重传的分组还是新分组 面向连接的传输:TCP
TCP在IP不可靠服务的基础上建立了rdt
通过以下事件触发重传
TCP发送方事件
TCP:重传 产生TCP ACK的建议
快速重传
接收方在其向发送方的TCP段头部的rwnd字段“通告”其空闲buffer大小
发送方限制未确认(“in-flight”)字节的个数≤接收方发送过来的 rwnd 值,保证接收方不会被淹没
在正式交换数据之前,发送方和接收方握手建立通信关系:
同意建立连接 2次握手的失败场景 TCP: 三次握手 3次握手解决:半连接和接收老数据问题 TCP: 关闭连接 客户端,服务器分别关闭它自己这一侧的连接
一旦接收到FIN,用ACK回应
可以处理同时的FIN交换 实际上四次挥手过程存在两军对垒问题,仅供了解 拥塞控制原理
拥塞的表现:
2中常用的拥塞控制方法
ABR: available bit rate
RM(资源管理)信元:
在RM信元中的2个字节 ER (explicit rate)字段
数据信元中的EFCI bit: 被拥塞的交换机设置成1
TCP拥塞控制 端到端的拥塞控制机制
拥塞控制的几个问题
发送端如何探测到拥塞?
如何控制发送端发送的速率
联合控制的方法:发送端控制发送但是未确认的量同时也不能够超过接收窗口,满足流量控制要求
拥塞控制策略:
TCP慢启动
TCP拥塞控制:AIMD 乘性减: 丢失事件后将CongWin降为1,将CongWin/2作为阈值,进入慢启动阶段(倍增直到ConWin/2) 加性增:当CongWin>阈值时,一个RTT如没有发生丢失事件 ,将CongWin加1MSS: 探测 当收到3个重复的ACKs:
当超时事件发生时:
TCP是公平的 2个竞争的TCP会话:
|
|
网络协议 最新文章 |
使用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 3:35:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |