您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > windows网络编程第2章.
Windows网络编程实用教程授课教师:职务:第2章TCP/IP协议簇及其应用课程描述本章将介绍TCP/IP协议簇中包含的常用网络协议及其应用,使读者了解它们的基本功能和工作原理,为后面基于这些协议编写网络应用程序奠定基础。本章知识点IP协议TCP协议UDP协议TCP/IP协议簇中的其他常用协议2.1IP协议2.1.1IP协议基础2.1.2IP协议的关键机制2.1.1IP协议基础IP协议包含两个最基本的功能,即寻址和分片。当发送或接收数据时(例如收取电子邮件或浏览网页),信息将被拆分成若干个小块,称为数据包。每个数据包都包含发送者和接收者的IP地址。数据包首先被发送到网关,网关读取数据包中的目的地址,然后将其转发到能够到达该目的地址的邻近的网关;每个网关都重复上面的过程,直到网关认定目的主机在其可以直接到达的网段或域中,则网关将数据包直接发送给目的计算机。IP是无连接的协议,也就是说在通信的两个端点之间不存在持续的连接。使用IP协议发送数据包的示意图IP数据包的格式IP数据包各字段的含义版本,目前使用的IP版本,大小为4位。包头长度,用于指定数据包头的长度,大小为4位。服务类型(TOS),用于设置数据传输的优先权或者优先级,大小为8位。总长度,用于指定数据包的总长度,等于包头长度加上数据长度,大小为16位。标识,用于指定当前数据包的标识号,大小为16位。分段标志,确定一个数据包是否可以分段,同时也指出当前分段后面是否还有更多分段,大小为3位。分段偏移量,帮助目标主机查找分段在整个数据包中的位置,大小为13位。生存时间(TTL),设置数据包可以经过的最多路由器数,每经过一个路由器,该值会减1。该值等于0时,数据包被丢弃。该字段的长度为8位。协议,指定与该数据包相关联的上层协议,大小为8位。包头校验和,检查传输数据的完整性,大小为16位。源地址,发送数据包的计算机的IP地址,大小为32位。目的地址,接收数据包的计算机的IP地址,大小为32位。选项,指定IP数据包中的选项。关于选项的具体含义请参照2.1.2小节理解。数据,数据包中传输的数据。IP协议的关键机制服务类型。生存时间。选项。包头校验和。ping命令结果中的TTL值2.2TCP和UDP协议2.2.1TCP协议的网络功能2.2.2TCP段结构2.2.3TCP的基本工作流程2.2.4UDP协议2.2.1TCP协议的网络功能TCP(TransmissionControlProtocol,传输控制协议)是面向连接的传输协议,通过序列确认和包重发机制提供可靠的数据流发送和应用程序的虚拟连接服务。TCP协议和IP协议相结合,构成了Internet协议的核心。TCP是一个精确传输协议,但并不是及时传输协议。使用TCP传输数据可能会导致相对较长的延时,通常用来等待打乱顺序的消息或者重新传输丢失的消息。TCP是可靠的流传输服务,它可以保证从一个主机传送到另一个主机的数据流不会出现重复数据或丢失数据的情况。因为在IP协议中数据包的传输是不可靠的,所以在传输时需要使用一种叫做主动确认的技术来确保数据包传输的可靠性。2.2.2TCP段结构为了更高效地在网络中传输,消息被拆分成一个个消息单元,在网络上的计算机之间传递。消息单元被称为段(segment)。TCP段结构2.2.3TCP的基本工作流程两个主机使用TCP协议进行通信可以分为3个阶段,即建立连接阶段、数据传输阶段和断开连接释放资源阶段。1.TCP的状态2.建立连接3.数据传输4.断开连接1.TCP的状态LISTEN:服务器端等待远程客户端连接请求的状态。SYN-SENT:当要访问其他计算机的服务时,首先要发送一个同步信号给该端口,此时状态变为SYN_SENT。如果连接成功了,状态就会变为ESTABLISHED,因此SYN_SENT状态是非常短暂的。但如果发现SYN_SENT非常多且在向不同的机器发送数据,那这台计算机很可能中了冲击波或震荡波之类的病毒。SYN-RECEIVED:在收到和发送一个连接请求后等待对方对连接请求的确认。ESTABLISHED:代表一个打开的连接。FIN-WAIT-1:等待远程TCP的连接中断请求,或者等待对先前连接中断请求的确认。FIN-WAIT-2:从远程TCP等待连接中断请求。CLOSE-WAIT:等待从本地用户发来的连接中断请求。CLOSING:等待远程TCP对连接中断的确认。LAST-ACK:等待对上次发向远程TCP的连接中断请求的确认。TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认。CLOSED:没有任何连接状态。2.建立连接3.数据传输TCP是一种可靠的传输协议,它使用序列号来标识数据中的每个字节。序列号中包含每个主机中发送的字节的顺序,从而使目的主机可以按照顺序对数据进行重组。每个字节的序列号是递增的。在建立连接时3次握手的前两次中,两端的主机会交换初始序列号(ISN)。初始序列号是随机的,不可预知的。TCP还提供流量控制的功能。如果发送方主机的网卡带宽高于接收方主机的网卡带宽,则要对发送数据的流量进行控制,否则接收方将无法稳定地接收和处理数据。4.断开连接在多数情况下,TCP使用4次握手来断开连接。当一方希望断开连接时,它会向对方发送一个FIN包;对方在收到FIN包后,会发送一个ACK确认包。因此,通常来说双向连接需要从每个TCP端点发送一对FIN和ACK段。也可以使用3次握手的方式断开TCP连接。当主机A发送FIN包后,主机B回复FIN加ACK包,将上面的两个步骤合并为一个步骤,然后主机A再回复ACK包。如果两个主机同时发送FIN包,然后又都收到了对应的ACK包,则这种情况可以看作是2次握手。2.2.4UDP协议UDP(UserDatagramProtocol,用户数据报协议)可以提供一种基本的、低延时的数据报传输。UDP协议的主要作用是将网络数据流量压缩成数据报的形式进行传输。每个数据报的前8个字节用来包含报头信息,剩余字节则是具体的传输数据。与TCP相比,UDP更适合发送数据量比较少、但对响应速度要求比较高的情况。常用的TCP和UDP端口端口号协议说明21TCPFTP服务器所开放的端口,用于上传、下载22TCPPcAnywhere建立的TCP连接的端口23TCPTelnet远程登录25TCPSMTP服务器所开放的端口,用于发送邮件53TCPDNS服务器所开放的端口80TCPHttp端口,用于网页浏览137UDPNetBios命名服务138UDPNetBios数据报服务139TCPNetBios会话服务,当通过网上邻居传输文件时用137、138和139端口161UDP简单网络管理协议SNMP443TCP/UDPHttps网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP1433TCPSQLServer数据库服务器开放的端口2.3其他常用协议2.3.1ARP协议2.3.2ICMP协议2.3.3Telnet协议2.3.4FTP协议2.3.5SMTP和POP3协议2.3.1ARP协议大多数应用程序都根据IP地址实现网络通信,那么如何将IP地址转换为对应的MAC地址呢?ARP(AddressResolutionProtocol,地址解析协议)可以帮助用户实现此功能。查看本地ARP表的命令如下:arp-a动态维护ARP表的过程手动删除ARP表项中的条目arp–dIP地址【例2.1】从本地ARP表中删除IP地址为192.168.5.205的条目,命令如下:arp–d192.168.5.2052.ARP攻击ARP欺骗通常有如下两种情况(1)对路由器ARP表的欺骗,感染ARP木马的主机会不断地向路由器发送一系列错误的内网MAC地址,使真实的地址信息无法通过更新保存在路由器上。因为路由器负责转发数据包,是主机连接Internet的关键设备,所以路由器被欺骗后,网络中的大量主机都无法正常上网。(2)伪造网关,欺骗其他主机向假网关发送数据,而不是通过正确的路由器途径上网。3.RARP协议RARP(ReverseAddressResolutionProtocol,反向地址解析协议)可以根据局域网中一个设备的MAC地址获取它的IP地址。RARP协议广泛应用于无盘工作站,用于获取IP地址。普通计算机的IP地址保存在硬盘上,每次启动系统时可以从硬盘的配置文件中获得。但无盘工作站没有硬盘,因此它只能在每次启动时通过RARP协议向RARP服务器申请IP地址。RARP协议的工作过程(1)申请IP地址的主机在本地网络中发送一个RARP广播包,其中包括自己的MAC地址,希望任何收到该请求的RARP服务器为其分配一个IP地址。(2)收到请求的RARP服务器将检查其RARP列表,判断是否存在该MAC地址对应的IP地址。如果存在,则给源主机发送一个响应数据包,并将此IP地址提供给对方主机使用;如果不存在,则RARP服务器对该请求不做响应。一个网段中可以存在多个RARP服务器。(3)源主机收到RARP服务器发回的响应信息后,使用得到的IP地址进行通讯。(4)如果一直没有收到RARP服务器的响应信息,则表明初始化失败。2.3.2ICMP协议ICMP(InternetControlMessageProtocol,Internet控制报文协议),用于在IP主机、路由器之间传递控件消息。通常可以使用它来探测主机或网络设备的在线状态。ICMP报文可以分为差错报文和询问报文两种类型。在ICMP数据包中,使用类型和代码两个字段来描述ICMP报文的具体类型。2.3.3Telnet协议•Telnet(Teletypenetwork,网络终端协议)是在Internet和局域网上应用的网络协议,用于提供双向交互式的通讯功能。Telnet可以提供对远程主机进行访问的命令行接口,到远程主机的连接是基于TCP协议的虚拟终端连接。•Telnet是客户机/服务器结构的协议,它基于可靠的、面向连接的数据传输。通常,Telnet协议使用TCP端口23来建立连接,Telnet服务器应用程序会在该端口上监听连接请求。实现Telnet远程登录服务的4个步骤(1)与远程主机建立一个TCP连接,用户需要指定远程主机的IP地址和域名。(2)在本地终端上输入用户名和口令,然后输入控制命令,客户端会将它们以NVT(NetVirtualTerminal)格式传送到远程主机。(3)将远程主机输出的NVT格式的数据转化为本地所接受的格式,然后送回本地终端,包括命令的回显和命令的执行结果。(4)最后,本地终端断开连接,结束到远程主机的TCP连接。telnet命令telnet[-a][-eescapechar][-flogfile][-luser][-tterm][host[port]]参数说明如下:-a,试图自动登录。除了使用当前已经登录的用户名之外,与-l选项的功能相同。-e,指定Escape字符。telnet客户端将不发送Escape字符到远程主机。默认的Escape字符中CTRL+]。-f,指定客户端登录的文件名。-l,指定远程系统上登录的用户名。-t,指定终端类型,包括vt100、vt52、ansi和vtnt等。host,指定要连接的远程主机的名称或IP地址。port,指定端口号或服务名。Telnet命令Telnet命令简写功能描述closec关闭当前连接displayd显示操作参数open主机名或IP地址[端口号]o连接到指定主机的指定端口,默认端口为23quitq退出Telnetsetset设置选项sendsen将字符串发送到服务器statusst显示状态信息unsetu解除设置选项help?或者h显示帮助信息2.3.4FTP协议FTP(FileTransferProtocol,文件传输协议)是TCP/IP网络中交换和管理文件的标准网络协议。FTP基于客户机/服务器结构,用户使用FTP客户端可以连接
本文标题:windows网络编程第2章.
链接地址:https://www.777doc.com/doc-2867681 .html