西安工业大学毕业设计(论文) 网,使用户与其他网的通讯就像与本网的主机通讯一样方便实现,这一思想的相关协议有TELNET、FTP、SMTP、TCP、UDP、IP、ICMP、ARP、RARP等。 3.2.1 TCP/IP体系结构
TCP/IP协议实际上就是在物理网上的一组完整的网络协议。其中TCP是
提供传输层服务,而IP则是提供网络层服务。TCP/IP包括以下协议(结构如图3-1所示):
图3-1 TCP/IP协议体系结构
IP: 网间协议(Internet Protocol) 负责主机间数据的路由和网络上数据的
存储。同时为ICMP,TCP,UDP提供分组发送服务。用户进程通常不需要涉及这一层。
ARP: 地址解析协议(Address Resolution Protocol)此协议将网络地址映射到
硬件地址。
RARP: 反向地址解析协议(Reverse Address Resolution Protocol)此协议将硬件地址映射到网络地址。
ICMP: 网间报文控制协议(Internet Control Message Protocol)此协议处理信关
和主机的差错和传送控制。
TCP: 传送控制协议(Transmission Control Protocol)这是一种提供给用户进
程的可靠的全双工字节流面向连接的协议。它要为用户进程提供虚电路服务,并为数据可靠传输建立检查。(注:大多数网络用户程序使用TCP)。
UDP: 用户数据报协议(User Datagram Protocol)这是提供给用户进程的无连
6
西安工业大学毕业设计(论文) 接协议,用于传送数据而不执行正确性检查。
FTP: 文件传输协议(File Transfer Protocol)允许用户以文件操作的方式(文
件的增、删、改、查、传送等)与另一主机相互通信。
SMTP: 简单邮件传送协议(Simple Mail Transfer Protocol)SMTP协议为系统
之间传送电子邮件。
TELNET:终端协议(Telnet Terminal Protocol)允许用户以虚终端方式访问远程
主机。
HTTP: 超文本传输协议(Hypertext Transfer Protocol)。是用于从WWW服务器
传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少
TFTP: 简单文件传输协议(Trivial File Transfer Protocol)。它是TCP/IP协议族
中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不
复杂、开销不大的文件传输服务。
3.2.2 IP协议
网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫做IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。 3.2.3 TCP协议 TCP/IP特点
TCP/IP协议的核心部分是传输层协议(TCP、UDP),网络层协议(IP)和物理接口层,这三层通常是在操作系统内核中实现,因此用户一般不涉及。编程时,编程界面有两种形式:一、是由内核心直接提供的系统调用;二、使用以库函数方式提供的各种函数。前者为核内实现,后者为核外实现。用户服务要通过核外的应用程序才能实现,所以要使用套接字(Socket)来实现,下图3-2就是反映TCP/IP协议核心与应用程序的关系。
7
西安工业大学毕业设计(论文) 应用程序1应用程序2网络页面编程界面(SOCKET)TCP/IP核心协议物理介质
图3-2 TCP/IP协议的核心与应用程序关系
3.2.4 TCP/IP传送文件机制
下面以采用TCP/IP协议传送文件为例,说明TCP/IP的工作原理,其工作流程如下:
(1)在源主机上,应用层将一串应用数据流传送给传输层。
(2)传输层将应用层的数据流截成分组,并加上TCP报头形成TCP段,送交网络层。
(3)在网络层给TCP段加上包括源、目的主机IP地址的IP报头,生成一个IP数据包,并将IP数据包送交链路层。
(4)链路层在其MAC帧的数据部分装上IP数据包,再加上源、目的主机的MAC地址和帧头,并根据其目的MAC地址,将MAC帧发往目的主机或IP路由器。
(5)在目的主机,链路层将MAC帧的帧头去掉,并将IP数据包送交网络层。 (6)网络层检查IP报头,如果报头中校验和与计算结果不一致,则丢弃该IP 数据包;若校验和与计算结果一致,则去掉IP报头,将TCP段送交传输层。 (7)传输层检查顺序号,判断是否是正确的TCP分组,然后检查TCP报头数据。若正确,则向源主机发确认信息;若不正确或丢包,则向源主机要求重发信息。
(8)在目的主机,传输层去掉TCP报头,将排好顺序的分组组成应用数据流送给应用程序。这样目的主机接收到的来自源主机的字节流,就像是直接接收来自源主机的字节流一样。
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可
8
西安工业大学毕业设计(论文) 以被重传。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
9
4 Socket网络程序设计技术 4 Socket网络程序设计技术
4.1 Socket编程
文件传输系统得以实现的根本在于建立有效的连接以及是否存在文件传输载体。所谓Socket通常也称作\套接字\,用于描述IP地址和端口,socket类表现了客户端套接字,它是属于两台计算机的两个TCP通讯端口之间的通讯通道。在网络编程中,客户端使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口。服务器使用Socket监听指定的端口,端口可以随意指定,等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。 4.1.1 Winsock简介
以U.C. Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套microsoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。Windows Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,Windows Sockets也定义了一个二进制接口
(ABI),以此来保证应用Windows Sockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。遵守这套Windows Sockets规范的网络软件,我们称之为Windows Sockets兼容的,而Windows Sockets兼容实现的提供者,我们称之为Windows Sockets提供者。一个网络软件供应商必须百分之百地实现Windows Sockets规范才能做到现Windows Sockets兼容。任何能够与Windows Sockets兼容实现协同工作的应用程序就被认为是具有Windows Sockets接口。我们称这种应用程序为Windows Sockets应用程序。Windows Sockets规范定义并记录了如何使用API
与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出所有的 Windows Sockets实现都支持流套接口和数据报套接口。应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。
为了方便网络编程,Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但
10