引言
- 网上有很多博客介绍过计算机网络五层结构,但专门汇总五层结构功能的博文非常少;
- 本文从纵向的角度,清晰概述计算机网络五层结构的功能和特点;
- 本文总结了计算机网络五层结构的协议名和专用术语,并对一些结构性问题加以解释;
- 本文没有介绍五层结构的实现细节;
五层结构的作用汇总
层级名称 |
主要作用和功能 |
物理层 |
发送和接收比特流; 负责将比特流调制到载波上面(调幅、调频、调相); 可以用信道复用等技术提升发送速率; |
数据链路层 |
负责相邻设备间通信,这两个设备间没有交换节点,具体表现为点对点通信(PPP协议)和广播通信(CSMA/CD协议); 用MAC地址识别参与通信的两个节点(源节点、目的节点),MAC地址是本层及以下层专用; 上层网络层根据目的IP确定下一跳IP地址,数据链路层(交换机)根据下一跳IP地址就能确定下一跳的MAC地址,并将网络层数据报再次封装,加上目的MAC地址,交由物理层传送; 负责帧的差错检测,丢弃错误的帧(只检错不纠错),错误可能是帧丢失、帧重复、帧失序; |
网络层 |
负责不相邻的两个节点间的通信,比如我的电脑和网页服务器之间的通信; 用IP地址识别源地址、目的地址,IP地址是本层及以上层专用; 能够确定转发路线,使得效率最高; |
运输层 |
识别并将数据报正确交付相应的应用程序,识别数据报属于哪个应用程序的方法为看端口; TCP可靠传输,UDP不可靠传输; |
应用层 |
使用得到的报文段,为用户提供各种服务(浏览器、邮件、远程通信); 向上面向用户(域名给用户看),向下面向运输层和网络层(域名解析给他们看); |
五层结构传输单元名称
层级名称 |
传输单元名称 |
应用层 |
报文 |
运输层 |
TCP:报文段; UDP:用户数据报; |
网络层 |
分组或IP数据报(简称数据报) |
数据链路层 |
帧 |
物理层 |
比特 |
各层协议和专用术语汇总
层级名称 |
传输单元名称 |
应用层 |
网际组管理协议IGMP:使得连接在本局域网上的多播路由器知道本局域网上是否有主机(指主机上的进程)参加或退出某个多播组; DNS:域名系统; 简单文件传送协议TFTP; 文件传送协议FTP; NFS:网络文件系统; 动态主机配置协议DHCP:用于自动分配IP地址; 简单网络管理协议SNMP; 简单邮件传送协议SMTP:用于发送邮件; 邮件读取协议POP和IMAP:用于读取邮件; 远程终端协议TELNET; 超文本传送协议HTTP; socket:IP和端口统称套接字,java语言中称为java socket编程; 安全外壳SSH(Secure Shell):不是一种协议,是运用运输层SSL协议构建的一个类似telnet的应用,SSH = TELNET + SSL,和web开发框架中的SSH框架没有任何关系(SSH=Struts+Spring+Hibernate); |
运输层 |
传输控制协议TCP:面向连接; 用户数据报协议UDP:无连接; 安全套接层SSL:是一种在运输层对网络数据进行加密的协议; |
网络层 |
地址解析协议ARP:已知一台机器的IP地址,需要找出其相对应的硬件MAC地址; 网际控制报文协议ICMP:分为ICMP差错报文和ICMP询问报文,用于主机和路由器报告差错和异常情况,ping命令是在应用层直接使用网络层协议的例子; 内部网关协议IGP:一个自治系统内部使用的路由协议,包括RIP和OSPF协议; 外部网关协议EGP:自治系统间路由协议,包括BGP协议; VPN:虚拟专用网技术,用到了网络地址转换NAT技术; |
数据链路层 |
PPP:点对点信道所使用的协议; CSMA/CD:广播信道使用的协议; MAC地址; |
物理层 |
传输介质:双绞线、同轴电缆; 信道复用技术:频分复用、时分复用、码分复用; 宽带接入技术:ADSL(非对称用户数字线); |
各层典型设备
层级名称 |
设备名称 |
应用层 |
网关:连接两个或多个使用不同协议的网络,充当“协议转换器”,是两个局域网之间的通道; |
运输层 |
暂无 |
网络层 |
路由器:连接不同网络的设备,自动选择设定路由,寻找最佳路径,在某些情况下,路由器也被称做网关; |
数据链路层 |
网卡(网络适配器):当接收帧错误时就丢弃,正确时就交付网络层,内含MAC地址; 交换机:相当于多个网桥,将好多计算机连接成一个局域网,负责局域网内部的数据交换,相当于扩展的网桥,允许在还没把数据帧接受完全的情况下转发帧; 网桥/桥接器:把一个局域网隔离成许多网段,维护转发表,对收到的帧进行转发、过滤或丢弃(完全接收到一帧后才转发); |
物理层 |
集线器/转发器:简单转发比特,不维护任何表; |
几个结构性问题的解释
- 为何不能只有MAC地址,IP地址没有行不行?
- 这和”能不能只有数据链路层,没有网络层”的问题一样;
- 他们处理的是不同层面的事务,前者专注于相邻节点传输、后者则专注于不相邻节点传输;
- 这是”网络”这个事务由小到大、量变产生质变的必然选择;
- 为何不将TCP可靠传输的任务交由网络层负责?
- 其实这是”可靠”怎么理解的问题,如果网络层可靠了,但是在传输层不可靠,数据也无法正确及时的送达应用程序手中;
- 如果网络层和运输层都保证可靠,协议未免太过复杂,效率降低;
- 所以只在运输层保证可靠,是在效率、可靠性之间权衡做出的最佳选择;
我简单做了一下标记