第二章 - 互联网入门(2)
现在大家都了解了最基础的网络分层和接口,这一章我们将继续学习一些关于主机名(hostnames),连接(connections)和部分软件层协议。
1. DNS
DNS(Domain Name System 域名解析系统),它可以将主机名(hostnames)与IP地址互相转化。很显然,IP地址并不那么好记,所以需要一种实际一些的命名系统,现在我们用主机名来表示IP,诸如:www.sina.com.cn ,www.google.com,很熟悉吧?我们中绝大多数不会使用210.51.179.90(www.sina.com.cn 由于地域不同读者看到可能不是这个IP地址)来看新闻吧?我在浏览器器中敲入网址后,计算机首先回找到找到你的网络服务商DNS主机,从而获得对应的IP地址。并将这个IP发给你,你的浏览器会用这个IP去访问你所期望的网站,如果在没有对应这个网址的IP,那么该DNS服务器会向上一级的DNS服务器请求寻找,如此以往,总可找到。找到到再发还回来,下级的DNS 服务器便得到更新(以后就不麻烦领导了……)。
2. 连接 Connections
TCP/IP 是个联接向导协议,它总是连接两个设备,每个都有自己的IP地址和端口,一个称为服务端(client),另一个被称为客户端(server)。
客户端发出一个请求,服务端就要有个回应。例如我们打开一个网址,那么我们的浏览器就是客户端,网站服务器就是服务端。浏览器向服务器所求其希望的资源,服务器自然会发回所请求的资料。(这就是传说中的B/S结构,这是软件工程的东西,说远了……)
服务端必须一直等待新的请求连接,这被称为监听(listening ),其作用于一个特定的IP和端口号之上。客户端只需相时而动,客户端发起连接并提出请求。为建立连接,客户端需要知道服务端所监听的IP和端口号。任何TCP/IP 会话连接都是两种方法,多种协议,使的服务端与客户端之间轮流作用。
尽管客户端和服务端都用了IP和端口号,但是只有服务端的端口是固定的。客户端的IP是本机IP而端口则是一个随机的端口号(这个端口肯定没有任何程序在监听,一般会大于1024),举个例子,标准的WWW端口是80(HTTP)。用Google 做,其服务器IP地址是216.239.63.104:80(有可能和大家不一样)端口为80。我们来多开几个连接窗口,google不同的内容,然后打开命令与提示符窗口敲入命令"netstat -an",我们回看到:
TCP xxx.xxx.xxx.xxx:3427 216.239.63.104:80 ESTABLISHED
TCP xxx.xxx.xxx.xxx:3428 216.239.63.104:80 ESTABLISHED
xxx.xxx.xxx.xxx 是我的IP地址,216.239.63.104 是google 的 IP 冒号后面的端口号。我们可以注意到客户端的端口号是随机的。每个连接都有自己的端口号。这样服务端知道会把信息发还给谁……
|
3. 再说协议 Protocols again
在前面的几章,我们介绍了在不同层的几个协议。我们没有讨论在应用层的协议,如同 HTTP, FTP, POP3, SMTP。它们都是以C/S( client-server)形式工作的。对服务器用不同的格式请求便是使用了不同的协议,现在我们不在此多讨论。我们在以后的 winsock 基础编程中实际就是这样做的。