TCP/IP详解卷一06

1.ICMP(Internet控制报文协议):用来传送差错报文以及其他需要注意的信息,ICMP报文通常被IP层或者更高层协议(TCP或者UDP)使用,一些ICMP报文把差错报文返回给用户进程。同时,ICMP报文是在IP数据报内部被传送的。

2.ICMP报文的格式:(所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同)

  类型字段(15个不同的值):以描述特定类型的ICMP报文。

  检验和字段(覆盖整个ICMP报文),检验和是必须存在的?????(理解检验和算法,不会)

3.ICMP报文的类型(由类型字段和代码字段共同决定):

  ICMP报文是查询报文还是差错报文。(当类型为17,代码为0时表示地址掩码请求;当地址为18,代码为0,表示地址掩码应答)

  那些情况不会导致ICMP差错报文:(1)ICMP差错报文(2)目的地址时广播地址或者多播地址(3)作为链路层广播的数据报(4)不是IP分片的第一片(5)源地址不是单个主机的数据报。

4.ICMP地址掩码请求与应答:

  ICMP地址掩码请求(用于无盘系统在引导过程中获取自己的子网掩码)

  BOOTP协议(无盘系统获取子网掩码)

  ICMP报文中的标识符和序列号字段由发送端任意选择设定,这些值在应答中将被返回,这样,发送端就可以把应答与请求进行匹配。(广播的特性:发送主机也能通过某种内部环回机制收到一份广播报文拷贝,必须包括发送主机在内)

  ICMP地址掩码应答必须是收到请求接口的子网掩码(这是因为多接口有不同的子网掩码),地址掩码来自环回接口。

5.ICMP时间戳请求与应答

  ICMP时间戳请求允许系统向另一个系统查询当前的时间。(这种ICMP报文的好处是它提供了毫秒级的分辨率而rdate只能提供秒级的分辨率),但是,调用者必须通过其他方法获知当时的日期(缺陷)。

  请求端填写发起时间戳,然后发送报文。应答系统收到请求报文时填写接收时间戳,在发送应答时填写发送时间戳。

  ICMP报文中:发起时间戳(orig),接收时间戳(recv)以及发送时间戳(xmit),往返时间(rtt)(往返时间的值时收到应答时间值减去发送请求时的时间值),difference的值是接收时间戳值减去发起时间戳值。

  gateway(路由器)(当系统返回一个非标准时间戳值时,就用32bit时间戳中的高位来表示。)(不能计算发起时间戳和接收时间戳之间的时间差,单位不统一)

  NTP(网络时间协议)

  获取时间和日期的另一种方法:

    (1)以可读的格式返回当前的时间和日期(telnet来验证)

    (2)时间服务程序返回一个32bit的二进制数值,以秒为单位提供的日期和时间。

    (3)NTP(网络时间协议)可以保证LAN或者WAN上的一组系统的时钟误差在毫秒级以内。

    (4)分布式时间服务(DTS)

    (5)Unix系统提供守护程序timed(8),来同步局域网上的系统时钟。

6.ICMP端口不可达差错(ICMP查询报文-地址掩码和时间戳查询及应答)

  端口不可达报文(ICMP差错报文):

  在UDP中,如果收到一份UDP数据报而目的端口与某个正在使用的进程不相符,那么UDP返回一个ICMP不可达报文。

eg:

    在get命令后,一份UDP数据报就发送到主机svr4的8888端口。

    在UDP数据报送到主机之前,要先发送一份ARP请求来确定它的硬件地址。接着返回ARP应答,然后才发送UDP数据报。

    一个ICMP端口不可达差错是立刻返回的。但是,TFTP似乎忽略了这个ICMP报文,然后继续发送另一份UDP数据报。在客户放弃之前重发了三次。

    注意:ICMP报文是在主机之间交换的,而不用目的端口号,而每个20字节的UDP数据报则是从一个特定端口(2924)发送到另一个特定端口(8888)。

  ICMP的一个规则是:ICMP差错报文必须包含生成该差错报文的数据报IP收不,还必须至少跟该IP首部后面的8个字节。

    UDP首部中的内容是源端口号和目的端口号。在此时(由于将目的端口号发生了改变才会导致产生了ICMP端口不可达的差错报文),接收ICMP的系统可以根据源端口号(2924)来将差错报文与某个特定的用户进程相关联。

    TFTP客户程序所采用不太好的超时重传算法。(没有TCP的超时重传好用)

7.ICMP报文的4.4BSD处理

  在各个系统中,ICMP处理的方式是不相同的。

  类型17,代码0,描述:地址掩码请求,处理方法:内核产生应答(此时由内核进行处理)

  类型18,代码0,描述:地址掩码应答,处理方法:用户进程(此时报文就被传送到所有在内核中登记的用户进程,以读取接收到的ICMP报文;当不存在任何这样的用户进程,那么报文就会被悄悄丢弃)

  

    

  

  

      

时间: 2024-10-13 01:39:33

TCP/IP详解卷一06的相关文章

《TCP/IP详解 卷一》读书笔记-----广播&多播&IGMP

1.广播和多播都只适用于UDP,因为TCP是面向连接的,需要将两台主机的两个进程绑定在一起,即IP地址和端口对 2.通常,网卡能看到网络中的每一个数据帧,但是往往它只接受目的地址与自己MAC地址相同的或者为广播地址的帧(现在有些也能接收多播地址),然后将它传输给设备驱动 3.广播的问题在于它给那些对广播数据不感兴趣的主机增加了处理负担(需要通过网卡,驱动,IP等一层层的判断),而多播的出现恰好解决了这些问题.通常一台主机会被指定加入一个或多个多播组,网卡也会被告知自己属于哪几个多播组,于是只有属

TCP/IP详解卷一08

1.Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由(Traceroute程序不需要中间路由器具备任何特殊的或可选的功能). Traceroute程序只需要目的端运行一个UDP模块----其他不需要任何特殊的服务器应用程序. Traceroute程序使用ICMP报文和IP首部中的TTL字段(生存周期,由发送端初始设置一个8bit字段,跳站的计数器,用来防止数据报在选路时无休止地在网络中流动,在循环传递的数据报上加上一个生存上限). 当路由器收到一份IP数据报,

TCP/IP详解 卷一(第十四章 DNS:域名系统)

域名系统(DNS Domain Name System)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息. 从应用角度上看,对DNS的访问时通过一个地址解析器(resolver)来完成的. 在Unix主机中,该解析器主要是通过两个库函数gethostbyname(3)和gethostbyaddr(3)来访问的.前者接收主机名字返回IP地址,而后者接收IP地址来寻找主机名字. 解析器通过一个或多个名字服务器来完成这种相互转换. DNS基础 D

TCP/IP详解卷一07

1.Ping:目的是为了测试另一台主机是否可达.Ping程序发送一份icmp回显请求报文给主机,并等待返回ICMP回显应答(用ping作为诊断工具山如剖析ICMP,检测IP记录路由和时间戳选项的机会)(地址掩码和时间戳请求也都直接在内核中处理). 2.发送回显请求的ping程序为客户,被ping的主机为服务器.(Unix系统中在实现ping程序时是把ICMP报文中的标识符字段设置成发送进程的ID, 此时序列号从0开始,每发送一次回显请求就会加1(ping程序打印出返回的每个分组的序列号,允许查看

TCP/IP详解 卷一(第三章 IP:网际协议)

IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输. IP提供不可靠.无连接的数据报传送服务. 1.不可靠:就是它不能保证IP数据报能成功地到达目的地.IP仅提供最好的传输服务. 2.无连接:每个数据报的处理都是相互独立的,IP数据报可以不按发送顺序接收. 1.IP首部 其中TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数. 一旦经过一个处理它的路由器,它的值就减去1.当该字段的值为0时,数据报就被丢弃.

TCP/IP详解 卷一(第二章 链路层)

在TCP/IP协议族中,链路层主要有三个目的: 1.为IP模块发送和接收IP数据报 2.为ARP模块发送ARP请求和接收ARP应答 3.为RARP请求和接收RARP应答 TCP/IP支持多种不同的链路层协议,本文主要讨论以太网链路层协议.PPP协议以及大多数实现都包含的环回(loopback)驱动程序. 使用ipconfig命令查看本机的网络接口 其中eth0就是以太网接口,lo是环回接口. 1.以太网IP数据包的封装 2.PPP协议(点对点协议) 3.环回接口 环回接口允许在同一台主机上的客户

TCP/IP详解 卷一(第一章 概述)

很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们相互进行通信. 1.分层 TCP/IP不是一个协议,而是一个协议族,通常它被认为是一个四层的协议系统,下面展示了TCP/IP协议族中不同层次的协议 2.互联网的地址 互联网上每个接口必须有一个唯一的Internet地址(IP地址).IP地址(IPv4)长32bit,下面是5类不同的互联网地址格式 下面是各类IP地址的范围 3.端口号 TCP和UDP采用16bit的端口号来识别应用程序 4.RFC RFC(

TCP/IP详解 卷一(第七、八章 Ping、Traceroute程序)

Ping程序 Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达. 该程序发送一份ICMP回显请求报文给主句,并等待返回ICMP回显应答. ping程序还能测出到这台主机的往返时间 Traceroute程序 Traceroute程序是一个能更深入探索TCP/IP协议的方便可用的工具 Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由. 下图是书本的一个例子

《TCP/IP详解 卷一》读书笔记-----第三章 IP

1.Network byte order:数据在网络中的传输是按照大端模式来的,即如果需要传递一个四个字节的int变量,先传递最高的字节,然后依次类推.因此无论主机存储数据用的是大端模式还是小端模式,在传输之前都必须将其转换为大端. 2.IP数据报报头的检验和字段只对报头进行检验.因为通常IP数据报的数据字段中包含的TCP,UDP,ICMP,IGMP数据头部都包含对自身每个比特的校验,所以并不需要在IP数据报报头中进行重复校验. 3.IP路由:当IP层收到一个数据报之后,首先1)检验目的IP地址