WIN32汇编语言教程:第16章 TCP/IP和网络通信 · 16.1 网络基础知识(1)
Windows的网络通信建立在TCP/IP协议的基础上,在开始Windows的网络编程之前,应该首先了解TCP/IP协议的相关知识并且了解其中重要协议的工作方式,这样对正确理解WinSock程序的结构大有好处。在这一节中,将对一些网络基础知识进行一次快速的复习,有经验的读者可以直接跳过这一节。
16.1.1 TCP/IP协议
TCP/IP是Transmission Control Protocol/Internet Protocal(传输控制协议/国际协议)的缩写,它最初是在20世纪70年代初期由美国国防部出资为美国高级研究项目局(简称ARPA)开发的,经过了多年以后,以TCP/IP协议为基础构建的ARPA网已经演变成了今天的Internet。
1. TCP/IP模型的结构
在网络方面,最著名的结构模型就是开放系统互联模型(OSI模型),如图16.1左图所示,OSI模型的体系结构分为7层,其中应用程序所在的最高层通过多个层次最终调用网络硬件所在的物理层。OSI模型的分层结构有利于各层次的分工协作,只要每个层次都严格遵守边界协定,那么它对于其他层次来说就可以看成是一个“黑匣子”,结果就是开发人员能够致力于本层次的开发和提高,而不必担心能否和其他层次合作。
TCP/IP协议采用和OSI模型类似的概念性模型,但是将层次的划分减少到了4层。TCP/IP协议的每一层在功能上和OSI模型的一层或多层相对应。如图16.1的中间所示,TCP/IP模型分为应用层、传输层、Internet层和网络访问层。
TCP/IP模型的最底层是网络访问层(也叫网络接口层),它负责向网络的传输介质发送数据包以及从其中接收数据包。TCP/IP协议被设计为可以在不同类型的网络上传输,它并不依赖于某种特定的网络硬件,也不依赖于某种特定的数据帧格式和传输介质,网络访问层的作用是将上层的协议和网络硬件隔离开来,它通过不同的驱动程序来支持各种类型的网络硬件和组网方式,包括Ethernet(以太网),Token Ring(令牌网),Frame Relay(帧中继)和ATM等。
图16.1 TCP/IP协议组模型的结构
Internet层位于网络访问层的上层,它主要负责数据包的寻址、包装和路由功能,运行于这一层上的协议主要有:
● IP协议(网际协议)——是一个路由协议,负责IP寻址、数据包的分裂和重组任务。
● ARP协议(地址解析协议)——负责网络接口层地址和Internet层地址之间的解析,比如将一台主机的IP地址解析成其网卡的MAC地址。
● ICMP协议(网际控制消息协议)——提供诊断功能,用于报告IP数据包传送中的错误信息,Ping程序就是用ICMP协议检测某台主机的典型例子。
● IGMP协议(Internet组管理协议)——负责IP多点传送组的管理。
传输层位于Internet层的上层,主要负责提供对话和信息包通信服务。传输层的核心协议是TCP协议和UDP协议:
● TCP协议——提供一对一有连接导向的通信服务,提供连接的确认,数据包发送/接收顺序的控制,及出错重传等机制,以保证数据在传输中的正确性。
● UDP协议(用户数据报协议)——提供一对一或者一对多的通信服务,它不提供连接确定,数据包顺序控制,及出错重传等机制,所以传输的数据有可能是不可靠的。
应用层是TCP/IP模型的最上层,它为应用程序访问其他层次提供服务,应用层中定义了很多利用下层协议来交换数据的应用型协议,比如下面列出的协议最终是利用下层的TCP协议来交换数据的:
● HTTP(超文本传输协议)——用来传送Web网页文件。
● FTP协议(文件传输协议)——用于交互式文件传送。
● SMTP协议(简单邮件传输协议)——用于邮件的发送。
● POP3协议(邮局协议)——用于接收邮件。
● Telnet协议(远程登录协议)——用于终端登录操作。
而其他一些协议则建立于UDP协议的基础上,如:
● DNS(域名系统)——用于将域名解析成IP地址。
● RIP协议(路由信息协议)——用于供路由器在IP网络上交换路由信息。
● SNMP协议(简单网络管理协议)——用于网络管理控制台和网络设备(路由器、智能集线器等)之间的通信,或者用来收集和交换网络管理信息。
应用程序可以遵循这些协议定义的规范与其他程序进行数据交换。另外,一些接口也在应用层上为应用程序提供服务,如本章中要介绍的WinSock接口是一个标准的用于Windows网络编程的应用程序接口,WinSock接口由Microsoft提供;而NetBIOS是一个工业标准,它提供诸如对话、数据包交换和名字解析等服务,这些接口都是通过调用传输层或者Internet层协议来完成的。
2. 常用协议和RFC文档
TCP/IP的技术标准是公开的,正是这样才使Internet发展成全世界最大的网络,但技术上的公开性并不意味着技术标准可以由任何人随意规定,事实上,Internet的技术标准是由4个组织来负责维护的,它们是:
● Internet协会(ISOC,Internet SOCiety)
● Internet体系结构委员会(IAB,Internet Architecture Board)
● Internet工程专门小组(IETF,Internet Engineering Task Force)
● Internet研究专门小组(IRIF,Internet Research Task Force)
所有由这些组织公布的技术标准都是以RFC(Request for Comment)文档的形式出版的,表16.1列出了一些RFC文档的编号,它们定义了一些常见的协议。
表16.1 一些常用协议的RFC文档编号
协议缩写 | 协议名称 | 对应的RFC文档 |
UDP | User Datagram Protocol(用户数据报协议) | RFC 768 |
IP | Internet Protocol(网际协议) | RFC 791 |
TCP | Transmission Control Protocol(传输控制协议) | RFC 793 |
SMTP | Simple Mail Transfer Protocol(简单邮件传输协议) | RFC 821 |
ARP | Ethernet Address Resolution Protocol(以太网地址解析协议) | RFC 826 |
Telnet | Telnet Protocol(远程登录协议) | RFC 854,RFC 855 |
RARP | Reverse Address Resolution Protocol(逆地址解析协议) | RFC 903 |
FTP | File Transfer Protocol(文件传输协议) | RFC 959 |
DNS | Domain Name System(域名系统) | RFC 1034,RFC 1035 |
SNMP | Simple Network Management Protocol(简单网络管理协议) | RFC 1157 |
DHCP | Dynamic Host Configuration Protocol(动态主机配置协议) | RFC 1541 |
PPP | The Point-to-Point Protocol(点对点协议) | RFC 1661 |
POP3 | Post Office Protocol V3(邮局协议V3) | RFC 1939 |
HTTP1.0 | Hypertext Transfer Protocol 1.0(超文本传输协议1.0版本) | RFC 1945 |
IGMP | Internet Group Management Protocol(Internet组管理协议) | RFC 2236 |
HTTP 1.1 | Hypertext Transfer Protocol 1.1(超文本传输协议1.1版本) | RFC 2616,RFC 2617 |
RFC文档的原文是英文版的,可以很方便地从互联网中获取它们,获得任意一份RFC或者已发布的所有RFC的最简单的方法就是访问ISOC提供的站点:
http://www.rfc-editor.org/rfc.html
如果希望查阅中文版的RFC文档,可以访问China-Pub网站的中文RFC文档翻译计划,网址是:
http://www.china-pub.com/computers/eMook/emooknew/RFC/rfc.asp
上页:第15章 注册表和INI文件 · 15.3 对注册表的操作(8) 下页:第16章 TCP/IP和网络通信 · 16.1 网络基础知识(2)