第4章TCP/IP协议4.1TCP/IP协议及应用TCP/IP是一种基于无连接的IP包交换网络。TCP/IP模型共有4层,自底向上分别是:网络接口层(IP子网层)、网络互连层、传输层和应用层。1.网络接口层网络接口层又名IP子网层。这一层相当于OSI参考模型中的数据链路层和部分物理层接口。2.网络互连层网络互连层是整个体系结构的关键部分。网络互连层和OSI参考模型中的网络层在功能上非常相似。4.1.1TCP/IP模型4.1TCP/IP协议及应用3.传输层传输层位于网络互连层的上层。传输层定义了以下两个端到端的协议。•传输控制协议TCP(TransmissionControlProtocol)。•用户数据报协议UDP(UserDatagramProtocol)。传输层相当于OSI参考模型中的传输层,还具有会话层的部分职能。4.应用层TCP/IP模型的最上层是应用层,包含所有的高层的协议。高层协议有虚拟终端协议TELNET、文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议。4.1.1TCP/IP模型4.1TCP/IP协议及应用5.OSI参考模型与TCP/IP模型的比较OSI参考模型是一个较全面、较理想化的网络体系结构。与CP/IP体系结构相比,它更注重底层的网络结构和通信实现,对物理层和数据链路层的描述尤为重要。4.1.1TCP/IP模型网络接口层(IP子网)应用层TCP层IP层物理层应用层表示层会话层传输层网络层数据链路层OSI模型TCP/IP模型OSI参考模型与TCP/IP模型的比较4.1TCP/IP协议及应用ARP(地址解析协议)主要负责将网络中的32位IP地址映射为对应的48位物理地址,即网卡的MAC地址。比如IP地址位192.168.0.1,则地址映射后的网卡MAC地址为00-03-0F-FD-1D-2B。1.ARP缓存ARP缓存中保存有IP地址和MAC地址的映射。ARP缓存保存有动态项和静态项。动态项是自动添加和删除的,静态项则保留在CACHE中。ARP缓存总是为本地子网保留硬件广播地址,将其作为一个永久项。此项能使主机接受ARP广播。当查看缓存时,该项不会显示。缓存满容量时,最老的记录将被删除。4.1.2ARP/RARP协议4.1TCP/IP协议及应用2.ARP包结构4.1.2ARP/RARP协议硬件类型使用的硬件(网络访问层)类型协议类型解析过程中的协议使用以太类型的值硬件地址长度硬件地址的字节长度,对于以太网和令牌环来说,其长度为6字节协议地址长度协议地址字节的长度,IP的长度是4字节操作号指定当前执行操作的字段发送者的硬件地址发送者的硬件地址发送者的协议地址发送者的协议地址目的站硬件地址目标者的硬件地址目的站协议地址目标者的协议地址4.1TCP/IP协议及应用3.ARP消息传递4.解释本地IP地址(1)源主机ARP建立一个“目标主机的MAC地址是什么?”的请求。该请求包括目标主机的IP地址。本地网络广播(广播只在本地网络里才有效)此请求,使所有本地主机均能接收到。(2)本地网络上的每个主机都收到广播后查看请求包含的目标主机的IP地址是否为自己的IP地址。(3)当目标主机确定请求中的IP地址与自己的相符时,就会发送一个ARP答复,将自己的MAC地址传给源主机,同时用源主机的IP地址和MAC地址更新它的ARP缓存。源主机收到回答后也更新它的ARP缓存,于是便建立起了通信。4.1.2ARP/RARP协议4.1TCP/IP协议及应用5.解析远程IP地址(1)当目标IP地址为远程地址。源主机在本地路由表中查找,如果没找到,源主机认为是默认网关的IP地址。在ARP缓存中查找符合该网关记录的IP地址(硬件地址)。(2)若没找到该网关的记录,ARP将广播请求网关地址而不是目标主机的地址。路由器用自己的硬件地址响应源主机的ARP请求。源主机则将数据报送到路由器以传送到目标主机的网络,最终达到目标主机。(3)在路由器上,由IP决定目标IP地址是本地还是远程。如果是本地,路由器用ARP(缓存或广播)获得硬件地址。如果是远程,路由器在其路由表中查找该网关,然后运用ARP获得此网关的硬件地址。数据报被直接发送到下一个目标主机。4.1.2ARP/RARP协议4.1TCP/IP协议及应用(4)目标主机收到请求后,形成ICMP响应。因源主机在远程网上,将在本地路由表中查找源主机网的网关。找到网关后,ARP即获取它的硬件地址。(5)如果此网关的硬件地址不在ARP缓存中,通过ARP广播获得。一旦它获得硬件地址,ICMP响应就送到路由器上,然后传到源主机。4.1.2ARP/RARP协议4.1TCP/IP协议及应用1.ICMPICMP位于网络互连层,被用来传送IP的控制信息。ICMP数据报结构包括以下内容。•类型:一个8位类型字段,表示ICMP数据报类型。•代码:一个8位代码域,表示指定类型中的一个功能。如果一个类型中只有一种功能,代码域置为0。•检验和:数据报中ICMP部分上的一个16位检验和。4.1.3ICMP/IGMP协议4.1TCP/IP协议及应用2.IGMPIGMP数据报结构如下。•类型:0x1h类型称为主机成员请求,在多路广播路由器上用于指定多级组中的任何成员访问网络;0x2h类型称为主机成员报告,在主机上用于发布指定组中的成员情况,或者对一个路由器的主机成员请求进行回答。•未用:未用的域名被发送者置零且被接收者忽略。•检验和:IGMP头的一个16位检验和。•组地址:主机用该组地址在一个主机成员请求中存储IP多路广播地址。在主机成员请求中,组地址被全置零,而且硬件级的多路广播地址被用来表示主机组。4.1.3ICMP/IGMP协议4.1TCP/IP协议及应用数据报可以是由程序生成,也可以由网络协议生成。网络代码将建立sk_buff结构以包含数据,并且在协议层之间传递数据时,需要添加不同的协议内容。如果IP地址目标为本地地址时,IP将数据报直接传给那个主机;如果目标地址为远程地址的话,IP在本地的路由表中查找远程主机的路由(如果找到一个路由,IP用它传送数据报。如果没有找到,就会将数据报发送到源主机的默认路由器。4.1.4IP协议4.1TCP/IP协议及应用这时当路由器收到一个包后,该包向上传给IP。(1)如果信息繁忙,数据报将在路由器中停滞。(2)如果对于接受网络来说包太大的话,IP会将它分割成若干个小包。(3)当包被分解时,IP为每个新包制造一个新头,其中包括一个标志,用来显示其他小包在其后;一个小包ID,用来确定所有小包是一起的;一个小包偏移,用来告诉接收主机怎么重新组合它们。(4)IP计算一个新的检验和。(5)IP获取一个路由的目标硬件地址。(6)IP转发包。在下一主机,包被发送到TCP或UDP。每个路由器都要重复该过程。直到包到达最终目的地。当包到达最终目的地后,IP将小包组装成原来的包。4.1.4IP协议4.1TCP/IP协议及应用传输控制协议(TransmissionControlProtocol,TCP)是一种面向连接的、可靠的、基于字节流的运输层通信协议,通常由IETF的RFC793说明。1.端口端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。2.TCP端口TCP端口为信息的传送提供地点,端口号小于256的定义为常用端口。3.套接字(Socket)4.TCP滑动窗口4.1.5TCP协议4.1TCP/IP协议及应用用户数据报协议(UserDatagramProtocol,UDP)提供了无连接的数据报服务。它不支持连接的概念。它适用于无需应答并且通常一次只传送少量数据的应用软件。UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向“查询—应答”的服务,例如NFS,相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。欺骗UDP数据报比欺骗TCP数据报更容易,因为UDP没有建立初始化连接(也可以称为握手,因为在两个系统间没有虚电路)。4.1.6UDP协议4.1TCP/IP协议及应用用户数据报协议(UserDatagramProtocol,UDP)提供了无连接的4.1.6UDP协议4.1TCP/IP协议及应用用户数据报协议(UserDatagramProtocol,UDP)提供了无连接的4.1.6UDP协议UDP端口端口号端口名含义15NETSTAT网络状态53DOMAIN域名服务器69TFTP简单文件传送协议137NETBIOS-NSNETBIOS命令服务138NETBIOS-DGMNETBIOS数据报服务161SNMPSNMP网络监视器4.2IP数据报与数据传输IP数据报首部(头)格式包含以下内容:(1)版本号(Vers),包含了生成该数据报的IP协议的版本信息,它用来证实发送方,接收方和它们之间的所有路由器都同意的数据报格式。(2)首部长度(HeaderLength)字段,给出了以32位字长为单位的首部长度。(3)服务类型(ServiceType)字段,包含5个子字段和3个比特的优先级干字段。优先级干字段指明本数据报的优先级,允许发送方表示本数据报的重要程度。优先级的值从0(普通优先级)到7(网络控制)。(4)总长度(TotalLength)字段,给出了以8位组为单位的IP数据报长度。4.2.1IP数据报格式4.2IP数据报与数据传输(5)寿命(TimetoLive)字段,设置了该数据报在互联网中允许存在的时间(秒)或允许经过的路由器的数目。它是一个介于1~255之间的整数。(6)首部校验和(HeaderChecksum)字段,用于保证首部数据的完整性。IP校验和的计算是把首部看成一个16位的整数序列,对每个整数分别计算其二进制反码,然后相加,再对结果计算一次二进制反码而求得。为了计算校验和,假定首部校验和字段为0。(7)源IP地址(SourceIPAddress)和目的IP地址(DestinationIPAddress)字段,分别包含了数据报的(原始)发送方和(最终)接收方的32位IP地址。4.2.1IP数据报格式4.2IP数据报与数据传输数据报作为物理帧的数据封装在特定的物理帧内,通过帧的传输来实现数据报的传输。数据帧头部的目的地址是数据报送往目的地的下一跳的物理地址。数据报在源站进行封装,将物理帧传给下一跳,接收者从物理帧中的数据区提取数据报,丢掉帧的头部,然后采用下一个物理网络的帧格式进行封装,又传给下一跳,直至目的地。4.2.2IP封装、分片与重组4.2IP数据报与数据传输MTU(MaximumTransmissionUnit)是指一个特定的网络所允许的物理帧的最大数据量,当路由器收到一个大于其要转发的网络的MTU的数据报时,路由器必须将这个数据报分成可通过该网络的数据报片,每一片仍采用数据报的格式,且保留原数据报的标识符,但只包含原数据报的部分数据,在需要时,数据报片可以再次分片。每一IP分片都各自路由,到达目的主机后在IP层重组。4.2.2IP封装、分片与重组4.2IP数据报与数据传输目的网点的主机通过数据报首部的标识符来查证各片是否为同一个数据报的分片,且根据片偏移及标志来控制分片和重组。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。目的主机首次接到某一数据报的一个分片时,就启动一个计时器,如果在收到所有分片之前计时器超时,则接收机废弃已收到的分片,不对数据报处理。4.2.2IP封装、分片与重组4.3IP地址与子网掩码1.IP地址的概述IP地址的长度为32位,IP地址有两种表示形式,即二进制和点分十进制,由4个8位组成。人们易于识别的IP地址格式是用点分十进制表示的。所有的IP地址都包括网络号和主机号。4.3.1IP地址4.3IP地址与子网掩码2.IP地址的分类IP地址分为A类、B类、C类