2020/3/171/45构建中小型企业局域网第5章常用的网络协议栈2020/3/172/45上章回顾二进制与十进制、十六进制的转换IP地址的格式、组成及分类专网(私有)IP地址和公网(公共)IP地址子网和子网掩码路由器的工作原理可变长度子网掩码(VLSM)及其计算无类域间路由缺省网关2020/3/173/45本章内容IP、TCP、UDP协议的编址方案TCP的封装和工作原理UDP的封装和工作原理常用的TCP和UDP端口号使用Sniffer进行协议分析2020/3/174/45传输控制协议/网际协议(TCP/IP)TCP/IP不是一个简单的协议,而是一组小的、专业化协议,包括TCP、IP、UDP、ARP、ICMP以及其他的一些被称为子协议的协议。TCP/IP是因特网标准,也是局域网的首选协议。许多网络操作系统使用TCP/IP为缺省协议。TCP/IP最大的优势之一是其可路由性,也就意味着它可以携带被路由器解释的网络编址信息。TCP/IP还具有灵活性,可在多个网络操作系统(NOS)或网络介质的联合系统中运行。然而由于它的灵活性,TCP/IP需要更多的配置。能够跨越多个局域网段的协议被称为可路由协议。由于其携带了网络层信息和编址信息,这些信息可由路由器理解。然而,并不是所有的协议都是可路由的。2020/3/175/45TCP/IP模型与OSI模型OSI7层模型物理层数据链路层网络层传输层会话层表示层应用层应用层传输层互联网层网络接口层TCP/IP4层模型2020/3/176/45TCP/IP核心协议——IPTCP和IP是TCP/IP协议群中最重要的核心协议。网际协议(IP)属于TCP/IP模型和互联网层,提供关于数据应如何传输以及传输到何处的信息。数据帧的IP部分被称为一个IP数据报,IP数据报包含了路由器在子网中传输数据所必需的信息。IP数据报包括报头和数据,总长度不能超过65535字节。2020/3/177/45网络层的功能定义了基于IP协议的逻辑地址连接不同的媒介类型选择数据通过网络的最佳路径IP协议是一种不可靠的、无连接的协议,即意味着它不保证数据的可靠传输。然而,TCP/IP协议群中更高层协议可使用IP信息确保数据包按正确的地址进行传输。注意到IP数据报并不包含一个校验和部件,报头校验和仅仅验证IP报头中路由信息的完整性。如果当数据包被接收时伴随信息的校验和值不正确,则数据包将被认为已破坏并被抛弃,同时,一个新的数据包被发送。2020/3/178/45IP包头的格式版本(4)首部长度(4)优先级与服务类型(8)总长度(16)标识符(16)标志(3)段偏移量(13)TTL(8)协议号(8)首部校验和(16)源地址(32)目标地址(32)可选项数据20字节版本字段,IPv4优先级与服务类型,提供3层的QoSIP包头部长度,因为长度可变,因此需要定义IP数据总长度上层来的数据到IP层会被分段,这几个字段用来对数据包进行标识,使在数据到达目的端重组的时候,不会乱序生命周期字段,经过一个路由器值减1,为0时,数据包丢弃。为了防止一个数据包在网络中无限的循环下去。协议字段,用来标识封装的上层数据是UDP还是TCP,UDP是17,TCP是62020/3/179/45传输层的作用IP层提供点到点的连接传输层提供端到端的连接IP层:找到了这台主机!传输层:找到了应用进程2020/3/1710/45传输层的协议TCP(TransmissionControlProtocol)传输控制协议可靠的、面向连接的协议传输效率低UDP(UserDatagramProtocol)用户数据报协议不可靠的、无连接的服务传输效率高2020/3/1711/45TCP的封装格式源端口号目标端口号32位序列号32位确认号4位首部长度保留(6位)URGACKPSHRSTSYNFIN16位窗口大小16位校验和16位紧急指针可选项数据0151631发送TCP进程对应的端口号目标端接收进程的端口号0~232-1范围内,数据段标记,用于到目的端对到达包的重组0~232-1范围内,对发送端的确认信息,告诉发送端这个序号之前的数据段都收到了紧急指针有效位,与16位紧急指针配合使用确认序列号有效位,表明该数据包包含确认信息为1时,请求重新建立TCP连接为1时,请求建立连接为1时,数据发送完毕,请求断开连接滑动窗口的大小,指明本地可接收数据的字节数通知接收端立即将数据提交给用户进程,不在缓存中停留,等待更多的数据2020/3/1712/45TCP的连接-三次握手发送SYN,请求建立连接(seq=100ctl=SYN)HostAHostB1发送SYN、ACK(seq=300ack=101ctl=SYN、ACK)23发送ACK(seq=101ack=301ctl=ACK)2020/3/1713/45TCP的四次断开发送FIN,请求断开连接(seq=101,ack=301,ctl=FIN,ACK)HostAHostB1发送ACK(seq=301,ack=102ctl=ACK)24发送ACK(seq=102,ack=302ctl=ACK)3发送FIN,请求断开连接(seq=301,ack=102ctl=FIN,ACK)2020/3/1714/45TCP支持的应用层协议端口协议说明21FTP文件传输协议,用于上传、下载23Telnet用于远程登录,通过连接目标计算机的这一端口,得到验证后可以远程控制管理目标计算机25SMTP简单邮件传输协议,用于发送邮件53DNS域名服务,当用户输入网站的名称后,由DNS负责将它解析成IP地址,这个过程中用到的端口号是5380HTTP超文本传输协议,通过HTTP实现网络上超文本的传输2020/3/1715/45UDP的封装格式16位源端口号16位目标端口号16位UDP长度16位UDP校验和数据发送端的UDP进程端口号接收端的UDP进程端口号包含数据的长度,可以算出数据的结束位置UDP的差错控制(可选)01516312020/3/1716/45UDP的使用端口协议说明69TFTP简单文件传输协议53DNS域名服务123NTP网络时间协议111RPC远程过程调用2020/3/1717/45UDP的流控和差错控制UDP没有流控机制UDP只有校验和来提供差错控制需要上层协议来提供差错控制:例如TFTP协议HostAHostBTFTP协议提供分块传输、分块确认的机制,保证数据传输的可靠性2020/3/1718/45地址解析协议ARPARP是一个互联网层协议,它获取主机或节点的MAC地址(物理地址)并创建一个本地数据库以将MAC地址映射到主机IP(逻辑)地址上。ARP协议与IP协议紧密协作,因为IP在指导发送数据到目标主机之前必须具有目标主机的地址。为使ARP更加有效,计算机在一个缓冲区保存已经知道的IP-MAC地址映射表,这样就无需广播冗余请求。arp/a2020/3/1719/45ARP协议4-1IP地址解析为MAC地址主机10.1.1.1想发送数据给主机10.1.1.2,检查缓存,发现没有10.1.1.2的MAC地址10.1.1.110.1.1.210.1.1.310.1.1.4ARPCacheInternetAdressPhysicalAdressType2020/3/1720/45ARP协议4-2IP地址解析为MAC地址主机10.1.1.1发送ARP广播10.1.1.110.1.1.210.1.1.310.1.1.4我需要10.1.1.2的MAC地址2020/3/1721/45ARP协议4-3IP地址解析为MAC地址所有主机都接收到10.1.1.1的ARP广播,但只有10.1.1.2给它一个单播回复,并缓存10.1.1.1的MAC地址10.1.1.110.1.1.210.1.1.310.1.1.4我的MAC地址是0800.0020.11112020/3/1722/45ARP协议4-4IP地址解析为MAC地址主机10.1.1.1将10.1.1.2的MAC地址保存到缓存中,发送数据10.1.1.110.1.1.210.1.1.310.1.1.4ARPCacheInternetAdressPhysicalAdressType10.1.1.20800.0020.1111Dynamic2020/3/1723/45ICMP协议ICMP位于TCP/IP模型互联网层的IP协议和TCP协议之间,ICMP消息通过IP数据报传送,它不提供错误控制服务,被用来发送错误和控制信息。ICMP常用于诊断实用程序中,如ping命令和TRACERT命令。ICMP定义了很多信息类型,例如:目的地不可达TTL超时信息请求信息应答地址请求地址应答2020/3/1724/45ICMP协议的应用2-1ICMP检测双向通路的连通性Ping命令使用ICMP协议Ping[-t][-a][-l字节数]Ip_Address|Target_name2020/3/1725/45ICMP协议的应用2-2在一台计算机上向远程主机发起ping连接时,可能收到的返回信息有:连接建立成功Replyfrom192.168.1.1:bytes=32time1msTTL=128目标主机不可达•Destinationhostunreachable.请求时间超时•Requesttimedout.未知主机名•Unknownhostabc.2020/3/1726/45Ping命令的参数3-1-t:一直ping,直到手动关闭(^C)为止2020/3/1727/45Ping命令的参数3-2-a:显示对方的主机名2020/3/1728/45Ping命令的参数3-3-l字节数:发送指定大小的ping包2020/3/1729/45TCP/IP协议栈FTPIPTFTPUDPTCPTelnetSMTPHTTP应用层传输层网络层会话层表示层数据链路层EthernetPPPFrameRelay根据链路类型选择不同的协议,对上层透明根据协议号选择应该提交给TCP还是UDP根据端口号提交给相应的应用程序2020/3/1730/45IPX/SPXIPX/SPX(网际包交换/序列包交换)最初是由Xerox开发的一种协议,在20世纪80年代由Novell进行修改并应用于它的NetWare网络操作系统。其他的网络操作系统,如Windows2003和工作站操作系统如Windowsxp,也能使用IPX/SPX协议与NovellNetWare系统进行网际互联。IPX/SPX是驻留在OSI模型不同层的协议组合。IPX/SPX携带网络编址信息,因而它是可路由的。2020/3/1731/45IPX/SPX核心协议IPX/SPX的核心协议提供了OSI模型中传输层和网络层的服务。IPX(网际包交换)协议,类似于TCP/IP协议群中的IP协议,作用于OSI模型的网络层,提供路由和网际服务。如同IP协议,IPX协议也使用数据报传输数据。在发送数据前,由于不要求建立一个会话,IPX协议是一种无连接的服务,它将不保证数据是否将以有序或无错的形式发送。总之,它是一种功能有限但高效的子协议。2020/3/1732/45SPXSPX(序列包交换)协议属于OSI模型的传输层,它与IPX协议共同作用以确保数据被完整地、无错地接受。如同TCP/IP协议群中的TCP协议,SPX是一种面向连接的协议,因而它必须确认在发送数据前与目标节点建立了一个会话。它能检测一个数据包是否被全部接受。若发现数据包丢失或被破坏,SPX协议将重发该数据包。SPX信息封装在IPX数据包中,也就是它的域位于IPX数据报的数据域中。2020/3/1733/45SAPSAP(服务广告协议)作用于OSI模型的应用层、表示层、会话层,直接运行于IPX协议之上。NetWare服务器和路由器使用SAP协议向整个网络广告它们所能提供的服务。例如,一个用作打印服务器的服务器可以使用S