计算机网络1

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 1

TCP与UDP

区别:

  • udp是不面向连接的,tcp是面向连接的,并且它能保证数据的有序和有效,但是udp不行,它不能保证,它可能会存在错误;
  • tcp还具有超时重传的功能;tcp能保证数据达到一定限制后就不再接收,但是udp不会,就容易造成堵塞;
  • 当然udp也有自己的优点,udp可以进行广播,但是tcp不行

介绍:

传输控制协议TCP,提供面向连接、可靠的数据传输服务,数据单位:报文段,有流量控制、拥塞控制、提供全双工通信、面向字节流(将应用层传下来的报文看成字节流,把字节流组织成大少不等的数据块),每一条TCP连接只能是点对点的,提供完整性服务

用户数据报协议UDP,提供无连接,尽最大努力的数据传输服务,数据单位:用户数据报,没有拥塞控制,面向报文(对应用层传下来的数据既不合并也不拆分,只加UDP首部),支持一对一,一对多、多对多和多对一的交互通信,主要提供及时性服务

UDP数据报格式

UDP用户数据报的首部的十六进制表示是:

06 32 00 45 00 1C E2 17

  • 06 32是源口 十六进制转十进制6*16^2+3*16^1+2*16^0=1586.
  • 00 45是目的端口 转十进制4*16^1+5*16^0=69
  • 00 1c是用户数据包的总长度=16+12=28
  • 数据部分长度为:28-首部长度=28-8=20
  • 由于目的端口69<1023是熟知端口(服务器端使用的端口号),因此该UDP数据报是从客户发给服务器的,程序是TFTP

两种方法

  1. 十六进制->二进制->十进制
  2. 十六进制->十进制

TCP报文例题

注意点70到99是30字节的数据,A向B发两个报文段,B收到第一个报文段后发送的确认号应为第二个报文段的序号

22.主机 A 向主机 B 连续发送了两个 TCP 报文段,其序号分别为 70 和 100。试问:
(1)第一个报文段携带了多少个字节的数据?
(2)主机 B 收到第一个报文段后发回的确认中的确认号应当是多少?
(3)如果主机 B 收到第二个报文段后发回的确认中的确认号是 180,试问 A 发送的第二个报文段中的数据有多少字节?
(4)如果 A 发送的第一个报文段丢失了,但第二个报文段到达了 B。B 在第二个报文段到达后向 A 发送确认。试问这个确认号应为多少?

  1. 100-70=30,(99-70+1)
  2. 100,下一个的序号
  3. 180-100=80,(179-100+1)
  4. 70

tcp滑动窗口,拥塞控制,确认号

滑动窗口

  • 滑动窗口协议,用于流量控制,可以加速数据的传输,可以发送多个数据包,而不需等待ACK
  • 包含发送窗口和接收窗口
  • 客户端和服务端各一个滑动窗口
  • 窗口大小由接收窗口决定
  • 在收到ACK后,当前窗口可以被移除,指针后移即可

发送窗口

是操作系统的一个缓冲区,是一个循环数组被三个指针分割区域为四个区域

四个区域

  1. 发送并确认接收--此区域可以被新数据覆盖
  2. 发送未确认接收
  3. 可以发送未发送
  4. 不能发送

三个指针

  • 指针1: 指向第一个已发送但是未接收到ack的字节
    指针2: 指向第一个允许发送但是还未发送的字节
    指针3: 发送窗口的大小

接收窗口

当数据包的seq == RCV_NEXT的数据包的时候,指针RCV_NEXT会向后移到窗口内第一个未接收数据的字节,指针WND会减去移动的字节数

当数据包的seq < RCV_NEXT时,表示该数据包已被接收,接收方会重新发送ACK

三个区域

  • 应用层已经读取的数据
  • 接收并发送确认请求
  • 接收窗口的数据
  • 接收窗口无序接收数据包,导致部分数据接收成功,部分未接收,直接缓存到接收窗口(仍然会发送ACK)
  • 还未收到的数据
  • 超出窗口范围

两个指针

  • 指针1-RCV_NEXT指向窗口内第一个未接收数据的字节
  • 指针2-WND规定窗口大小

特殊情况,当A向B发送数据,B的缓冲区满了,此时A停止发送,之后B的缓冲区恢复,B发送的报文丢失,A并未收到,会导致双方出现互相等待的状态,出现死锁。引入持续计时器,当A收到零窗口请求时,开启次计时器,每到计时器结束,发送一个1字节探测报文,会返回窗口大小,如果仍为0,则再次开启。

拥塞控制

TCP tahoe 与TCP reno

TCP Tahoe协议是TCP最早的TCP拥塞控制版本,主要包括三个机制用于控制拥塞窗口:慢启动、拥塞避免和快速重传。

Reno是应用最广泛且较为成熟的算法。该算法所包含的慢启动、拥塞避免和快速重传、快速恢复机制,是现有的众多算法的基础。

拥塞的条件

  • 重传计时器超时---进入慢开始
  • 收到三个重复的ACK---进入快重传,快恢复

慢开始

增长速度为指数级别,每轮增长为2*,即1-2-4-8-16
避免因流量过大导致网络阻塞,引入了ssthresh变量,设置慢开始的结束点,然后把cwnd设置为1,开始慢开始算法

拥塞控制

增长速度为线性增长,每轮拥塞窗口+1,可以有效防止网络过早拥塞

加法增大(超时情况)与乘法减小(防止网络过早拥塞)

加法增大:只要出现超时,就把ssthresh减半

乘法减小:每次拥塞控制为线性增长,防止网络过早拥塞

快重传

规定当发送方收到三个连续重复的确认请求时,直接重传,而不用等重传计时器到时,可以加大网络吞吐量

例如:发送方传送M1,M2,M3给接收方,接收方连续发送了三个对M2的确认请求,则发送方直接重传M3

快恢复

当收到三个连续重发的确认请求,在快重传后,设置cwnd=ssthresh,直接进入拥塞控制阶段,

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
30天前
|
缓存 网络协议 算法
计算机网络常用知识总结!(二)
计算机网络常用知识总结!
|
30天前
|
缓存 网络协议 搜索推荐
计算机网络常用知识总结!(一)
计算机网络常用知识总结!
|
30天前
|
SQL 缓存 网络协议
计算机网络常用知识总结!(三)
计算机网络常用知识总结!
|
6月前
计算机网络:传输媒体
计算机网络:传输媒体
88 1
|
6月前
|
存储 安全 网络协议
计算机网络知识
【1月更文挑战第11天】计算机网络知识。
67 0
|
存储 安全 算法
计算机网络中的安全
计算机网络中的安全
124 0
|
存储 分布式计算 负载均衡
|
网络协议 Java 数据挖掘
计算机网络初识
本篇作为计算机网络部分知识的起始篇,先带大家来了解关于计算机网络的一些基本内容。
234 0
计算机网络初识
计算机网络:组帧
计算机网络:组帧
353 0
计算机网络:组帧