1。网络应用程序的一般组成
一般来讲,可以将网络应用程序分为两个部分。一部分专门用来负责通信的模块;它们与网络协议栈相连接,借助网络协议栈提供的服务完成网络上的数据信息交换;另外一部分是面向用户或者进行其他处理的模块,它们接收用户的命令,或者对借助网络传输过来的数据进行加工。
2。网络协议栈
规定计算机之间交换的消息格式和含义的协定,被称为网络协议或者计算机通信协议。按照分层的模型设计协议,所形成的协议软件也是按层组织的,使用“栈”这一术语来描述实现整套协议的软件。
Internet是基于TCP/IP协议栈的。
3。网间进程通信
网间进程通信是指网络中不同主机的应用进程之间相互通信,当然,也可以把同机进程通信看做是网间通信的特例。网间通信需要解决以下问题。
(1)网间进程标识问题
在同一主机中,不同的进程可以用进程号唯一标识,但是,在网络环境下,各主机独立分配进程号已经不能惟一的标识。
在Internet中,用一个三元组可以在全局惟一的标识一个应用进程。
应用进程=(传输层协议,主机的IP地址,传输层端口)
一个完整的网间通信定义一个五元组在全局惟一的标识。
(传输层协议,本地机IP得之,本地机传输层端口,远地机IP地址,远地机传输层端口)。
(2)与网络协议栈连接的问题
网间通信实际是借助网络协议栈实现的。对于网络编程来说,与网络协议连接,这个问题通过定义套接字网络编程接口来解决。
(3)多重协议问题
现行的网络体系结构很多,操作系统往往支持众多的协议,不同的协议的工作方式不同,地址格式不同,因此网间进程通信需要解决多重协议的识别问题。
(4)不同的通信服务的问题
网间通信所要求的通信服务有不同的要求。在TCP/IP协议栈中,传输层有TCP和UDP两个协议,TCP提供可靠的数据流来传输服务,UDP提供不可靠的数据报传输服务,需要根据通信服务要求做出选择。
4。TCP/IP简介
TCP/IP(Transmission Control/Inetnet Protocol,传输控制协议/网际协议)是一系列协议,或者说协议簇,它定义了数据传输如何通过因特网进行交换。
图。TCP/IP协议栈简图
5。端口号的分配机制
具体来说,TCP或UDP端口分配规则如下。
端口号 | 用途 |
0 | 不使用,或者作为特殊用途 |
1~255 | 保留给特定服务 |
256~1023 | 保留给其他的服务,如路由 |
1024~4999 | 可以用作任意客户端口 |
5000~65535 | 可以用作任意的服务器端口 |