如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第3章基于TCP/IP协议的网络编程3.1协议概述3.1协议概述3.1.1IP协议3.1.2传输层协议(1)TCP协议(2)UDP协议3.2地址3.2.1物理地址与IP地址物理地址与IP地址的映射——地址解析3.2.2端口地址每个应用程序都必须有一个或多个端口号来接收由TCP或UDP送来的数据你的上网计算机从上图中可以看出,端口是电脑进出Internet的大门,任何一个应用程序都必须打开一个(或数个)门(端口)之后才能与Internet世界沟通,当任何一个程序退出时也必须将所打开的端口全部关闭才行。定义:端口用于标识通信主机中不同的通信进程,作为UDP和TCP数据报头的一部分传输。各个通信进程通过系统调用与某些端口建立绑定,传输层传送到该端口的所有数据相应地被与其绑定的进程接收。端口号(PortNumber):每个端口都是用端口号来标识的。在TCP和UDP协议中,端口号是一个16位的整数值,即可以提供65536(216)个端口。注意:端口和协议在进程通信中是密不可分的,不同协议的端口之间没有任何联系。例如TCP和UDP协议的端口号相互独立的,若TCP有一个1001号端口,同样UDP也可以有一个1001号端口,它们并不冲突。端口号的分配问题:TCP/IP将全部端口号分为保留端口号和自由端口号两部分。保留端口号(1~1023):以静态方式进行分配,由IANA进行管理。TCP和UDP协议都规定,把1~255之间的端口号作为保留端口,对应一些通用的应用层协议(如下图);而256~1023之间的端口通常由UNIX系统占用,提供一些特定的UNIX服务。TCP保留端口号举例:自由端口(1024~65535):占全部端口的绝大部分,以动态方式进行分配(即应用程序根据自己的需要向操作系统申请,由系统进行管理)这样,当一个进程要与远地进程通信时,需要先申请一个自由端口号,然后根据静态分配的保留端口号或双方协商好的端口号与远地进程建立连接,才能传输数据。3.3客户机/服务器模式客户机/服务器模式的建立基于以下两点:首先,建立网络的起因是网络中软/硬件资源、运算能力和信息不均等,需要共享,从而形成拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对称的情况。其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为需要通信的进程间建立联系,为二者的数据交换提供同步。客户机/服务器模型工作时要求有一套协议来保证保证服务能够被提供,协议必须在通信的两端——客户机和服务器都被实现。根据实际情况,协议可以是对称的,也可以是非对称的。对称的:每一方都有可能扮演主从角色。如Internet中用于终端仿真的Telnet非对称的:一方不可改变地被认为是主机,而另一方则是从机。如Internet中的HTTP。客户机/服务器模式的工作步骤:服务器进程开始执行,首先初始化本身,然后进入睡眠状态以等待客户进程的请求。通常是在一个众所周知的地址(如FTP:21)侦听客户对服务的请求在本系统或与服务器相连的其他系统上,某一个客户进程开始执行,把请求发送给服务器进程请求服务服务器进程“惊醒”并且为客户提供服务,作出适当的反应。从上面描述的过程可知:客户机与服务器进程的作用是非对称的,因此编码不同。服务进程一般是先于客户机请求而启动的,只要系统运行,该服务进程一直存在,直到正常终止或强迫终止。3.4Winsock介绍WindowsSockets:Winsock程序接口,它定义了一套可使网络程序开发人员在Windows环境下开发标准TCP/IP网络程序。Winsock继承了BerkeleySocket的主要特征,同时进行了重要扩充,有利于程序员开发出符合Windows编程模式的软件。Winsock接口包含了一组网络I/O和获取网络信息的库函数,网络程序通过调用这部分函数实现自己的功能:Winsock1.1的库函数在Winsock.dll动态链接库Winsock2.0的库函数在Ws2_32.dll动态链接库Winsock定义了如何使用API与Internet通讯协议(TCP/IP协议)的连接:应用程序调用Winsock的API实现相互之间的通信,而Winsock则利用下层的网络通信协议功能与操作系统调用实现实际的通信工作。它们之间的关系如图:3.4.2Winsock的基本概念一个正在被使用的Socket都有它的类型和与其相关的网络应用进程。根据通信性质,Socket可以分为两类:StreamSocket(会话套接字):使用TCP协议,提供一种面向连接的可靠数据通信方式。当要发送大批量数据或想让发出的数据按顺序无重复地到达目的地时,就要使用会话套接字,但需要很多开销。DatagramSoc