TCP/IP协议族(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)
层次化结构
路由器只涉及 3 层(网络层、数据链路层、物理层)。
虽然一个路由器总是拥有一个网络层,但是它涉及 n 个数据链路层和物理层的组合,其中 n 为路由器连接的链路的数目。其主要原因是每一个链路可以使用它自己的数据链路或物理层。
例如在图 1-13中,路由器拥有 3 条链接,但是从源 A 发送到目的地 B 的消息涉及两条链接。每一条链接可以使用不同的链路层和物理层协议;路由器需要从基于一对协议的链路 1 接收分组并将它投递到基于另一对协议的链路 2。
在一条链路上的链路层交换机只涉及两个层次:数据链路层和物理层。
TCP/IP协议族中的层次
区别:
应用层、传输层和网络层的任务是端到端的(end-to-end)
数据链路层和物理层的任务是点到点的(hop-to-hop)
高三层的任务范围是互联网,低两层的任务范围是链路。
高三层,数据单元(分组)不应该被任何路由器或链路层交换机改变。
低两层,主机创建的分组仅仅被路由器改变,链路层交换机不改变它们。
TCP/IP各层描述
应用层
两个应用层之间的逻辑连接是端到端的
通信需要通过所有层次完成。
应用层的通信处于两个进程(该层正在运行的两个程序)之间。
协议 | 作用 |
超级文本传输协议(Hypertext Transfer Protocol,HTTP) | 访问万维网(World Wide Web,WWW)的载体 |
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP) | 电子邮件(e-mail)服务的主要协议 |
文件传输协议(File Transfer Protocol,FTP) | 将文件从一台主机传输到另一台主机 |
远程登录(Terminal Network,TELNET)和安全外壳(Secure Shell,SSH) | 访问远端的站点 |
简单网络管理协议(Simple Network Management Protocol,SNMP) | 对 Internet全局或局部进行管理 |
域名系统(Domain Name System,DNS) | 使其他的协议能够查询一台计算机的网络层地址 |
因特网组管理协议(Internet Group Management Protocol,IGMP) | 管理一个组的成员资格 |
传输层
传输层的逻辑连接也是端到端的
传输层负责向应用层提供服务:从运行于应用层的程序得到信息,并将它投递到目的主机相应的应用程序。
传输控制协议(Transmission Control Protocol,TCP)是一个面向连接的协议,它在传输数据之前,首先在两台主机的传输层之间建立一条逻辑连接。TCP 协议在两个 TCP 层之间创建一个管道,以便传输字节流。
TCP 协议提供流量控制(匹配源主机的发送数据速率与目的主机的接收数据速率,以防止目的主机溢出)、差错控制(保证数据段无差错到达目的地和重新发送受损的数据段)、拥塞控制(减少由于网络拥塞造成的数据段丢失)。
UDP 是一种无连接协议,它传输用户数据报之前不需要创建逻辑连接。在 UDP 中,每个用户数据报是一个独立的实体,它和前一个或后一个用户数据报没有关系(无连接就是这个意思)。
网络层
网络层的通信是主机到主机的。
路径上的路由器负责为每个分组选择最好的路径。
我们自己为什么需要网络层
原因之一是在不同的层次之间分割不同的任务。
原因之二是路由器不需要应用层和传输层。分割任务允许我们在路由器上加载较少的协议。
Internet 的网络层包括其主要协议:因特网协议(Internet Protocol,IP),因特网协议定义了在网络层称为数据报的分组格式。IP 同时定义了在这一层使用的地址格式和结构。与此同时,IP 负责从源主机把一个分组路由到目的主机。这种功能主要是通过每个路由器都将数据报转发到路径上的下一个路由器而实现的。
IP 是一个无连接的协议,不提供流量控制、差错控制和拥塞控制服务。
因特网控制报文协议(Internet Control Message Protocol,ICMP) | 帮助 IP 报告遇到的问题 |
因特网组管理协议(Internet Group Management Protocol,IGMP) | 协助 IP 进行多任务处理 |
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP) | 帮助 IP 获取一台主机的网络层地址 |
地址解析协议(Address Resolution Protocol,ARP) | 帮助 IP 寻找一台主机或一台路由器的链路层地址 |
数据链路层
我们已经知道一个互联网是多个链路(LAN 和 WAN)通过路由器连接而构成的。从主机传输数据报到目的地可能存在多个交叠的链路集。
路由器负责选择最好的链路进行传输。数据链路层都要负责通过链路传输分组。
数据链路层接管一个数据报并将它封装在一个称为帧(frame)的分组中。
物理层
我们可以说物理层负责携带一个帧中单独的比特穿过链路。
尽管物理层位于 TCP/IP 协议簇的最底层,但是由于在物理层之下存在另外一个隐藏的传输介质层,因此两个设备物理层之间的通信仍然是逻辑通信。
两个设备通过一种传输介质(电缆或大气)连接。我们需要知道传输介质不携带比特;它携带电或光信号。所以,从数据链路层接收的一个帧的比特需要被变换,然后通过传输介质传输。但是我们可以认为两个设备物理层之间的逻辑单元是一个比特(bit)
封装和解封装
链路层交换机中没有封装/解封装发生
源主机的封装
在源主机端,我们只进行封装。
1.在应用层,交换的数据称为消息(message)。
2.传输层把这个消息的基础上增加传输层头部,其结果为一个传输层分组。该分组在 TCP 中称为段(segment),在 UDP 中称为用户数据报(user datagram)。
3.网络层在传输层分组上添加自己的头部。其结果为一个称为数据报(datagram)的网络层分组。
4.数据链路层在网络层分组上自己的头部。该头部包含主机或下一跳步(路由器)的链路层地址。其结果为一个称为帧(frame)的链路层分组。
路由器的解封装与封装
由于路由器连接两个或多个链路,因此在路由器中我们既需要进行解封装也需要进行封装。
1.在比特集被投递到数据链路层后,这一层从帧中解封装出数据报并将它投递到网络层。
2.网络层只检查数据报头部的源地址和目的地址,查阅它的转发表以寻找该数据报将被投递到的下一跳步。除非数据报太大以至于不能通过下一链路时需要对其进行分片,数据报的内容不应该被网络层改变。然后,数据报被传递到下一链路的数据链路层。
3.下一链路的数据链路层将数据报封装成一个帧,将其传递到物理层进行传输。
目的主机的解封装
主机中的解封装包含差错检查。
地址
在 Internet 中,与协议分层相关的另一个概念是地址。正像以前讨论的那样,在这种模型中一对层次之间存在逻辑通信。包含两方的任意通信都需要两个地址:源地址和目的地址。尽管看起来我们似乎需要 5 对地址(每层一对),但是由于物理层不需要地址,我们通常只需要 4 对;物理层的数据交换单元是一个比特,它绝对没有地址。
多路复用与多路分解
由于 TCP/IP 协议簇在一些层次使用多个协议,因此我们在源端需要进行多路复用(multiplexing),在目的端需要进行多路分解(demultiplexing)。在这种情况下,
多路复用的意思是一个协议能够封装来自多个上层协议的分组(一次一个);
多路分解的意思是一个协议能够进行解封装,并且将分组投递到多个上层协议(一次一个)。