本节书摘来自异步社区《CCNP ROUTE 300-101学习指南》一书中的第1章,第1.4节路由和TCP/IP操作,作者 【美】戴安娜 蒂尔(Diane Teare) , 鲍勃 瓦尚(Bob Vachon) , 瑞克 格拉齐亚尼(Rick Graziani),更多章节内容可以访问云栖社区“异步社区”公众号查看

1.4 路由和TCP/IP操作
路由协议是TCP/IP协议栈的一部分,主要工作在第3层。网络通信需要借助大量协议来处理广泛的任务,以实现设备之间的通信。

1.4.1 MSS、分段和PMTUD
IP协议的设计初衷是应用于广泛的传输介质。IPv4数据包的最大长度为65535字节。带有逐跳扩展头部和巨型帧负载选项的IPv6数据包最长可以支持4294967295字节。但多数传输链路都会强制使用一个比较小的最大数据包长度,这个长度称为最大传输单元(Maximum Transmission Unit,MTU)。

当路由器收到比出接口MTU更大的IPv4数据包时,它就必须对数据包进行分片,除非IPv4头部中设置了DF(Don’t Fragment,不分段)位。对数据包进行重组则由目的IPv4地址所在的目的设备负责。分片会造成下列问题:

对数据包进行分片会消耗CPU和内存资源;
目的设备重组数据包,会消耗CPU和内存资源;
如果一个分片被丢弃,整个数据包都要重传;
执行4到7层过滤的防火墙可能无法正确处理IPv4分片。
为了避免分片,TCP最大分段长度(Maximum Segment Size,MSS)定义了接收方设备在一个TCP段中可以接受的最大数据量。TCP段可以通过一个IPv4数据包进行发送,也可以分片后使用多个IPv4数据包发送。发送方和接收方之间不会对MSS进行协商。发送设备需要对TCP分段的尺寸进行限制,使其不大于接收方设备所报告的MSS长度。

为了对避免IPv4数据包进行分片,所选TCP MSS为出接口的最小缓冲区大小和MTU减40字节。40字节包含了20字节的IPv4头部和20字节的TCP头部。例如,默认的以太网MTU是1500字节。那么,通过以太网接口发出的IPv4数据包,其TCP段的TCP MSS就应该是1460,即用以太网 MTU的1500字节减去IPv4头部的20字节,再减去TCP头部的20字节。

TCP MSS有助于避免在TCP连接两端对数据包进行分片,但不能避免因路径中的链路MTU更小而造成的分段。路径MTU发现(Path MTUDiscovery,PMTUD)可以用来确定从数据包的源到目的之间路径上的最小的MTU值。仅TCP协议支持PMTUD。

执行PMTUD的主机会使用由出接口确定的完整MSS,并设置数据包的TCP DF位,使其不会被其他设备执行分片。如果路径上的某台路由器因为其出接口的MTU更低而要对数据包进行分片,那么这台设备就会因为DF置位而丢弃该数据包,并向数据包的始发设备发送一条ICMP目的不可达消息。ICMP目的不可达消息会包含一段代码,指出其“需要分段但DF置位”及造成丢包的出接口MTU。源接收到ICMP消息,将MSS减小到MTU以下,然后重传消息。

如果路由器发送了ICMP目的不可达消息,但这条消息却被其他路由器、防火墙或源设备本身屏蔽掉,PMUTD就会出现问题。PMTUD依赖ICMP消息,所以在设备上过滤ICMP数据包时,应该针对“不可达”或“超时”的数据包制定例外条件。

1.4.2 IPv6分片与PMTUD
IPv6路由器不会对数据包进行分片,除非这台设备是数据包的源。如果一台IPv6路由器收到了比其出接口MTU大的数据包,它会丢弃这个数据包并向源发送一个ICMPv6数据包过大消息,其中会包含这个较小的MTU。

IPv6的PMTUD工作原理与IPv4的PMTUD相似。RFC 1918,Path MTU Discovery for IP version 6,建议IPv6设备应执行PMTUD。

1.4.3 带宽延迟积
TCP在高带宽、长往返延迟的路径上可能会经历瓶颈。这些网络被称为长肥管道(long fat pipe)或长肥网络(long fat network),简称LFN。关键参数是带宽延迟积(Bandwidth Delay Product,BDP),也就是带宽(bps)与往返延迟(单位为秒的RTT)的乘积。BDP是用来“填满管道”所需的比特数(换句话说,也就是在流水线满载时,TCP必须处理的未确认数据总量)。BDP会被用来优化TCP窗口大小,以达到充分利用链路的目的,使得这条链路上随时都可以传输最大的数据量。TCP窗口大小应使用BDP。TCP窗口大小表示在收到确认之前可以发送的数据总量,这个值通常是MSS的几倍。

1.4.4 TCP饥饿
TCP结合了可靠性、流控制和拥塞避免机制。而UDP则是一款轻量型协议,其目的在于更快更简单地传输数据,因此不包含上述这些特性。

在拥塞期间,当网络中同时有TCP和UDP流量在传时,TCP会尝试减少对带宽的占用,这称为慢启动。但UDP并没有任何流控机制,因此会继续发送流量,而这可能会用尽TCP舍让出的可用带宽。这种现象称为TCP饥饿/UDP独占(TCP starvation/UDP dominance)。

虽然我们未必能够轻易分离出基于TCP和基于UDP的流量,但是当我们将使用这两种传输层协议的应用混合起来使用时,了解上述操作还是很重要的。

1.4.5 延迟
延迟是一个消息从一点到另一点所经历的总时间。网络延迟是数据包从源端经过网络到达最终的目的端的总时间。有几种因素可能会导致延迟,包括传播延迟、序列号、数据协议、路由、交换、队列和缓存。

TCP的流控和可靠性特性会对端到端的延迟造成影响。TCP会要求建立虚拟连接,并针对消息确认、窗口大小、拥塞控制和其他TCP机制建立双向通信,而这些都会对延迟构成影响。

UDP是一种不包含可靠性校验或流控机制的协议。设备只需要发送含有UDP段的数据包,并假设这个数据包会到达目的地。UDP通常用于流媒体这种要求延迟,同时也可以容忍偶发丢包的应用。UDP的延迟非常低,比多数TCP链接延迟要低。

1.4.6 ICMP重定向
ICMP重定向消息的作用是让路由器能够通知数据包的发送方,特定目的存在更优路由。

例如,在图1-23中,两台路由器R1和R2都被连接到与主机PCA相同的以太网段。PCA的IPv4的默认网关是路由器R1的IPv4地址。PCA会将发往PCX的数据包发给其默认网关R1。R1检查其路由表并确定下一跳是R2,与PCA在相同的以太网段上。因此R1会使用与从PCA接收这个数据包相同的接口将其转发出去。R1还会发送一条ICMP重定向消息,告知PCA到达PCX通过R2的路由更优。于是,PCA就可以使用R2作为下一跳路由器,以便更加直接地转发后续数据包了。


ICMPv6(IP第6版的ICMP)重定向消息与ICMPv4重定向消息的功能相同,但前者还包含了一个额外的特性。在图1-23中,PCA和PCB位于不同的IPv6网络中。R1是PCA的IPv6默认网关。PCB与PCA位于相同以太网段,但处于不同的IPv6网络之中。在发送IPv6包给PCB时,PCA会将数据包发送给其默认网关R1。而R1也会采用与IPv4相似的做法,将这个IPv6数据包转发给PCB,但与IPv4的ICMP不同之处在于,它将会向R1发送一条ICMPv6重定向消息,通知其PCA有更优路由。于是,PCA可以直接将后续的IPv6数据包发送给PCB了,虽然PCB位于不同的IPv6网络中。

《CCNP ROUTE 300-101学习指南》——1.4节路由和TCP/IP操作相关推荐

  1. 《CCNP ROUTE 300-101认证考试指南》——8.2节 LSA和OSPF链路状态数据库

    本节书摘来自异步社区<CCNP ROUTE 300-101认证考试指南>一书中的第8章,第8.2节 LSA和OSPF链路状态数据库,作者 [美]Kevin Wallace(凯文 华莱士), ...

  2. QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之【05EC20模组TCP/IP模块AT指令说明】

    本系列博文将系统性讲解物联网模组系列的实际使用和调试指南,以移远4G模组EC20为例(其他厂家模组的调试方法大同小异),加快嵌入式软.硬件工程师对物联网模组调试和使用的上手速度. 一.准备工作 1.软 ...

  3. 计算机网络学习笔记(15. OSI参考模型③、TCP/IP参考模型)

    1. 传输层功能 2. 会话层功能 3. 表示层功能 4. 应用层功能 5. TCP/IP参考模型 6. 5层参考模型 7. 5层模型的数据封装 应用层:报文(message) 传输层:段(segme ...

  4. CCNA学习笔记——第一章:OSI 和 TCP/IP 模型

    第一章:OSI和TCP/IP 第一节:OSI 参考模型 OSI RM:开放系统互连参考模型(Open System Interconnection Reference Model) 1.1 OSI 参 ...

  5. 《CCNP ROUTE 300-101学习指南》——导读

    本节书摘来自异步社区<CCNP ROUTE 300-101学习指南>一书中的目录,作者 [美]戴安娜 蒂尔(Diane Teare) , 鲍勃 瓦尚(Bob Vachon) , 瑞克 格拉 ...

  6. 【TCP/IP学习笔记1】 C语言讲解

    TCP/IP学习笔记(一) 一. TCP/IP结构:      TCP/IP是一个四层协议,结构如下:      1.应用层:各种应用程序和协议,如Http.FTP等.      2.传输层:TCP和 ...

  7. 《CCNP ROUTE 300-101学习指南》——2.6节复习题

    本节书摘来自异步社区<CCNP ROUTE 300-101学习指南>一书中的第2章,第2.6节复习题,作者 [美]戴安娜 蒂尔(Diane Teare) , 鲍勃 瓦尚(Bob Vacho ...

  8. 《CCNP ROUTE 300-101学习指南》——1.5节实施RIPng

    本节书摘来自异步社区<CCNP ROUTE 300-101学习指南>一书中的第1章,第1.5节实施RIPng,作者 [美]戴安娜 蒂尔(Diane Teare) , 鲍勃 瓦尚(Bob V ...

  9. 《CCNP ROUTE 300-101学习指南》——2.2节构建EIGRP拓扑表

    本节书摘来自异步社区<CCNP ROUTE 300-101学习指南>一书中的第2章,第2.2节构建EIGRP拓扑表,作者 [美]戴安娜 蒂尔(Diane Teare) , 鲍勃 瓦尚(Bo ...

最新文章

  1. Nvidia推边缘运算平台EGX 未来将提供企业AI模型参考框架
  2. 初学Vue 遇到Module not found:Error:Can`t resolve 'less-loader' 问题
  3. Fastjson反序列化漏洞研究
  4. 使用PowerShell配置Microsoft Teams
  5. linux core 永久生效,【调试】Core Dump是什么?Linux下如何正确永久开启?
  6. ro手游服务器维护公告,4月10日5点-10点停服维护公告
  7. gulp : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\gulp.ps1,因为在此系统上禁止运行脚本
  8. 我的 fedora 14 安装备忘
  9. C语言 整人程序“我是猪”
  10. wowza 降低延迟
  11. HDFS容错性设计有哪些?
  12. python量化股票源码_使用Python写一个量化股票提醒系统
  13. 织梦任意前台密码修改漏洞复现
  14. 金山与永中,谁主沉浮?
  15. vue3 - 仿 element-ui Breadcrumb 面包屑组件封装自己的面包屑组件
  16. 五险一金有哪些「知识普及」
  17. JS将下拉框的disable变为able的方法
  18. IIS7配置PHP图解
  19. Docker学习——DockerFile
  20. (转)什么时候要抛出异常?

热门文章

  1. 为什么要选择淘客软件
  2. JAP v1.0.5 发布,支持 Basic、Digest 和 Bearer 认证方式
  3. DRM (Direct Rendering Manager) 的发展历史
  4. 2023深圳国际家用医疗及健康管理展览会
  5. 软件设计师——数据流图(DFD) [ 笔记 ]
  6. 语音转文字软件哪个比较好用
  7. Visual Studio 2010 运行时“系统找不到指定的文件”解决方案
  8. 中秋佳节之际,TCL40周年专场音乐会在中央音乐学院歌剧音乐厅圆满落幕
  9. 华盛顿州立大学招收机器学习方向全奖博士生
  10. java 计算打印纸大小_java – 如何打印自定义纸张尺寸(检查8“x 4”)?