网络基本知识
来源:互联网 发布:网络优化工程师好学不 编辑:程序博客网 时间:2024/05/22 15:01
关于网络的一些基本知识,比如物理传输速率,带宽,网络传输速率,延迟等概念感觉还是有些模糊,在这里做一个总结以方便记忆。
先说说物理传输速率,电缆中的信号传播速度一般在20w公里每秒,光纤因为折射等原因好像要低一点,没关系,都算20w好了,这个基本上无法提高了。我们的数据在网络上传输时,依赖的底层物理介质就是电缆或者光纤,考虑国内外传输距离一万公里,在这里电缆的传输速度相当于汽车的行驶速度(假设汽车速度固定),而传输距离相当于高速公路的总里程,因此这里的传输速度和距离长度是没有直接关系的,不管你是传输到北极还是南极,都是20w公里每秒。你的一个bit数据从网络的一端开始传输,假设中间没有任何干扰(比如路由跳数延迟),传输到另一端的时间就是1万公里除以20万公里等于50毫秒。这是一个很小的值,如果在国内传输基本会更小,因此由于物理介质传输速度导致的延迟是非常小的,甚至可以忽略不计。
带宽实际上是在传输物理介质的基础上而来的,是运营商网络能提供的单位时间内最大传输数据量,常用Mbps/Gbps来表示每秒钟能传输的数据量。这里Mbps/Gbps时运营商提出给概念,是运营商在物理介质的基础上通过网络建设提出的网络带宽速度。由于物理介质的传输速度是固定的,为了能同时传输足够多的数据,运营商需要扩展网络线路,解决网络上数据量过大导致的网络拥塞问题。这里的网络线路相当于火车轨道,如果一条线路同时只能行驶一辆列车,为了单位时间内运送更多的货物,可以增加轨道增加行驶列车,带宽就是运送的货物。很多人可能将带宽理解成我们数据在网络上一定距离内传输的速度,其实不是这样的,这里的带宽和我们通常理解的物理传输速率其实没有直接关系。物理传输速率提升可以提高带宽,但是通过网络扩建同样可以提高带宽。通常运营商面对普通消费者宣传地网速就是这里的带宽。
网络传输速率需要根据带宽的使用来区分,比如可靠传输,不可靠传输。
在TCP传输中有一个概念叫做窗长,由于我们需要不断确认,而且也要确保接收方能来得及处理我们发送的数据,我们不可能一口气不停往下发,而是每发送一小段数据就停下来,等待一个确认信息。在没有确认信息的情况下一口气能发送的最大数据大小就叫做窗长,由于历史原因,这个数据使用16位二进制数表示,最大是65535,也就是一次确认最多传输64KB的大小。
我们考虑数据在发送方和接收方之间走一次来回的延迟,这个一般叫做round-trip time(RTT),一般比如说你用ping命令去ping一个地址的时候,看到的时间就是RTT。一个TCP报文从发送方发出,到接收方的确认信息到达发送方,这个时间就是RTT,那么这段时间当中最大能发送的数据量就是Max Windows Size = 64KB,于是传输速率受到确认机制影响的上限是:窗长 / RTT。这就是延迟对可靠传输的影响。
比如说我们现在有两个距离非常远的发送方和接收方,它们之间的延迟有100ms,那么使用默认最大窗长的时候,最大传输速率就是640KB/s = 5Mb/s左右。这个按现在的网速来看显然已经不够快了,而一些很重要的数据链路,比如说同步卫星通信的链路,跨大洋的海底光缆线路,都会有比较高的延迟,这时候如果使用默认窗长,传输速率就会明显低于线路的速率限制,浪费了很多线路资源。幸好TCP协议现在支持一种扩展,可以将窗长最大扩充到2^30字节,也就是1GB,这样即使传输双方RTT达到了1s,也可以有8Gbps的传输速率。不过不一定通信双方都实现了、或者愿意使用这一协议扩展,在没有使用的时候就仍然受到前面所说的限制。另外如果真的要建立一个到火星的TCP,到火星的RTT可能有10分钟以上,这个速率就又要大大受影响了。
- 网络基本知识
- 网络基本知识
- 网络基本知识
- 网络基本知识
- 网络基本知识
- 网络基本知识
- 网络基本知识
- 网络基本知识
- 网络基本知识
- 网络基本知识
- 网络基本知识(来源书上)
- 网络编程一些基本知识
- Linux网络编程基本知识
- java网络的基本知识
- 网络存储的基本知识
- 初级网络配置基本知识
- 《java网络的基本知识》
- 网络编程基本知识
- obs之libx264编码
- Linux笔记记录2 do_fork
- c# 反射和特性
- spring源码学习(五)Bean的加载(上)
- 关于访问自己电脑做服务器的相关IP知识
- 网络基本知识
- 全球国家的名称简体中文js对象 数组
- HDU 6128 Inverse of sum(推公式)
- -mysql-锁机制分为表级锁和行级锁
- java 计算两个字符串,或者Date相差的天数
- Mongo更新文档操作
- 获取项目路径名
- 头插邻接表
- apicloud aui 做底部导航