网络连接之协议栈
本文我们来讨论操作系统系统中的网络控制软件(协议栈)。和浏览器不同的是,协议栈的工作我们从表面上是看不见的,可能比较难以想象,因此,利用本文我们来解剖下协议栈的内部构造。
协议栈分为几个部分,分别承担不同的功能。最上层是网络应用程序,也就是浏览器、电子邮件客户端、Web 服务器、电子邮件服务器等程序,它们会将收发数据等工作委派给下层的部分来完成。当然,除了浏览器之外,其他应用程序在网络上收发数据的操作也都是类似上面这样的,也就是说,尽管不同的应用程序收发的数据内容不同,但收发数据的操作是共通的。因此,本文探讨的内容不仅适用于浏览器,也适用于各种应用程序。
应用程序的下面是 Socket 库,其中包括解析器,解析器用来向 DNS 服务器发出查询。
再下面就是操作系统内部了,其中包括协议栈。协议栈的上半部分有两块,分别是负责用 TCP 协议收发数据的部分和负责用 UDP 协议收发数据的部分,它们会接受应用程序的委托执行收发数据的操作。像浏览器、邮件等一般的应用程序都是使用 TCP 收发数据的,而像 DNS 查询等收发较短的控制数据的时候使用 UDP。
浏览器、邮件等一般应用程序收发数据时用 TCP;DNS 查询等收发较短的控制数据时用 UDP。
下面一半是用 IP 协议控制网络包收发操作的部分。在互联网上传送数据时,数据会被切分成一个一个的网络包,而将网络包发送给通信对象的操作就是由 IP 来负责的。此外,IP 中还包括 ICMP 协议和 ARP 协议。ICMP 用于告知网络包传送过程中产生的错误以及各种控制消息,ARP 用于根据 IP 地址查询相应的以太网 MAC 地址。
评论