本部分自顶向下介绍因特网协议栈分层的具体情况,以及各协议的大概特征。
应用层(Application Layer)
应用层负责对软件提供接口以使程序能使用网络服务。术语“应用层”并不是指运行在网络上的某个特别应用程序 ,应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。
DNS
域名系统(DNS)是万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记复杂的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
主机名到IP地址的映射:
- 静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
- 动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
域名结构:
www | huangyufeng | com
三级域名 | 二级域名 | 顶级域名DNS服务器分类:
- 根DNS服务器: 在因特网中有13个根DNS服务器(A~M),大部分位于北美;
- 顶级域(TLD)DNS服务器: 负责顶级域名和国家顶级域名。如com、org、cn、edu等;
- 权威服务器: 负责提供公共可访问的DNS记录,这些记录将主机名映射为IP地址。
域名映射查询:
- 递归查询: 主机向服务器发送查询请求,若该服务器没有相关记录,则该服务器作为新的主机向其他主机询问,知道查询到结果为止。主机向本地域名服务器的查询一般都是采用递归查询。
- 迭代查询: 主机向服务器发送查询请求,若该服务器没有相关记录,则返回信息告诉主机下一步该向哪个服务器查询。本地域名服务器向根域名服务器的查询的迭代查询。
HTTP
超文本传输协议(HyperText Transfer Protocol | HTTP)是互联网上应用最为广泛的一种网络协议。HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。
详见:《计算机网络之HTTP》
FTP
文件传输协议(File Transfer Protocol | FTP),中文简称为“文传协议”。用于Internet上的控制文件的双向传输。
FTP工作流程:
- 客户端通过TCP三次握手与服务器的21端口建立控制连接;
- 服务器对客户端进行身份验证,授予客户端相应的操作权限;
- 客户端请求数据传输建立数据连接;
- 数据传输完成后断开数据连接;
- 退出FTP服务器断开控制连接。
FTP连接:
- 控制连接: 用于传输控制信息,其在整个会话期间保持连接;
- 数据连接: 用于传输数据,在客户端发起数据传输请求后建立数据连接,在结束传输后断开连接,不必一直存在。
SMTP
简单邮件传输协议(Simple Mail Transfer Protocol | SMTP)是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
- SMTP工作流程:
- 建立TCP连接;
- 客户端向服务器发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令;
- 服务器端以OK作为响应,表示准备接收;
- 客户端发送RCPT命令;
- 服务器端表示是否愿意为收件人接收邮件;
- 协商结束,发送邮件,用命令DATA发送输入内容;
- 结束此次发送,用QUIT命令退出。
DHCP
动态主机配置协议(Dynamic Host Configuration Protocol | DHCP)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。
运输层(Transport Layer)
TCP
传输控制协议(Transmission Control Protocol | TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,提供全双工服务由IETF的RFC 793定义。
连接的建立:
- 客户端向服务器发起建立连接申请;
- 服务器如果同意建立连接,则返回客户端建立的许可信息;
客户端接收到响应信息后,发送同意请求到服务器,建立连接。
连接断开:
- 客户端停止发送数据并发送断开连接请求给服务器;
- 服务器接受请求后向客户端发送确认信息,不再接收数据,进入半关闭状态;
- 服务器发送完所有数据之后,并向客户端发送关闭连接的确认信息;
- 客户端收到关闭连接的确认信息后,发送确定信息给服务器,关闭连接。
TCP服务特点:
- 拥塞控制: 慢启动,快速重传和快速恢复;
- 全双工;
- 面向连接。
UDP
用户数据报协议(User Datagram Protocol | UDP)在网络中与TCP协议一样用于处理数据包,是一种无连接的协议。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。只有在不要求数据分组顺序到达,且丢包影响较低的情况下会使用UDP。比如即时通信技术。
网络层(Network Layer)
IP
网际协议(Internet Protocol | IP)是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。
- IP地址:
- 定义: IP地址就是给每个连接在互联网上的主机分配唯一的一个32位地址;
- 基本格式: 网络地址 + 主机地址或(网络地址 + 子网地址 + 主机地址);
- 分类: 私有,公有;
- 与MAC地址的区别: IP地址本质上是终点地址,它在跳过路由器(hop)的时候不会改变,而MAC地址则是下一跳的地址,每跳过一次路由器都会改变。
IP数据包:
- 分片: 由于链路层具有最大传送单元(MTU)这样一个特性,限定了传送数据的大小。因此,在网络层将数据分片成可以传输的大小,在数据到达目的地的网络层后再由IP重组;
- 重组: 建议在目的地主机重组,虽然也可以在网络中重组以减小路由器负担;
- 生存时间: IP数据包格式中设有一个生存时间字段,用来设置该数据包在联网中允许存在的时间,以秒为单位。如果其值为0,就把它从互联网上删除,并向源站点发回一个出错消息。
其他:
详见《计算机网络之IP》
路由器工作原理
1. 路由器接收到数据包,提取目标IP地址及子网掩码计算目标网络地址;
2. 根据目标网络地址查找路由表,如果找到目标网络地址就按照相应的出口发送到下一个路由器;
3. 如果没有找到,就看一下有没有默认路由,如果有就按照默认路由的出口发送给下一个路由器;
4. 如果没有找到就给源IP发送一个出错ICMP数据包表明没法传递该数据包;
5. 如果是直连路由就按照第二层MAC地址发送给目标站点。
数据链路层(Data Link Layer)
MAC
媒体访问控制(Medium Access Control | MAC)协议规定了帧在链路上的传输规则。
可靠传输
链路层提供确认和重传技术,并在帧中包含差错检测比特,让接收结点进行差错检查并能准确定位差错出现的位置。
物理层(Physical Layer)
包括各种硬件网络设备技术。