TCP-IP详解笔记5

ICMPv4和ICMPv6: Internet控制报文协议

  • Internet控制报文协议(Internet Control Message Protocol, ICMP)与IP结合使用,以便提供与IP协议层配置和IP数据报处理相关的诊断和控制信息。
  • ICMP即不属于网络层协议,也不属于传输层协议,而是属于两者之间。
  • ICMP负责传递可能需要注意的差错和控制报文。
  • ICMP报文是在IP数据报内被封装传输的。

ICMP报文

  • ICMP报文可分为两大类:

    • 有关IP数据报传递的ICMP报文(称为差错报文error message);

      • 目的不可达、重定向、超时和参数问题。
    • 有关信息采集和配置的ICMP报文(称为查询或者信息类报文 information message)。
      • 回显请求和回显应答,路由器通告和路由器请求。
  • 对传入的信息类请求将被操作系统自动处理,而差错类报文传递给用户进程或传输层协议,进程可以选择对它采取行动或忽略他们。
  • ICMP差错报文不会对以下报文进行响应:
    • 另一个IMP差错报文;
    • 头部损坏的数据报(校验和错误);
    • IP层的广播/组播数据报;
    • 封装在链路层广播或组播帧中的数据报;
    • 无效或者网络为零的源地址的数据报;
    • 出第一个之外的其他分片。
  • 假如一个路由器接收到一个来自主机的数据报,并确定自身并不是主机将数据报投递到目的地的对应下一跳,则该路由器发动一个重定向报文到主机并将该报文发送到正确的路由器(或主机)。
  • traceroute工具被用于确定从发送者到目的地路径上的路由器。

ICMP查询/信息类报文

  • 广泛使用的ICMP查询/信息类报文时回显请求和应答报文,通常称为ping, 以及路由器发现报文。
  • 设计ICMP的攻击主要分3类: 泛洪(flood)、炸弹(bomb)和信息泄露(information disclosure).
  • Internet控制报文协议(ICMPv4和ICMPv6)是每一个IP实现中的必要组成部分。
    • ICMP报文是携带在IP数据报中的,具有端到端校验和的报文。

广播和本地组播

  • 4种IP地址:

    • 单播(unicast), 任播(anycast), 组播(multicast), 广播(broadcast).
  • 链路层地址如何有效地用于从一台计算机向其他几台计算机发送组播或广播流量。
  • 互联网组管理协议(IGMP)和IPv6组播侦听发现(MLD)协议,用来通知IPv4和IPv6组播路由器子网中那些组播地址正在使用。
  • 广播和组播为应用程序提供了两种服务:
    • 数据分组交互至多个目的地。
    • 通过客户端请求/发现服务器。
  • 组播只涉及那些支持或使用特定服务或协议的系统,一个广播请求会影响在广播范围内所有可以到达的主机,而组播只影响那些可能对该请求有兴趣的主机。
    • 广播更高开销和简单性;
    • 组播效率改善和复杂性。
    • IPv6不支持广播,仅支持组播。
  • 只有使用UDP传输协议的用户应用程序利用广播和组播,此时应用程序发送单个报文到多个接收方才是有意义的。
  • TCP是面向连接的协议,这意味着两台主机(由IP地址指定)和每台主机上的一个进程(由端口号指定)之间的一个连接,TCP可以使用单播和任播地址,但是不能使用广播或组播地址。
  • 广播是指将报文发送到网络中的所有可能的接收者。
    • 路由器简单地将它接收到的任意报文副本专利除报文到达的接口一下的每个接口。
    • 组播MAC地址中高维字节的底序位打开。
    • 使用广播的应用程序使用UDP协议,然后调用一组普通API来发送流量。
  • 组播是为了减小在广播中涉及的开销,可以只向那些对它感兴趣的接收方发送流量。
    • 通过发送方指明接收方,或是通过接收方独立地指明它们的兴趣。网络只负责向预期的/感兴趣的接收方来发送流量。
    • 组播状态(multicast state)必须由主机和路由器来保持,已说明那些接收方对那些流量有兴趣。
    • 特定源组播(SSM)允许终端点明确地包含或排除从一组特定发送方发送到一个组播组的流量。
      • 确定单个源的位置比确定很多源的位置更容易。
  • 将组播地址转换为802 MAC/ 以太网地址:
    • 为了在链路层网络中有效地承载IP组播,在IP层和链路层帧的数据分组和地址之间应该有一个一对一的映射。
  • 当发送任意的IP数据分组时,必须决定使用哪个地址和接口。
    • IPv6中每个接口有多个地址被认为是正常的。
    • netstat -rn命令显示路由表的输出情况。
  • 接收组播数据报: 组播的基本是在主机给定的接口上进程加入和离开一个或多个组播组的概念。
    • 在一个给定接口上的组播组的成员资格是动态的,它随进程加入或离开组而改变,组的成员资格与接口相关。
    • 一个进程可以在多个接口上加入同一组,也可以加入同一接口上的多个组,或是其中的任意组合。
  • 在一个典型的交换式以太网环境中,广播和组播沿着在交换机之间形成的一棵生成树在VLAN中的所有段被复制。
  • 网络接口卡(NIC)一般分为两类:
    • 基于组播硬件地址的散列值的过滤,主机软件可以表达对该硬件地址的兴趣,由于散列冲突,一些不需要的帧总是可以通过。
    • 侦听组播地址的一张有限表,如果主机需要接收超过表中能够容纳的更多的组播地址的帧,NIC将进入一种组播混杂模式。
      • 所有组播流量将交给主机软件。

互联网组管理协议和组播侦听发现协议

  • 当组播数据报在广域网或是跨越多个子网的企业中转发时,组播路由(multicast routing)应该由一个或多个组播路由器启动。

    • 方向路径转发检查(RPF), 对于组播回路来说非常重要。
    • 组播路由在很大程度上是独立于由IP路由器提供的传统的单播路由。
  • IPv4使用互联网组管理协议(IGMP)和IPv6使用的组播侦听发现协议(MLD)用于允许组播路由器了解附近的主机感兴趣的组。
    • IGMP被封装为一个单独的协议;
    • MLD是ICMPv6报文的一种类型。
  • IGMP和MLD由组成员的主机执行的和由组播路由器执行的。
    • 报告报文,组记录向量。
  • IGMP或MLD的失效或更一般的组播,可以导致不需要的组播流量的分配,或没有灵力交互期望的组播流量。
    • IGMP和MLD处理的失败类型包含组播路由器的失效和协议报文的丢失。
    • 通过允许多个组播路由器在同一链路上运行,可以处理组播路由器潜在的失效故障。
  • 多个组播路由器实现的第一种类型的协调是查询其选举(querier election).
    • 每个组播路由器可以侦听其他的查询。
  • IGMP和MLD是软状态的协议,他们也处理路由器的失效、协议报文的丢失以及与早期协议版本的互操作性。
    • 很多设备是基于触发状态改变和协议动作的计时器来启动这些功能的。
  • 由于IGMP和MLD是信令协议,可以控制组播流量的流动,使用这些协议的攻击主要是Dos攻击或资源使用攻击。
    • 通过发送IGMP或MLD来订阅大量的高带宽的组播组来发起。

TCP-IP详解笔记5的更多相关文章

  1. TCP/IP详解 笔记十四

    TCP/IP协议(二)  连接的建立与终止 tcpdump -S输出TCP报文的格式 格式: 源>目的:标志 (标志就是tcp头部).标识首字符意义如下: 例如:telnet 某服务的输出(包括 ...

  2. TCP/IP详解 笔记一

    概述: Tcp-ip让网络上的计算机进行通信,而不管计算机和操作系统是否一样. 分层结构: Tcp/ip协议族是多层协议的组合,而tcp和ip只是其中的两个协议而已. 一个通信举例: 注意图的右上方: ...

  3. TCP/IP详解 笔记十三

    TCP协议(一) 概述 特点 1,  面向连接可靠的字节流服务 2,  只有两方通信,不能用于广播或多播 3,  应用数据被TCP分隔为最合适发送的数据段,传给IP协议栈 4,  发送端并启动定时器, ...

  4. TCP/IP详解 笔记十一

    域名服务系统(DNS) DNS:名字到IP转换:电子邮件选路信息:分布式数据库 解析器:是通过gethostbyname(3)和gethostbyaddr(3)来实现的 最常用的名字服务器是BIND ...

  5. TCP/IP详解 笔记九

    广播和多播 多播和广播只能用于UDP包,TCP明确在两个进程间建立连接. 多播:帧只传送给属于多播组的多个接口 主机对帧的过滤过程: 通常网卡只接收那些目的地址为本物理接口地址或广播地址的帧:设置为混 ...

  6. TCP/IP详解 笔记八

    UDP协议 UDP是传输层协议,提供无连接不可靠的数据传输,其优点失效率高,确定确定是无序不可靠. 报文格式 UDP头部 TCP和UDP的端口号是独立的 UDP长度是指UDP数据报的总长度 UDP的校 ...

  7. TCP/IP 详解笔记

    最早的 TCP 协议文档是 RFC793. TCP 提供一种面向连接的.可靠的字节流服务. 面向连接容易理解,那么什么是字节流服务呢? 答:两个应用程序通过 TCP 连接交换 8 bit 字节构成的字 ...

  8. TCP/IP详解 笔记十二

    简单文件传送协议 TFTP 1)         初衷是为了引导无盘系统 2)         使用UDP 3)         代码都能适合只读存储器 无盘主机通过RARP获得ip地址后进行一个TF ...

  9. TCP/IP详解 笔记十

    IGMP Internet组管理协议 IGMP的作用:让一个物理网络上的所有系统知道主机所在的多播组: 让路由器知道多播数据报应该向哪个端口转发. IGMP有固定长度,没有可选数据,在ip头部的协议值 ...

  10. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

随机推荐

  1. Top Page

    Top Page 由于个人的博客中涉及了几个不同的领域.今后准备设置Index页进行一番整理 : 所有其他页面都可以从这个页面遍历 Top Page

  2. Spring Boot JPA Entity Jackson序列化触发懒加载的解决方案

    Spring Jpa这项技术在Spring 开发中经常用到. 今天在做项目用到了Entity的关联懒加载,但是在返回Json的时候,不管关联数据有没有被加载,都会触发数据序列化,而如果关联关系没有被加 ...

  3. Kubernetes — 重新认识Docker容器

    这一次,我要用+Docker+部署一个用+Python+编写的+Web+应用.这个应用的代码部分(app.py)非常简单: from flask import Flask import socket ...

  4. 使用IDEA2017在Windows下编程并测试Hadoop2.7+Spark2.2+Azkaban

    1. 下载好IDEA HADOOP SPARK 首先,配置IDEA, 在插件管理中使用IDEA在线库安装scala插件, 在在线库直接搜索即可; 其次,配置Maven选项, 将Maven添加到IDEA ...

  5. idea 配置 jdk tomcat

    https://blog.csdn.net/cxjsnail/article/details/80018519 1.  安装IntelliJ IDEA IDEA 对maven有完美的支持,有强大的语法 ...

  6. 洛谷 P1088 火星人

    https://www.luogu.org/problemnew/show/P1088 这个题一开始是很蒙的 感觉很麻烦,每次都要交换balabala..... 后来才知道有这么一个神奇的stl 真是 ...

  7. WebView 安全之 addJavascriptInterface

    WebView是Android平台下的一个重要组件,通常用来在Activity中嵌入一个简单的浏览器,实现在线网页浏览的功能.比如下面代码实现访问Google页面: WebView webView = ...

  8. 用UE4蓝图制作FPS_零基础学虚幻4第二季

    课时1:案例演示 05:12 课时2:工程准备 07:35 (把一个项目从一个工程移动到另一个工程) 1.新建一个空白工程,不包含初学者内容 2.选择我们要复制的工程,按右键,如下图: 复制到新工程的 ...

  9. Dijkstra算法——计算一个点到其他所有点的最短路径的算法

    迪杰斯特拉算法百度百科定义:传送门 gh大佬博客:传送门 迪杰斯特拉算法用来计算一个点到其他所有点的最短路径,是一种时间复杂度相对比较优秀的算法 O(n2)(相对于Floyd算法来说) 是一种单源最短 ...

  10. java 11 增加了一系列的字符串处理方法,Optional 加强 ,改进的文件API

    增加了一系列的字符串处理方法 如以下所示. // 判断字符串是否为空白 " ".isBlank(); // true // 去除首尾空白 " Javastack &quo ...