TCP/IP详解卷1学习笔记
TCP/IP详解卷1学习笔记
参考:1、http://www.52im.net/topic-tcpipvol1.html?mobile=no(即时通讯网›《TCP/IP详解 卷1:协议》在线阅读版(全网唯一))
2、《TCP/IP详解 卷1:协议》
一、概述
1、分层
四层分层 局域网上运行FTP的两台主机
通过路由器连接的两个网络 TCP/IP协议族中不同层次的协议
链路层:也称作数据链路层和网络接口层,包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。一起处理电缆或其他传输媒介的物理接口细节
网络层:处理分组在网络中的活动,例如分组的选路。包括:IP协议、网络控制报文协议(ICMP)、网组管理协议(IGMP)。
传输层:为两台主机上的应用程序提供端到端的通信。包括:传输控制协议(TCP)和 用户数据报协议(UDP)。
应用层:负责处理特定的应用程序细节。包括:telnet远程登陆、FTP文件传输协议、SMTP简单邮件传送邮件、SNMP简单网络管理协议。
2、IP地址
互联网的每个接口必须有一个唯一的IP地址,地址长32位,分成用点隔开的4个整数,每个整数范围0~255,对应一个字节。
5类互联网地址
三类IP地址:
单播地址:目的端为单个主机
广播地址:目的端为给定网络上的所有主机
多播地址:目的端为同一组内的所有主机
3、域名系统
DNS(域名解析系统)用于将域名(网址)解析成IP地址。
4、封装
逐层封装过程
当应用程序发送数据时,数据先被送入协议栈中,然后逐层添加各层的首部信息(有时还增加尾部信息)。在TCP层数据称为TCP报文段,在IP层称为IP数据报,在链路层通过以太网传输的称为帧。
5、分用
当目的主机收到一个数据帧时,数据就从协议栈中从底向上逐层去掉各层的数据报首部,这个过程就是分用,是封装的逆过程。
以太网数据帧的分用过程
6、客户-服务器模型
两种类型:重复型和并发型
重复型:
1. 等待一个客户请求的到来
2. 处理客户请求
3. 发送响应给发送请求的客户
4. 返回1
缺点:在第2步时,不能响应其他客户的请求,不能为其他客户机提供服务
并发型:
1. 等待一个客户请求的到来
2. 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持,这个步骤如何进行取决于操作系统。生成的新的服务器对客户的请求进行处理结束后,终止这个新的服务器。
3. 回到1
优点:利用生成新的其他服务器的方法来处理客户的请求,每个客户都有自己对应的服务器。如果操作系统允许多任务,那么可以同时为多个客户服务。
对于众多客户,将服务器分为这两种类型。对于一个客户,它并不知道为它服务的是重复型服务器还并发型服务器。
通常TCP服务器是并发的,UDP服务器是重复的。
二、连路层
1、链路层的作用
(1)为IP层发送数据帧和接收IP数据报
(2)为ARP模块发送ARP请求和接收ARP应答
(3)为RARP模块发送RARP请求和接收RARP应答
2、以太网和IEEE802封装
3、SLIP(串行线路IP)
在串行线路上对IP数据报进行封装的简单形式
4、点对点协议(PPP)
点对点协议修改了SLIP中的所有缺点:
(1)在串行线路上封装IP数据报的方法,支持数据为8位、无奇偶检验的异步模式和面向比特的同步连接。
(2)建立、配置及测试数据链路的链路控制协议(LCP),允许通信双方进行协商,以确定不同的选项。
(3)针对不同网络层协议的网络控制协议(NCP)。
PPP对于SLIP的优点:
(1)支持在单根串行线路上运行多种协议,而不止是IP协议
(2)每一帧都有循环冗余检验
(3)通信双方可以进行IP地址的动态协商
(4)对TCP和IP报文首部进行压缩
(5)链路控制协议(LCP)可以对多个数据链路选项进行设置
5、环回接口
大多数产品都支持环回接口(Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。一个传给环回接口的IP数据报不能在任何网络上出现,应为是同一台主机的两个程序之间的内部通信。当传输层检测到目的端地址是环回地址时,照样完成传输层和网络层的所有过程,但是只有当IP数据报离开网络层时,把它返回给自己。
环回接口处理IP数据报的过程
6、最大传输单元(MTU)
定义:以太网允许传输数据帧的最大长度。
如果IP层有一个数据报传输给链路层,且数据报的长度比MTU要大,那么就需要将IP数据报进行分片,分成若干片,且每片的长度要小于MTU。
MTU并不是一个网络媒体的物理特性,而是一个逻辑限制,目的是为交互使用提供足够快的响应时间。
7、路径MTU
如果两台主机之间的通信要通过多个网络,那么每个网络的链路层就有不同的MTU,那么这两台主机之间通信路径的最小MTU就为路径MTU。
两台主机之间的路径MTU不一定是固定的,它取决于当时所选择的路由,而选路不一定是对称的(A到B的路由可能和B到A的路由不同),所有路径MTU在两个方向上可能不一致。
8、ARP(地址解析协议)
地址解析协议:ARP和RARP
ARP为32位的IP地址和链路层使用的MAC地址提供动态映射。动态的意思是,每台设备的MAC地址是固定不变的,但每次从MAC地址映射到的IP地址可能会不同。
当用户输入命令“ftp主机名”时ARP的操作
网络接口有一个硬件地址,在硬件层次上进行的数据帧交换必须有正确的接口地址。知道主机的IP地址并不能让内核直接发送一帧数据给主机,内核必须知道目的端的硬件地址才能发送数据。
9、ARP高速缓存
ARP高效运行的关键是,每个主机上都有一个ARP高速缓存,用于存放最近IP地址到硬件地址之间的记录。高速缓存中的每一项的生存时间为20分钟,从被创建时算起。
可以用arp命令来查看高速缓存
用于以太网的ARP请求或应答分组格式
10、ARP代理
如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这连个主机的路由器就可以回答该请求,这个过程就是委托ARP或ARP代理。这样可以欺骗发起ARP请求的发送端,使它误以为路由器就是目的主机,而事实上目的主机在路由器的“另一边”。路由器就相当于目的主机的代理,把分组从其它主机转发给它。
ARP代理的例子
11、免费ARP
主机发送ARP来查找自己的IP地址,通常发生在系统引导期间进行接口配置的时候。
12、RARP(逆地址解析协议)
无盘系统的RARP的实现过程是从接口卡上读取唯一的硬件地址,然后以广播的形式发送一份RARP请求,请求某个系统响应这个无盘系统的IP地址。
三、网络层
1、IP(网际协议)
IP提供不可靠、无连接的数据报传送服务
不可靠的意思是它不能保证IP数据报能够成功的到达目的地。IP仅提供最好的传输服务,并不能保证无错的送达。如果发生错误,IP会丢掉该数据报,然后发送ICMP消息报给源端。任何可靠性必须由TCP层来提供。
无连接的意思是IP并不维护任何关于后续数据报的状态信息,每个数据报的处理是相互独立的。如果源端发来两条连续的数据报发往目的端,这两条数据报会独立的进行路由选择,可能选择不同的路径,到达的先后顺序也会不同。
2、IP首部
IP数据报格式及首部中的各字段
3、IP路由选择
在一般情况,IP可以从TCP、UDP、ICMP和IGMP接收数据报(即在本地生成的数据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。IP层在内存中有一个路由表,当收到一份数据报并进行发送时,它都要对该表搜索一次。当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或广播地址。如果是,数据报就被送到由IP首部协议字段所指定的协议模块进行处理。如果不是,那么(1)如果IP层被设置成路由器的功能,就对数据报进行转发;否则(2)数据报被丢弃。
路由表中的每一项包含的信息:
(1)目的IP地址。可以是一个完整的主机地址,也可以是一个网络地址,由该表中的标志字段类指定。
(2)下一站(或吓一跳)路由器的IP地址,或者有直接连接的网络IP地址。
(3) 标志。其中一个标志指明目的IP地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口。
(4)为数据报的传输指定一个网络接口。
IP路由选择是逐跳的进行的,IP并不知道到达任何目的端的完整路径。所有的IP路由选择只为数据报传输提供下一跳路由器的IP地址。它假定下一跳路由器比发送数据报的主机更接近目的端,且下一跳路由器与该主机是直接相连的。
IP路由选择主要完成以下功能:
(1)搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都有匹配)。如果找到,则把报文发送给表目指定的下一跳路由器或直接连接的网络接口。
(2)搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给表目指定的下一跳路由器或直接连接的网络接口。
(3)搜索路由表,寻找标为“默认”的表目。如果找到,则把报文发送给表目指定的下一跳路由器。
(4)如果上面这些步骤没有成功,那么数据报就不能被传送出去。
4、ifconfig和netstat命令
5、ICMP(Internet控制报文协议)
ICMP作为IP层的一个附加协议,它通常向TCP传递差错报文以及其他需要注意的信息。一些ICMP报文把差错报文返回给用户进程(应用层)
ICMP封装在IP数据报的内部 ICMP报文格式
ICMP的报文类型由类型字段和代码字段共同决定。
下面各种情况下都不会产生ICMP差错报文:
(1)ICMP差错报文(ICMP查询报文会产生ICMP差错报文)
(2)目的地址是广播地址或多播地址的IP数据报
(3)作为链路层广播的数据报
(4)不是IP分片的第一片
(5)源地址不是单个主机的数据报,源地址不能为零地址、环回地址、广播地址或多播地址
这些规则是为了防止过去ICMP差错报文对广播分组响应所带来的广播风暴。
6、ICMP地址掩码请求与应答(ICMP查询报文)
ICMP地址掩码请求用于无盘系统在引导的过程中获取自己的子网掩码
ICMP地址掩码请求与应答报文
ICMP报文中的标识符和序列号字段由发送端任意选择设定,这些值会在应答时被返回,这样发送端就可以把应答与请求相匹配。
7、ICMP时间戳请求与应答(ICMP查询报文)
ICMP时间戳请求允许系统向另一个系统查询当前的时间,返回的建议值是自午夜开始计算的毫秒数。这种ICMP报文的好处是提供了毫秒级的分辨率,而其他方法只能从别的主机或取的时间只能提供秒级的分辨率。
ICMP时间戳请求与应答报文
请求端发起时间戳,然后发送报文。应答系统收到请求报文时填写接收时间戳,在发送应答时填写发送时间戳。大多数情况下,把后面两个字段都设成相同值。提供三个字段是可以让发送方分别计算发送请求的时间和发送应答的时间。
8、ICMP端口不可达差错(ICMP差错报文)
UDP的规则之一是,如果收到一份UDP数据报而目的端口与某个正在使用的进程不符,那么UDP返回一个不可达报文,可以用TFTP来强制生成一个端口不可达报文。
UDP端口不可达返回的ICMP报文
ICMP的一个规则是,ICMP差错报文必须包括生成该差错报文的数据报IP首部,还必须包括跟在该IP首部后面的前8个字节(ICMP首部)。
ICMP不可达报文
9、Ping程序
Ping程序的目的是为了测试另一台主机是否可达,该程序发送一份ICMP回显请求报文给主机,并等待ICMP回显应答。
一般来说,如果不能Ping到某台主机,那么就不能Telnet或FTP到那台主机。反过来,如果不能Telnet或FTP到某台主机,那么可以用Ping程序来确定问题出在哪里。Ping程序还能测出到这台主机的往返时间。
称发送回显请求的Ping程序为客户,而被Ping的主机为服务器。
ICMP回显请求和回显应答的报文格式
Ping程序还为我们提供了查看IP记录路由选项的机会
Ping程序是对两个TCP/IP系统连通性进行测试的基本工具。它利用ICMP回显请求和回显应答报文而不经过传输层(TCP/UDP)。Ping服务器一般在内核中实现ICMP的功能。
10、Traceroute程序
Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。Traceroute还可以让我们使用IP源路由选项。
Traceroute程序的操作过程:
Traceroute发送一份TTL字段为1的IP数据报给目的主机。处理这份数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一份超时ICMP报文。这样就得到了该路径上的第一个路由器的地址。然后Traceroute发送一份TTL值为2的数据报,就可以得到第二个路由器的地址。继续这个过程直至该数据报到达目的主机。但目的主机接收到该报文并不会丢弃该报文,也不会产生一份超时ICMP报文。那么该如何判断是否已经到达目的主机?
Traceroute发送一份UDP数据报给目的主机,但选择一个不可能的值作为UDP端口号,使目的主机任何一个应用程序都不可能使用该端口。当数据报到达时,会使目的主机的UDP模块产生一份“端口不可达”错误的ICMP报文。这样,Traceroute程序只需要区分接收的ICMP报文是超时还是端口不可达,就可以判断什么时候结束。
11、IP选路
选路是IP最重要的功能之一。需要进行选路的数据报可以由本地主机产生,也可以由其他主机产生。如果由其他主机产生,则本地主机必须配置成一个路由器,否则通过网络接口接收到的数据报,如果目的地址不是本地主机就会被丢弃。
IP层工作流程
12、选路的原理
路由表中包含的信息决定了IP层所做的所有决定。
IP搜索路由表的几个步骤:
(1)搜索匹配的主机地址
(2)搜索匹配的网络地址
(3)搜索默认表项(默认表项一般在路由表中被指定为一个网络表项,其网络号为0)
匹配主机地址步骤始终在匹配网络地址步骤之前
IP层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。这区别于选路决策,它只是一组决定把哪些路由放入路由表的规则。IP执行选路机制,而路由守护程序则一般提供选路策略。
ICMP主机与网络不可达差错:当路由表收到一份IP数据报但由不能转发时,就要发送一份ICMP“主机不可达”差错报文。
转发与不转发:一般情况下内核选项设成默认不转发IP数据报,除非系统管理员进行特殊的配置。这是因为如果设成默认转发,则会给没有进行正确配置的系统带来许多问题。
13、ICMP重定向差错
当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端。只有当主机可以选择路由器发送分组的情况下,才可以看到ICMP重定向报文。
ICMP重定向
(1)假设主机发送一份数据报给R1。这种路由选择决策经常发生,因为R1是该主机的默认路由。
(2)R1收到数据报并检查它的路由表,发现R2是发生该数据报的下一跳。当把数据报发生给R2时,R1检测到它正在发送的接口与数据报到达接口是相同的,这样就给路由器发送重定向报文给原始发送端提供了线索。
(3)R1发送一份ICMP重定向报文给主机,告诉主机以后把数据报发送给R2而不是R1。
重定向一般用来让具有很少路由信息的主机逐渐建立更完善的路由表。主机启动时路由表中可以只有一个默认表项,一旦路由发生差错,默认路由器将通知它进行重定向,并允许对路由表作相应的改动。
14、ICMP路由器发送报文
路由表的初始化方法:在配置文件中指定静态路由来设置默认路由和利用ICMP路由器通告和请求报文的方法。
一般认为,主机在引导以后要以广播或多播的方式传送一份请求报文。一台或多台路由器响应一份路由器通告报文。另外,路由器定期的广播或多播传送路由器通告报文,允许每个正在监听的主机相应的更新它们的路由表。
ICMP路由器请求报文格式
ICMP路由器通告报文格式
15、动态选路协议
静态选路,在配置接口时以默认的方式生成路由表项,并通过route命令增加表项,或通过ICMP重定向生成表项。
静态选路适用于网络很小、与其他网络只有单个连接点且没有多余的路由时采用的选路方法。而在网络规模很大的情况下、与其他网络有多个连接点且有多余的路由时,就需要采用动态选路的方法。
动态选路:
当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就需要动态选路。路由器之间进行通信必须要采用选路协议。路由器上的一个进程--路由守护程序,它运行选路协议,与其相邻的一些路由表进行通信。路由守护程序根据它从相邻路由器接收到的信息更新路由表。
动态选路并不改变内核在IP层的选路方式,这种选路方式称为选路机制。内核搜索路由表,查找主机路由、网络路由以及默认路由的方式并没有改变。仅仅是放置到路由表中的信息改变了,当路由随时间变化,路由表的信息是有路由守护程序动态的增加或删除。
路由守护程序将选路策略加入到系统中,选择路由并加入到内核的路由表中。如果守护程序发现前往同一信宿存在多条路由,那它将选择最佳路由并加入到内核的路由表中。如果路由守护程序发现一条链路已断开,它可以删除受到影响的路由或增加另一条路由绕过该问题。
16、RIP(选路信息协议)
封装在UDP中的RIP报文
RIP报文格式
RIP的routed程序运行过程:
(1)初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整的路由表。在点对点链路中,该请求是发送给其他终点的。如果网络支持广播的话,这种请求是以广播的形式发送的。目的UDP端口号是520(这是其他路由器的路由守护程序端口号)。这种请求报文的命令字段为1,但地址系列字段设置为0,而度量字段设置为16。这是一种要求另一端完整路由表的特殊请求报文。
(2)收到请求。如果这个请求是初始化阶段中的特殊请求,那么路由器就将完整的路由表发送给请求者。否则就处理请求中的每一个表项。然后发回响应。
(3)接受到响应。使响应生效,可能会更新路由表。可能会增加新表项、对已有的表项进行修改或是将已有的表项进行删除。
(4)定期选路更新。每过30秒,所有或部分路由器会将其完整路由表发送给相邻的路由器。发送路由表可以是以广播的形式,或者是以点对点发给其他终点的形式。
(5)触发更新。当每一条路由的度量发生变化时,就对它进行更新。不需要发送完整的路由表,只需要发送发生变化的表项。
每条路由都有与之相关的定时器,如果运行RIP的系统发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷大,并标注为删除。这意味着在6个30秒更新时间里没收到通告该路由的路由器的更新了,再过60秒,将从本地路由表中删除该路由,以保证该路由的失效已被传开。
(1)RIP度量:
路由器和网络示例
RIP所使用的度量是以跳计算的,跳数的最大值为15,超过15就意味着无路由到达该IP地址(不可达)
(2)RIP缺陷
没有子网地址的概念,无法区分地址中非零部分是子网号还是主机地址。
路由器或链路发生故障后,需要很长一段时间才能稳定下来。
度量最大值为15,限制了可以使用RIP的网络的大小。
17、OSPF(开发最短路径优先)
OSPF是一个内部网关协议,客服看RIP的所有缺点。OSPF是一个链路状态协议,RIP是一个距离向量协议。
在链路状态协议中,路由器并不与其邻站交换距离信息,它采用的是每个路由器主动的测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。
二者不同点是,链路状态协议总是比距离向量协议收敛更快(即在路由发送变化或出故障后,能快速的稳定下来)。
OSPF较于RIP的优点:
(1)OSPF可以对每个IP服务类型计算各自的路由集。这意味着对于任何目的,可以有多个路由表表项,每个表项对应着一个IP服务类型。
(2)给每个接口指派一个无维数的费用。可以通过吞吐率、往返时间、可靠性或其他性能进行指派。可以给每个IP服务类型指派一个单独的费用。
(3)对同一个目的地址存在着多个相同费用的路由时,OSPF在这些路由上平均分配流量,称之为流量平衡。
(4)OSPF支持子网:子网掩码与每个通告路由相连,这样就允许将一个任何类型的IP地址分割成多个不同大小的子网。
(5)路由器之间的点对点链路不需要每端都有一个IP地址,称之为无编号网络。这样可以节省IP地址。
(6)采用了一种简单的鉴别机制。
(7)采用多播而不是广播的形式,以减少不参与OSPF的系统负载。
18、BGP(边界网关协议)
BGP是一种不同自治系统的路由器之间进行通信的外部网关协议。
BGP系统与其他BGP系统之间交换网络不可达信息,这些信息包括数据到达这些网络所必须经过的自治系统中的所有路径。这些信息足以构建一幅自治系统连接图,然后根据连接图删除选路环,制定选路策略。
19、CIDR(无类型域间选路)
无类型域间选路(CIDR)是一个防止Internet路由表膨胀的方法,也称超网。
CIDR采用一种分配多个IP地址的方式,使其能够将路由表中的许多表项总和成更少的数目。
总和必须满足的三个特性:
(1)为进行选路要对多个IP地址进行总和时,这些IP地址必须具有相同的高位地址比特。
(2)路由表和选路算法必须扩展成根据32位IP地址和32位掩码做出选路决策。
(3)必须扩展选路协议使其除了32位地址外,还要有32位掩码。
四、传输层
1、UDP(用户数据报协议)
UDP是一个简单的面向数据报的传输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。
UDP封装
UDP传输不可靠,它把应用程序传给IP层的数据发送出去,但是并不能保证数据能到达目的地。
UDP首部
UDP检验和覆盖UDP首部和UDP数据。
2、IP分片
链路层一般要限制每次发送数据帧的最大长度。任何时候IP层接收到一份要发送的数据报时,它先要判断向本地哪个接口发送数据,并查询该接口获得其MTU。IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。
把一份IP数据报分片以后,只有到达目的端才进行重新组装。重新组装由目的端的IP层完成,其目的是使分片和重新组装过程对传输层是透明的。已经分片过的数据报有可能再次被分片。
当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并且在选择路由时,与其他分组独立。这样,当数据报的这些分片到达目的端时可能会失序,但在IP首部有足够的信息让接收端能正确组装这些分片。
尽管IP分片的过程是透明的,但即使只丢失一个分片的数据,也要重传整个数据报。因为IP层本身没有超时超时重传的机制,由更高层负责超时和重传,但是只有TCP有超时重传机制,UDP没有超时重传机制。
事实上,如果对数据报分片的是中间路由器,而不是起始端系统,那么起始端就无法知道数据报是如何被分片的,所以经常要避免分片。
UDP分片
分组可以是一个完整的数据报,也可能IP数据报的一个分组。
3、ICMP不可达差错(需要分片)
发生ICMP不可达差错的另一种情况是,当路由器收到一份需要分片的数据报,而IP首部又设置了不分片的标志比特。如果某个程序需要判断到达目的端的路径MTU,那么这个差错就可以被该程序使用。
需要分片但又设置不分片标志比特时的ICMP不可达差错报文格式
4、用Traceroute确定路径MTU
要做的是发送分组,并设置“不分片”标志比特。发送的第一个分组长度正好与出口MTU相等,每次收到ICMP不分片差错时就减小分组的长度。如果路由器发送的ICMP差错报文是新格式,包含出开口的MTU,那么就用该MTU值来发送,否则就用下一个最小的MTU值来发送。
5、采用UDP的路径MTU发现
使用UDP进行路径MTU发现的系统
6、UDP最大数据长度
IP数据报的最大长度是65535字节,去除IP首部20字节和UDP首部8字节,UDP最大数据长度为65507字节。
7、ICMP源站抑制差错
当一个系统(路由器或主机)接收数据报的速度比其处理速度快时,就可能产生ICMP“源站抑制差错”。即使一个系统已经没有缓存并丢弃数据报,也不一定要求它发送源站抑制报文。
ICMP源站抑制差错报文格式
8、UDP服务器的设计
(1)客户IP地址及端口号
(2)目的IP地址
(3)UDP输入队列
(4)限制本地IP地址
(5)限制远端IP地址
(6)每个端口有多个接收者
9、广播和多播
广播和多播仅用于UDP,它们对需将报文同时传往多个接收者的应用来说十分重要。
TCP是一个面向连接的协议,它意味着分别运行于两个主机(由IP地址确定)内的两个进程(由端口号确定)间存在一条连接。
单播:以太网帧仅发往单个目的主机,目的地址指明单个接收接口。单播的方式下,任意两个主机的通信不会干扰网内的其他主机。
广播:主机要向网上的所有其他主机发送以太网帧。
多播:处于广播和单播之间,帧仅传送给属于多播组的多个主机。
协议栈各层对收到帧的过滤过程
10、IGMP(Internet组管理协议)
IGMP是IP层的一个附加协议。
IGMP报文的字段格式
多播的基础就是一个进程的概念,该进程在一个主机的给定的接口上加入了一个多播组。在一个给的接口上的多播组的成员是动态的,它随进程的加入和离开多播组而变化。
多播路由器使用IGMP报文来记录与该路由器连接的网络中组成员的变化。
(1)当第一个进程加入一个组时,主机就发送一个IGMP报告。如果一个主机的多个进程加入同一个组,只发送一个IGMP报告。这个报告被发送到进程加入组所在的同一接口上。
(2)进程离开一个组时,主机不发送IGMP报告,即便是组中的最后一个进程离开。主机知道在确定的组中不再有组成员后,在随后收到的IGMP查询中就不再发送报告报文。
(3)多播路由器定时发送IGMP查询来了解是否还有任何主机包含有属于多播组的进程。多播路由器必须向每个接口发送一个IGMP查询报文。因为路由器希望主机对它加入的每个多播组均发回一个报告,因此IGMP查询报文中的组地址被设置为0。
(4)主机通告发送一个IGMP报告来响应一个IGMP查询,对每个至少还包含一个进程的组均要发回IGMP报告。
使用这些查询和报告报文,多播路由器对每个接口保持一个表,表中记录接口上至少还包含一个主机的多播组。当路由器收到要转发的多播数据报时,它只将该数据报转发到还拥有属于那个组主机的接口上。
IGMP的报告和查询
11、TCP(传输控制协议)
五、应用层
1、DNS(域名系统/域名服务器)
DNS是一种用于TCP/IP应用程序的分布式数据库,它提供主机名和IP地址之间的转换及有关电子邮件的选路信息。DNS提供允许服务器和客户程序相互通信的协议。分布式是指在Internet上单个站点不能拥有所有的信息,每个站点保留自己的数据库信息,并运行一个服务器程序供Internet上的其他程序(客户端程序)查询。
对DNS的访问是通过地址解析器来完成的,Unix中地址解析器主要通过gethostbyname和gethostbyaddr这两个库函数来访问的。gethostbyname接收主机名返回IP地址,gethostbyaddr接收IP地址返回主机名。
DNS的名字空间和Unix的文件系统相似,也具有层次结构。域名树中的每个节点必须有一个唯一的域名,但域名树中的不同节点可以使用相同的标识。
DNS的层次组织
3字符长的普通域名
2、高速缓存
3、TFTP(简单文件传输协议)
TFTP是一个简单的协议,适合于只读存储器,仅用于无盘系统进行系统引导。它只使用几种报文,是一种停止等待协议。
为了允许多个客户端同时进行系统引导,TFTP服务器必须提供一定形式的并发。
TFTP协议没有提供安全性。
4、BOOTP(引导程序协议)
BOOTP使用UDP协议,它为无盘系统获取它的IP地址提供了除RARP之外的另一种方法。BOOTP还能返回其他信息,如路由器的IP地址、客户的子网掩码和名字服务器的IP地址。
一个无盘系统需要下列协议才能在只读服务器中完成:BOOTP、TFTP、UDP、IP和一个局域网的驱动程序。
BOOTP服务器比一个RARP服务器更易于实现,因为BOOTP请求和应答是在UDP数据报中,而不是在特殊的链路层帧中。一个路由器还能作为真正BOOTP服务器代理,向位于不同网络的真正BOOTP服务器转发客户的BOOTP请求。