igmp是哪个层协议_TCP/IP详解 卷1:协议(第1章 概述)

29236e01d6b196a1ee6c23d513c7ca61.png

1.2 分层

9d1c04564b450d1448fcaa47f66a3179.png
图1-1 TCP/IP协议族的四个层次

每一层负责不同的功能:

  • 链路层:又名 数据链路层、网络接口层。属于计算机 网卡 & OS 网卡驱动(一起处理与电缆(光纤)的物理接口细节)。
  • 网络层:处理分组在网络中的活动(如 分组的选路)。网络层在 TCP/IP 协议族中包括:IP协议(网际协议),ICMP协议(互联网控制报文协议),以及 IGMP协议(Internet组管理协议)。
  • 运输层:主要为两台主机上的 应用程序 提供端到端的通信。在TCP/IP协议族中,有两个不同的传输协议:TCP(传输控制协议)、UDP(用户数据报协议)。TCP:为应用层提供 高可靠性的数据通信。把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。运输层提供了高可靠性的端到端通信,应用层可以忽略所有这些细节UDP:为应用层提供 简单的服务。只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。可靠性必须由应用层来提供
  • 应用层:处理特定的应用程序细节。各种不同的 TCP/IP 实现:Telnet 远程登录、FTP文件传输协议、SMTP简单邮件传送协议、SNMP简单网络管理协议。

523432b8399c1bccfc73fee6455b6991.png
图1-2 局域网上运行FTP的两台主机
  • FTP客户程序、FTP服务器。大多数的网络应用程序都被设计成 客户—服务器模式。服务器为客户提供服务(访问服务器所在主机上的文件)。在远程登录应用程序Telnet中,为客户提供的服务是登录到服务器主机上。
  • 在同一层上,双方都有对应的一个或多个协议进行通信。某个协议允许TCP层进行通信,而另一个协议则允许两个 IP层进行通信。
  • 应用层 通常是一个用户进程,下三层在OS内核中执行。
  • 应用层 关心应用程序的细节,而不是数据在网络中的传输。下三层处理所有的通信细节。
  • FTP是一种应用层协议,TCP是一种运输层协议,IP是一种网络层协议,以太网协议 应用于链路层上。
  • 链路层:处理有关通信媒介的细节(以太网、令牌环网等)
  • 应用层:处理某个特定的用户应用程序(FTP、Telnet等)

一个互连网就是一组通过相同协议族互连在一起的网络。

434976b35fbe16c1e1abf82b60f3c4cb.png
图1-3 通过路由器连接的两个网络
  • 两个网络的互连:以太网令牌环网 通过一个路由器互相连接。两台主机通过路由器进行通信(以太网中的任何主机都可以与令牌环网中的任何主机进行通信)。
  • 可以划分出端系统(End system,两边的两台主机)和中间系统(Intermediate system,中间的路由器)。应用层 和 运输层 使用端到端(End-to-end)协议,只有端系统需要这两层协议。网络层 提供的是逐跳(Hop-by-hop)协议。
  • 网络层 IP 提供不可靠的服务。只是尽快 把分组从源结点送到目的结点,不提供任何可靠性保证。
  • 运输层 TCP 在不可靠的IP层上提供了可靠的服务:TCP采用了超时重传、发送和接收端到端的确认分组
  • 一个路由器具有两个或多个网络接口层(因为它连接了两个或多个网络)它的功能只是单纯地把分组从一个接口传送到另一个接口。
  • 任何具有多个接口的系统,英文都称作是多接口的(multihomed)。
  • TCP/IP 的实现也允许一个多接口主机来担当路由器的功能。
  • 互联网 在应用程序中隐藏所有的物理细节。应用层不关心 主机之间如何连接。随着增加不同类型的物理网络,可能会有20个路由器,但应用层仍然是一样的。
  • 网桥 是在链路层上对网络进行互连,网桥使得多个局域网(LAN)组合在一起,这样对上层来说就好像是一个局域网。
  • 路由器 是在网络层上对网络进行互连。
  • TCP/IP倾向于使用路由器而不是网桥来连接网络,因此我们将着重介绍路由器。

1.3 TCP/IP的分层

cc25badebc12e459de1082727867763a.png
图1-4 TCP/IP协议族中不同层次的协议
  • TCP 和 UDP,是两种最为著名的运输层协议,二者都使用 IP 作为网络层协议。
  • 虽然TCP使用不可靠的 IP 服务,但它却提供一种可靠的运输层服务。一些TCP的应用,如第26章中的Telnet和Rlogin、第27章中的FTP以及第28章中的SMTP等。
  • UDP为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。但是与TCP不同的是,UDP是不可靠的,它不能保证数据报能安全无误地到达最终目的。本书第11章将讨论UDP,然后在第14章(DNS:域名系统),第15章(TFTP:简单文件传送协议),以及第16章(BOOTP:引导程序协议)介绍使用UDP的应用程序。SNMP也使用了UDP协议。
  • IP是网络层上的主要协议。TCP和UDP的每组数据都通过端系统和每个中间路由器中的 IP 层在互联网中进行传输。
  • ICMP是 IP 协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。我们将分析 Ping和Traceroute(第7章和第8章),它们都使用了ICMP。
  • IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。我们在第12章中描述广播(把一个UDP数据报发送到某个指定网络上的所有主机)和多播的一般特性,然后在第13章中对IGMP协议本身进行描述。
  • ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。

1.4 互联网的地址

833b33bb9a133d2a50f4796e2c2432d5.png
图1-5 五类互联网地址
  • 互联网上的每个接口必须有唯一的 IP 地址。IP地址长32 bit,IP地址具有一定的结构。
  • 这些 32 位的地址通常写成四个十进制的数,其中每个整数对应一个字节。这种表示方法称作“点分十进制表示法(Dotted decimal notation)”。如 140.252.13.33。
  • 区分各类地址的最简单方法是看它的第一个十进 制整数。图 1-6 列出了各类地址的起止范围,其中第一个十进制整数用加黑字体表示。
  • 多接口主机具有多个IP地址,其中每个接口都对应一个IP地址。

31ce177094e961819fb69e315e105110.png
图1-6 各类IP地址的范围
  • 由于互联网上的每个接口必须有一个唯一的IP地址,因此必须要有一个管理机构为接入互联网的网络分配IP地址。
  • 有三类 IP 地址:单播地址(目的为单个主机)、广播地址(目的端为给定网络上的所有主机)以及多播地址(目的端为同一组内的所有主机)。

1.5 域名系统

  • 尽管通过IP地址可以识别主机上的网络接口,进而访问主机,但是人们最喜欢使用的还是主机名。在TCP/IP领域中,域名系统(DNS)是一个分布的数据库,由它来提供IP地址和主机名之间的映射信息。我们在第14章将详细讨论DNS。
  • 现在,我们必须理解,任何应用程序都可以调用一个标准的库函数来查看给定名字的主机的IP地址。类似地,系统还提供一个逆函数—给定主机的IP地址,查看它所对应的主机名。
  • 大多数使用主机名作为参数的应用程序,也可以把 IP 地址作为参数。

1.6 封装

  • 当应用程序用TCP传送数据时,数据被送入协议栈中,逐个通过每一层,直到被当作一串比特流送入网络。每一层对收到的数据都要增加一些首部信息。TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment)。IP传给网络接口层的数据单元,称作IP数据报(IP datagram)。通过以太网传输的比特流称作帧(Frame)。
  • 帧头和帧尾下面所标注的数字,是典型以太网帧首部的字节长度。以太网数据帧的物理特性是其长度必须在46~1500字节之间。
  • IP 和 链路层之间传送的数据单元应该是分组(packet)。分组既可以是一个IP数据报,也可以是IP数据报的一个片(fragment)。

c05919cfb6204ee8fc8cbf9270135984.png
图1-7 数据进入协议栈时的封装过程
  • UDP数据与TCP数据基本一致。唯一的不同是UDP传给IP的信息单元称作UDP数据报(UDP datagram),而且UDP的首部长为8字节。
  • 由于TCP、UDP、ICMP和IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入某种标识,以表明数据属于哪一层。为此,IP在首部中存入一个长度为8bit的数值,称作协议域。1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议。
  • 类似地,许多应用程序都可以使用TCP或UDP来传送数据。运输层协议在生成报文首部时要存入一个应用程序的标识符。TCP和UDP都用一个16bit的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部中。
  • 网络接口分别要发送和接收IP、ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个16 bit的帧类型域。

1.7 分用

  • 当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)。

8b3656db7af1ce1823fe907993b6f052.png
图1-8以太网数据帧的分用过程
  • 为协议ICMP和IGMP定位一直是一件很棘手的事情。把它们与IP放在同一层上,那是因为事实上它们是IP的附属协议。但是在这里,我们又把它们放在IP层的上面,这是因为ICMP和IGMP报文都被封装在IP数据报中。
  • 对于ARP和RARP,我们也遇到类似的难题。在这里把它们放在以太网设备驱动程序的上方,这是因为它们和IP数据报一样,都有各自的以太网数据帧类型。但在图2-4中,我们又把ARP作为以太网设备驱动程序的一部分,放在IP层的下面,其原因在逻辑上是合理的。
  • 这些分层协议盒并不都是完美的。
  • 当进一步描述TCP的细节时,我们将看到协议确实是通过目的端口号、源IP地址和源端口号进行解包的。

1.8 客户-服务器模型

  • 大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。
  • 可以将这种服务分为两种类型:重复型或并发型。重复型服务器通过以下步骤进行交互:
  1. I1.等待一个客户请求的到来。
  2. I2.处理客户请求。
  3. I3.发送响应给发送请求的客户。
  4. I4.返回I1步。
  • 重复型服务器主要的问题发生在I2状态。在这个时候,它不能为其他客户机提供服务。相应地,并发型服务器采用以下步骤:
  1. C1.等待一个客户请求的到来。
  2. C2.启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器。
  3. C3.返回C1步。
  • 并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。也就是说,每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。
  • 对服务器,而不是对客户进行分类的原因是因为对于一个客户来说,它通常并不能够辨别自己是与一个重复型服务器或并发型服务器进行对话。
  • 一般来说,TCP服务器是并发的,而UDP服务器是重复的,但也存在一些例外。我们将在11.12节对UDP对其服务器产生的影响进行详细讨论,并在18.11节对TCP对其服务器的影响进行讨论。

1.9 端口号

  • 前面已经指出过,TCP和UDP采用16 bit的端口号来识别应用程序。那么这些端口号是如何选择的呢?
  • 服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名端口号由Internet号分配机构(Internet Assigned Numbers Authority, IANA)来管理。
  • 到1992年为止,知名端口号介于1~255之间。256~1023之间的端口号通常都是由Unix系统占用,以提供一些特定的Unix服务—也就是说,提供一些只有Unix系统才有的、而其他操作系统可能不提供的服务。现在IANA管理1~1023之间所有的端口号。
  • Internet扩展服务与Unix特定服务之间的一个差别就是Telnet和Rlogin。它们二者都允许通过计算机网络登录到其他主机上。Telnet是采用端口号为23的TCP/IP标准且几乎可以在所有操作系统上进行实现。相反,Rlogin最开始时只是为Unix系统设计的(尽管许多非Unix系统现在也提供该服务),因此在80年代初,它的有名端口号为513。
  • 客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。
  • 大多数TCP/IP实现给临时端口分配1024~5000之间的端口号。大于5000的端口号是为其他服务器预留的(Internet上并不常用的服务)。我们可以在后面看见许多这样的给临时端口分配端口号的例子。
  • Solaris 2.2是一个很有名的例外。通常TCP和UDP的缺省临时端口号从32768开始。
  • 在E.4节中,我们将详细描述系统管理员如何对配置选项进行修改以改变这些缺省项。
  • 大多数Unix系统的文件/etc/services都包含了人们熟知的端口号。为了找到Telnet服务器和域名系统的端口号,可以运行以下语句:

978d3f36ed6701cea5b5573d9a62252c.png
  • Unix系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号。
  • 这些端口号介于1~1023之间,一些应用程序(如有名的Rlogin,26.2节)将它作为客户与服务器之间身份认证的一部分。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值