~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:计算机应用层
作者:李梓良
撰写时间:2020年5月8日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一.寻找套接字地址:
(1)服务器站点:
本地套接字地址:本地(服务器)套接字地址由操作系统提供。操作系统知道运行着服务器进程的计算机的IP地址。然而服务器进程的端口号需要被分配。如果此服务器进程是因特网管理结构定义的标准进程,那么端口号已经分配好了。比如:超文本传输协议(HTTP)被分配的端口号是80,其他进程就不能再用。若不是标准进程,则其设计者就要在规定范围内选择一个端口号分配给进程。当服务器开始运行时,就得知本地套接字地址。
远程套接字地址:是建立连接的客户套接字地址。由于服务器可以给多个用户提供服务,它事先并不知道远程套接字地址。当客户试图连接服务器时,服务器可以知道这个套接字地址。客户套接字地址包含在发送给服务器的请求报文中,它成为远程套接字地址来给客户提供响应。尽管服务器的本地套接字地址是固定的并且在生存期内一直使用,但是远程套接字地址在服务器与不同客户进行交互时都会改变。
(2)客户站点:需要一个本地(客户)和一个远程(服务器)套接字地址来通信
本地套接字地址:由操作系统提供。操作系统知道运行着客户进程的计算机的IP地址。然而端口号是每次客户进程需要开始通信时分配给客户进程的一个临时16位整数。但是端口号需要从一组由因特网管理机构定义的整数中分配,这称为临时端口号。
远程套接字地址:
i. 开启客户进程的用户知道运行着服务器进程的计算机的端口号和IP地址。
ii. 不知道IP地址。服务器由一个名称,一个唯一标识服务器进程的标识符。客户进程需要将这个标识符改成对应的服务器套接字地址。由于端口号应该是一个熟知端口号,因此客户端进程通常知道端口号。IP地址可以通过另一个客户-服务器应用来获得,即域名系统(Domain Name System, DNS)。DNS将服务器名称映射到运行着那个服务器的计算机IP地址上。
2)使用传输层的服务
UDP协议:提供了无连接的、不可靠的数据包服务。每个报文是单独的实体,被封装在一个称为数据报的分组中。UDP看不到来自同一个源端并去往同一个目的端的数据报之间的关系(连接)。
TCP协议:提供面向连接的可靠的字节流传输。要求两个终端首先通过交换一些连接建立分组来建立一个逻辑连接(握手),设定了两个终端间的某些参数。参数包括:要交换的数据分组大小、用于保存数据直到整个报文全部到达的缓冲区的大小等等。问题:不面向报文,不保留报文边界。
SCTP协议:提供来前面两个协议组合的功能。面向报文的,面向连接的可靠的服务。
3)标准客户端-服务器应用
(1)万维网
结构:分布式客户-服务器服务。
网络客户(浏览器):控制程序+客户协议+解释程序
控制程序接收来自键盘和鼠标的输入并使用客户端程序来访问文档。在文档被访问后,控制程 序使用解释程序来在屏幕上显示文档。客户协议可以是后文描述的任何一种协议,比如 HTTP 或 FTP。解释程序可以是 HTML、Java 或 JavaScript,这要取决于文档的类型。商业浏览器包括:Internet Explorer、Netscape Navigator 以及 Firefox。