network socket (c++) 译文(2)

续上文:

原文链接http://www.madwizard.org/programming/tutorials/netcpp/2

翻译:

      网络原理及简介(续)

现在你已经基本掌握了网络接口协议层了,我们将继续介绍其他有关域名的原理,连接和软件层协议。

1.  DNS

DNS是域名服务器,它负责域名与IP地址之间的转换。因为IP地址不方便记忆,因此创建了其他更方便记忆的名字系统。你可以直接使用域名来代替IP地址。例如:域名可以为:madwizard.org或者somepc.someuniversity.edu,www.google.com等。任何人使用浏览器上网时用的就是域名。当你连接一个网站的时候,你需要网站的IP。因此你输入一个域名像www.google.com,首先需要查找相匹配的Google的IP地址。这时就需要借助于DNS。你的电脑发出一个域名查询请求给你所在网络的DNS。如果DNS可以解析这个域名的话,它将发送相匹配的IP地址给你。DNS由多级组成,如果本网络中的DNS不能解析域名,则它会把域名发送到更高一级的DNS进行解析,知道此域名被解析。

2.  Connection

TCP/IP是一个面向连接的协议。连接是建立在两个设备之间的,而且每一边使用它们自己的IP和端口号。通常一边叫做客户端,另一边叫做服务器端。

     2-1

客户端发送请求,服务器端作出相应的回应。例如,当打开一个网站,浏览器就是客户端,网站服务器就是服务器端。浏览器向服务器端发起连接请求,要求一个指定的资源。服务器端发送回一个回复和所需的数据。

服务器端是持续的等待进来的连接。这叫做监听(listening)。这个服务器通常有一个确定的IP地址和端口号。而除非是有需要的情况下,否则客户端一般不指定IP和端口号。这是因为客户端一般都是发起连接和发送请求信息的一方。为了创建连接,客户端需要知道处于监听状态的服务器的IP和端口号。这样一个连接请求发送到了那个服务器,等待被服务器接受(accept)。因为TCP/IP协议下的通信是双向的。因此,许多协议(如HTTP,FTP等)允许客户端和服务器端轮流响应。

服务器端和客户端各有一个IP地址和端口号。但是通常服务器端的IP地址和端口号是固定的。WWW(使用HTTP)的标准端口号位80。例如Google是一个网站服务器,它的端口号为80,IP地址为216.239.39.101(此刻)。每一个客户端(每一个正在googleing)连接这个IP地址和端口号。因此网站服务器在同一端口可以同时有很多个连接。这个没问题,因为在同一端口的通信都是属于同一个进程的。在客户端,端口号并不重要。可以为任意端口。有人可能认为同一个连接的两端的端口号需要是一样的。这是不对的。只需要打开一个网站,在命令行快速执行 'netstat -an' ,你就会看到如下:

TCP xxx.xxx.xxx.xxx:2894 216.239.39.101:80 ESTABLISHED

xxx.xxx.xxx.xxx是我电脑的IP,而216.239.39.101:80是Google的IP。冒号后面的数字是端口号。你可以看到,服务器的端口号是80,而客户端的端口号是个随机的端口号如2894。在同一个PC上,每一个客户端连接需要不同的端口号。这是因为每个连接的客户端不同。

 2-2

 3. protocols again

在前面的章节里,我已经展示了在不同网络接口层的几种协议。我还没有讨论在网络层工作的协议。例如HTTP,FTP,POP3,SMTP。它们大多数在客户端-服务器模式下工作。客户端发送一个请求,服务器端响应。这个协议里具体的定义了请求和回复的确切格式。现在就不进一步讨论它们了。等你们知道WINSOCK的基础怎样实际运行它们之后再讨论。

原文链接: https://www.cnblogs.com/xiaozhupp/archive/2013/05/02/3055612.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    network socket (c++) 译文(2)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/86805

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午10:47
下一篇 2023年2月9日 下午10:47

相关推荐