6.1 名词解释
- 域名系统(DNS) :域名系统(DNS,Domain Name System)将人类可读的域名 (例如,www.baidu.com) 转换为机器可读的 IP 地址 (例如,220.181.38.148)。我们可以将其理解为专为互联网设计的电话薄。
- 文件传输协议(FTP) :FTP 是 File TransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在 FTP 的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。 “下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。
- 简单文件传输协议(TFTP) :TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为 69。
- 远程终端协议(TELNET) :Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用 telnet 程序,用它连接到服务器。终端使用者可以在 telnet 程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet 会话,必须输入用户名和密码来登录服务器。Telnet 是常用的远程控制 Web 服务器的方法。
- 万维网(WWW) :WWW 是环球信息网的缩写,(亦作“Web”、“WWW”、“’W3’”,英文全称为“World Wide Web”),中文名字为“万维网”,”环球网”等,常简称为 Web。分为 Web 客户端和 Web 服务器程序。WWW 可以让 Web 客户端(常用浏览器)访问浏览 Web 服务器上的页面。是一个由许多互相链接的超文本组成的系统,通过互联网访问。在这个系统中,每个有用的事物,称为一样“资源”;并且由一个全局“统一资源标识符”(URI)标识;这些资源通过超文本传输协议(Hypertext Transfer Protocol)传送给用户,而后者通过点击链接来获得资源。万维网联盟(英语:World Wide Web Consortium,简称 W3C),又称 W3C 理事会。1994 年 10 月在麻省理工学院(MIT)计算机科学实验室成立。万维网并不等同互联网,万维网只是互联网所能提供的服务其中之一,是靠着互联网运行的一项服务。
- 统一资源定位符(URL) :统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
- 超文本传输协议(HTTP) :超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。1960 年美国人 Ted Nelson 构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了 HTTP 超文本传输协议标准架构的发展根基。
- 代理服务器(Proxy Server) : 代理服务器(Proxy Server)是一种网络实体,它又称为万维网高速缓存。 代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的的请求相同,就返回暂存的响应,而不需要按 URL 的地址再次去互联网访问该资源。代理服务器可在客户端或服务器工作,也可以在中间系统工作。
- 简单邮件传输协议(SMTP) : SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。 通过 SMTP 协议所指定的服务器,就可以把 E-mail 寄到收信人的服务器上了,整个过程只要几分钟。SMTP 服务器则是遵循 SMTP 协议的发送邮件服务器,用来发送或中转发出的电子邮件。
6.2 应用层概述
6.2.1 DNS
DNS(域名系统)。将人类可读的域名转换为机器可读的 IP 地址。
从域名解析出IP的流程

最简单的理解就是:
发出查找 IP 的请求,如果有域名服务器能满足这个请求,则返回对应的 IP;如果没有就根据提示跳转到其它域名服务器。
详细介绍:
假定域名为 m.xyz.com 的主机想知道另一台主机(域名为 y.abc.com )的IP地址。例如,主机 m.xyz.com 打算发送邮件给主机 y.abc.com。这时就必须知道主机 y.abc.com 的 IP 地址。具体步骤如下:
- 主机 m.xyz.com 先向其本地域名服务器 dns.xyz.com 进行递归查询。本地域名服务器采用迭代查询。它先向一个根域名服务器查询。
- 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器 dns.com 的 IP地址。
- 本地域名服务器向顶级域名服务器 dns.com 进行查询。
- 顶级域名服务器 dns.com 告诉本地域名服务器,下一次应查询的权限域名服务器 dns.abc.com 的 IP 地址。
- 本地域名服务器向权限域名服务器 dns.abc.com 进行查询。
- 权限域名服务器 dns.abc.com 告诉本地域名服务器,所查询的主机的 IP 地址。本地域名服务器最后把查询结果告诉主机 m.xyz.com。
如果本地域名服务器采用递归查询,那么本地域名服务器只需要向跟域名服务器查询一次就能得到结果,后面的查询就在其它域名服务器之间进行。
6.2.2 FTP
FTP(文件传送协议),使用 TCP 可靠的运输服务。
FTP 使用客户-服务器模式。FTP 的服务器进程有两大部分:
- 一个主进程:负责接收新的请求。
- 若干从属进程:负责处理单个请求。
服务器端:
- 主进程打开熟知端口(端口号为21),使客户进程能够连接上。
- 等待客户进程发出连接请求。
- 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
- 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。
客户端:
- 当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口 21,同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。
- 接着,服务器进程用自己传送数据的熟知端口 20 与客户进程所提供的端口号建立数据传送连接。由于FTP使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。
FTP 的工作情况如下图:
客户端有三个进程,服务器端有两个进程(注意,这里为了简单起见,没有画主进程)。当需要进行文件传输时,按照如下步骤进行:
- 客户端和服务器端建立两个并行的 TCP 连接:控制连接和数据连接。
- 从名字就可以看出,控制连接是用来进行控制的,在整个会话期间一直打开。
- 数据连接是用来传送文件的。
- 服务器端接收到请求后,就创建数据传送进程,同时用数据连接把两端的数据传送进程连接起来。
- 数据传送进程完成文件的传送。
- 文件传送完毕后,关闭数据连接,并结束相应的进程。
使用两个独立连接的好处是:让协议更加简单和更容易实现,同时在传输文件时还可以利用控制连接对文件的传输进行控制。
6.2.3 HTTP
HTTP(超文本传送协议),定义了浏览器怎么向服务器请求一个页面,以及服务器怎么把页面传送给浏览器。
访问一个网站的流程
- 每个服务器中都有一个进程在不断监听 TCP 的端口 80,以便发现是否有浏览器发起连接请求。
- 一旦监听到连接请求并建立了 TCP 链接,浏览器就向服务器发送一个页面的请求。
- 服务器收到页面请求后,就把这个页面作为响应发给浏览器。
- 最后,TCP 连接就释放了。
整个请求页面的过程所需要的时间是:页面的传输时间 + 2 倍的往返时间。
注意:
- HTTP 本身是无连接的。
- HTTP 使用了 TCP 链接来实现可靠传输。但是注意:在传输 HTTP 报文之前,是不需要先建立 HTTP 连接的。
- HTTP 是无状态的。
- 在服务器上页面没有更新的情况下,无论同一个客户访问多少次同一个服务器上的页面,服务器的每次响应都和第一次相同。
- 这种特性简化了服务器的设计,让服务器更容易支持高并发的 HTTP 请求。
- HTTP/1.1 协议使用了持续连接。
- 服务器在发送响应后仍在一段时间内保留连接,让浏览器可以继续在这个连接上发起对服务器的页面请求。
- 实现持续连接有两种工作方式:非流水线方式和流水线方式。
- 非流水线方式:客户收到前一个请求的响应后再发出下一个请求。
- 流水线方式:客户在受到响应之前,可以连续发送新的请求,服务器端也连续发出响应。
6.2.4 HTTPS
运输层有两个安全协议:安全套接字层(SSL)和运输层安全(TLS)。后面就用 SSL 代替这两个协议。
SSL 可用于任何应用层的协议,其中使用 SSL 最多的是 HTTP。
HTTP 调用了 SSL 对整个网页进行加密,原来网址上的 http 就变成了 https,这个 s 就表示使用的是提供安全服务的 HTTP协议(也就是 HTTPS )。
HTTP 使用 80 端口号;HTTPS 使用 443 端口号。
运输层使用 SSL 的示意图
在发送方,SSL 从 SSL 套接字接收应用层的数据(如 HTTP 或 IMAP 报文),对数据进行加密,然后把加密的数据送往 TCP 套接字;
在接收方,SSL 从 TCP 套接字读取数据,解密后,通过 SSL 套接字把数据交给应用层。
SSL 建立安全会话
6.2.4 邮件系统
邮件服务器:XXX@qq.com。其中 qq.com 就是邮件服务器的域名。邮件的发送和接收必须通过邮件服务器。
SMTP(简单邮件传送协议),通过发送方邮件服务器把邮件发送给接收方邮件服务器。
POP3(邮局协议第三个版本)和 IMAP(网际报文存取协议),从接收方邮件服务器读取邮件。
POP3 和 IMAP 的区别:
- 只要用户从 POP3 服务器读取了邮件,POP3 服务器就把这个邮件从服务器上删除。
- 与 POP3 相比,只要用户没有发出删除的请求,邮件就一直存在于服务器中。

6.2.5 系统调用和应用编程接口
大多数操作系统使用系统调用(system call)的机制在应用程序和操作系统之间传递控制权。系统调用和函数调用十分相似,只不过系统调用是把控制权交给了操作系统。
应用编程接口(Application Programming Interface、API)
- 系统调用接口实际上是应用进程的控制权和操作系统的控制权进行转换的一个接口。
- 换言之,应用进程要想从操作系统获得服务,就必须把控制权交给操作系统。操作系统执行完必要的操作后,再把控制权还给应用进程。
- 当某个应用进程启动系统调用时,控制权就从应用进程传递给了系统调用接口。
- 此接口再将控制权传递给计算机的操作系统,操作系统将此调用转给某个内部过程,并执行所请求的操作。
- 内部过程一旦执行完毕,控制权就又通过系统调用接口返回给应用进程。
参考
- https://www.runoob.com/w3cnote/summary-of-network.html#_label6
- https://snailclimb.gitee.io/javaguide/#/docs/network/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E7%9F%A5%E8%AF%86%E6%80%BB%E7%BB%93?id=_51-%e5%9f%ba%e6%9c%ac%e6%9c%af%e8%af%ad
- https://www.cnblogs.com/hansermukk/p/11138558.html
- 《计算机网络(第7版)》
