`
evasiu
  • 浏览: 168895 次
  • 性别: Icon_minigender_2
  • 来自: 广州
博客专栏
Fa47b089-e026-399c-b770-017349f619d5
TCP/IP详解卷一>阅读...
浏览量:12519
社区版块
存档分类
最新评论

<tcp/ip详解卷一>阅读笔记(3)——IP层的分用(UDP和IGMP)

 
阅读更多

这一次将总结IP层的分用中的UDP与IGMP。UDP是一个简单的面向数据报的运输层协议,它提供不可靠服务:它把应用程序的数据加上UDP头部之后就传递给IP层发送出去,但是并不能保证它们能到达目的地。应用程序必须关心IP数据报的长度,如果它超过网络的MTU,那么就要对IP数据报进行分片。如果需要,源端到目的端之间的每个网络都要进行分片,并不只是发送端主机连接第一个网络才这样做。IGMP是一种支持主机和路由器进行多播的Internet组管理协议。广播和多播只能应用于UDP,所以我在这里把UDP和IGMP放在一起总结了,书中也是这样的顺序,呵呵。

 

1. UDP:用户数据报协议

下图是UDP首部的格式:
 

端口号表示发送进程和接收进程。UDP长度字段指的是UDP首部和UDP数据的字节长度,该值等于IP数据报总部中的IP数据报长度减去TCP首部的长度。UDP检验和(可选)覆盖UDP首部和UDP数据,计算方法跟我们前面提到的IP首部检验和的计算方法一致。如果遇到UDP数据为奇数字节,则填充一字节的0. 计算时,还将在UDP首部前加上UDP伪首部,目的是让UDP两次检查数据是否已经正确到达目的地。下图是伪首部和字节填充的示意图:

我们提到过网络的MTU,也提到过IP数据报首部中的MF和DF位以及13位偏移位,当UDP数据报的长度超过网络的MTU时,必须对其进行分片。如果设置了DF位但是通过某个网络时需要分片,将会产生ICMP“不可达(需要分片)”的差错报文,我在前面的ICMP部分居然写着写着就把它给忘了。新一些的路由器都允许在ICMP首部8个字节的每7~8字节(那里被要求设置成0)中返回自己的MTU。分片需要注意的是:(1)在分片时,除最后一片外,其他每一片中的数据部分(除IP首部外的其余部分)必须是8整数倍(这是为什么呢?后面的习题也有瓿,我目前还不知道。。。);(2)运输层首部只出现在第一片中。UDP比较简陋,所有包丢失、重传问题都必须由上层应用程序来管理。

 

2. 互联网的地址、广播、多播

互联网地址有5类,格式如下:

 有三类地址:单播地址,多播地址和广播地址。主机号为全0代表网络号,主机号为全1代表在该网络的广播。有四种广播地址:

一是受限的广播地址255.255.255.255.该地址用于主机配置过程中IP数据报的目的地址,在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样数据报仅出现在地址网络中。

二是指向网络的广播地址,主机号为全1.如A类广播地址为netid.255.255.255,一个路由器必须转发指向网络的广播。

三是指向子网的广播。指向子网的广播地址为主机号为全1且有特定子网号的地址。作为子网直接广播地址的IP地址需要了解子网的掩码,例如,如果路由器收到发往128.1.2.255的数据报,当B类网络128.1的子网掩码为255.255.255.0时,该地址就是指向子网的广播地址;但如果该子网的掩码为255.255.254.0,该地址就不是指向子网的广播地址。

四是指向所有子网的广播。指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开来,指向所有子网的广播地址的子网号和主机号全为1.例如,如果目的子网掩码为255.255.255.0,那么IP地址128.1.255.255就是一个指向所有子网的广播地址,然而,如果网络没有划分子网,这就是一个指向网络的广播。

广播给网络中的主机产生了很多负担,广播的数据报要直到UDP层才被确定是否为主机所需要(没有监听的端口)然后才会被丢弃。多播是介于单播与广播之间的一种方式。

能够接收发往一个特定多播组地址数据的主机集合称为主机组。一个主机组可以跨越多个网络,主机组中成员可以随时加入或离开主机组。主机组中对主机的数量没有限制,同时不属于某一主机组的主机可以向该组发送信息。

下图是多播组地址到以太网地址的转换:

 之所以是23位映射,听说是发明组播的那个人(当时还是个博士)的导师只肯给他买半个A类地址做实验,所以就只映射了23位。这是我在某次网络课的时候迷迷糊糊听到的,嘿嘿。

 

3. IGMP协议

多播路由器使用IGMP报文来记录与该路由器相连网络中组成员的变化情况,其报文格式如下:



 

规则如下:

(1)当第一个进程加入一个组时,主机发送一个IGMP报告,如果有多个进程加入同一个组,只需发送一个报告;

(2)进程离开一个组时,不需要发送任何报告;后期路由器发送IGMP查询时,不再发送报告;

(3)多播路由器定时发送(向每个接口)IGMP查询来了解是否还有任何主机包含有属于多播组的进程,此时IGMP查询报文中的组播地址被设置为0.

(4)主机通过发送IGMP报告来响应一个IGMP查询,对每个至少还包含一个进程的组均要发回IGMP报文。

我记得上网络课时还提到过多种算法来减少网络中的流量,包含剪枝、抑制之类的。总之,一个核心思想是,多播路由器并不关心有多少主机属于一个多播组,它只是想知道给定接口上的多播组是否还有人对这个多播组感兴趣。

 

 

  • 大小: 17.2 KB
  • 大小: 26.5 KB
  • 大小: 26.8 KB
  • 大小: 21.3 KB
  • 大小: 13.7 KB
分享到:
评论

相关推荐

    tcp/ip详解前3章学习笔记

    TCP/IP详解前3章的学习笔记主要涵盖了网络通信的基础知识,特别是TCP/IP协议栈的四个主要层次,即应用层、传输层、网络层和数据链路层。这些层次定义了网络通信的不同方面,确保数据能够在不同主机之间可靠地传输。 ...

    TCP/IP 协议笔记

    ### TCP/IP协议详解 #### 一、引言与历史背景 TCP/IP协议族,作为现代互联网的基石,其影响力远超出了最初的预期。这一协议族起源于20世纪60年代末,当时由美国政府资助的一项分组交换网络研究项目孕育了TCP/IP的...

    TCP-IP学习总结笔记.pdf

    在TCP/IP数据封装过程中,应用层的数据会被加上应用层头部,然后依次添加传输层(TCP或UDP)、网络层(IP)和网络访问层(以太网)的头部,形成数据段、数据报和数据帧,最终通过物理介质传输。 理解TCP/IP协议栈的...

    TCP/IP培训笔记

    ### TCP/IP培训笔记知识点详解 #### 一、TCP/IP协议栈结构 TCP/IP协议栈是一个四层模型,每一层都有其特定的功能。 1. **应用层**:此层提供了多种面向用户的应用程序和服务,比如HTTP(超文本传输协议)、FTP...

    TCPIP详解》学习笔记

    TCP/IP详解的学习笔记涵盖了IP协议的关键概念和技术细节。IP,即网际协议,是互联网通信的基础,具有不可靠和无连接的特点。不可靠意味着IP不保证数据报能成功到达目的地,错误时会丢弃数据包并发送ICMP消息。可靠性...

    LwIP协议栈源码详解

    LwIP协议栈源码详解是一项对LwIP协议栈源代码进行深度解析和评解的工作,旨在帮助开发者更好地理解和使用LwIP协议栈。LwIP(Light-Weight IP)是一个开源的TCP/IP协议栈实现,专门针对嵌入式系统进行优化,以减少...

    leve6网络编程学习笔记.pdf

    ### 网络编程基础知识详解 #### 一、网络采用分层的思想 网络通信通过将复杂的通信过程划分为多个层次来实现,每层专注于解决特定的功能,并为上一层提供服务,同时也依赖下一层的服务。 1. **每一层实现不同的...

    W5500模块资料全套资料

    1. **硬件TCP/IP加速器**: W5500内置了完整的TCP/IP协议栈,包括TCP、UDP、IP、ICMP、ARP、IGMP等,所有网络处理都在硬件层面完成,无需CPU介入,极大地提高了网络通信效率。 2. **多通道SPI接口**: W5500通过SPI...

    计算机网络期末复习笔记

    2. **传输层**:负责端到端的数据传输,主要协议为TCP和UDP。 3. **网络层**:处理分组在网络间的路由选择,核心协议是IP。 4. **链路层**:负责在相邻节点间的数据帧传输,包括以太网协议等。 **1.5 网络性能分析*...

    LWIP移植心得

    它提供了完整的TCP/IP协议栈功能,包括TCP、UDP、ARP、ICMP和IGMP等协议,同时具有高度可配置性和可移植性。本文将深入探讨《uC/OS-II平台下的LwIP移植笔记》中提及的关键知识点,包括移植过程中的关键步骤和注意...

Global site tag (gtag.js) - Google Analytics