| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 计算机网络笔记(6)---TCP、可靠数据传输、拥塞控制 -> 正文阅读 |
|
[网络协议]计算机网络笔记(6)---TCP、可靠数据传输、拥塞控制 |
1 TCP1.1 TCP概述 (1)点对点:一个发送方,一个接收方;(2)可靠地、按序的字节流; (3)流水线机制---TCP拥塞控制和流量控制机制设置窗口尺寸;(4)发送方/接收方缓存; (5)全双工(full-duplex)---统一连接中能够传输双向数据流; (6)面向连接: a、通信双方在发送数据之前必须建立连接;b、连接状态只在连接的两端中维护、在沿途结点中并不维护状态;c、TCP连接包括:两台主机上的缓存、连接状态变量、socket等; (7)流量控制机制; 1.2 TCP段结构 1.3 TCP:序列号和ACK? ?1.4 TCP可靠数据传输 1、TCP可靠数据传输概述 2、TCP RTT(定时器超时时间设置)和超时? (1) SampleRTT:测量从段发出去到收到ACK的时间---忽略重传 (2) SampleRTT变化:测量多个SampleRTT,求平均值,形成RTT的估计值EstimateedRTT ?3、TCP发送方事件 ?4、TCP重传示例 ? ?5、TCP ACK生成 ? ?6、快速重传机制 ?(1)问题:TCP的实现中,如果发生超时,超时时间间隔将重新设置,即将超时时间间隔加倍,导致其很大;-----导致重发丢失的分组之前要等待很长时间 ?(2)分析:通过?ACK检测分组丢失---Sender会背靠背的发送多个分组,如果某个分组丢失,可能会引发多个重复的ACK; (3)解决:如果Sender收到对同一数据的3个ACK,则假定该数据之后的段已经丢失----快速重传:在定时器超市之前即进行重传; ?1.5 TCP流量控制(flow control)---速度匹配机制 (1)接收方为TCP连接分配buffer;(2)上层应用可能处理buffer中的数据速度较慢; 流量控制:?发送方不会传输的太多、太快以至于淹没接收方(buffer溢出) 假设:TCP receiver丢失乱序的segments, a、Receiver通过在Segment的头部字段将RcvWindow告诉Sender; b、Sender限制自己已经发送的但还未收到ACK的数据不超过接收方的空闲RcvWindow尺寸; 1.6 TCP连接管理 TCP sender(发送方)和receiver(接收方)在传输数据前需要建立连接; 1、初始化TCP变量:(1)Seq.#;(2)Buffer和流量控制信息; 2、Client(客户端):连接发起者:Socket clientSocket = new Socket("hostname","port number"); 3、Server(服务器):等待客户连接请求:Socket connectionSocket = welcomeSocket.accept(); 三次握手---Three way handshake Step 1:client host sends TCP SYN segment to server;(specifies initial seq#,no data)注释:客户端向主机发送一个SYN报文段,不携带数据,将SYN标志位置1,表示建立连接,传递初始序列号; ?Step 2:server host receives SYN,replies with SYNACK segment;(server allocates buffers,specifies server initial seq.#)注释:主机收到SYN报文段,答复SYNACK报文段,服务器会分配缓存为这个连接,选择自己服务器的初始报文段; Step 3:client receives SYNACK,replies with ACK segment,which may contain data;注释:客户机收到SYNACK,会答复一个ACK报文段,标志位不置1,这个会携带数据; TCP连接管理:建立 TCP连接管理:关闭-----segment报文段 ?1.7 拥塞控制原理 1、拥塞(Congestion) (1)非正式定义:"太多发送主机发送了太多数据或者发送速度太快,以至于网络无法处理" (2)表现:分组丢失(路由器缓存溢出);分组延迟过大(在路由器缓存中排队) (3)拥塞控制VS流量控制 2、拥塞的成因和代价 (1)路由器有无限缓存---时延无限大 ?(2)一个路由器---有限buffers,Sender重传分组 ?(3)四个发送方,多跳,超时/重传 ? ?3、拥塞控制的方法 ?a、端到端拥塞控制: ?(1)网络层不需要显示的提供支持;(2)端系统通过观察loss、delay网络行为判断是否发生拥塞;(3)TCP采取这种方法; b、网络辅助的拥塞控制: (1)路由器向发送方显式地反馈网络拥塞信息;(2)简单的拥塞指示(1bit):SNA,DECbit,TCP/IP ECN,ATM;(3)指示发送方应该采取何种速率; 4、案例:ATM ABR拥塞控制 ? 1.8?TCP拥塞控制的基本原理 ?(1)加性增---乘性减:AIMD(Additive Increase,Multiplicative Decrease) ?原理:逐渐增加发送速率,谨慎探测可用带宽,知道发生los; AIMD---Additive Increase:每个RTT将CongWin增大一个MSS---拥塞避免(MSS最大段的长度) AIMD---Multiplicative Decrease:发生loss后将CongWin减半; (2)?TCP慢启动:SS a、TCP连接建立时,CongWin=1;例如MSS=500byte,RTT=200msec,初始速率=20kbps; b、可用带宽可能远远高于初始速率:希望快速增长 c、原理:当连接开始时,指数性增长; d、指数性增长:每个RTT将CongWin翻倍,收到每个ACK进行操作; e、初始速率很慢,但是快速攀升; ? ?(3)Threshold变量
a、3个重复的ACKs:CongWin切到一半,然后线性增长 b、Timeout事件:CongWin直接设为1个MSS,然后指数增长,达到threshold后,再线性增长; 注:3个重复的ACKs表示网络还能够传输一些segments;timeout事件表明拥塞更为严重; (5)TCP拥塞控制:总结 ?6、TCP拥塞控制算法 ? ?1.9 TCP性能分析 ?2.0 传输层总结 |
|
网络协议 最新文章 |
使用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 1:46:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |