字节一面:“为什么网络要分层?每一层的职责、包含哪些协议?”
扫描二维码
随时随地手机看文章
这是一道我秋招面试字节遇到的真题。
01 为什么网络要分层?
说到分层,我们先从我们平时使用框架开发一个后台程序来说,我们往往会按照每一层做不同的事情的原则将系统分为 三层(复杂的系统分层可能会更多):
02 OSI七层模型
OSI七层模型的大体结构以及每一层提供的功能如下。「每一层都专注做一件事情,并且每一层都需要使用下一层提供的功能比如传输层需要使用网络层提供的路有和寻址功能,这样传输层才知道把数据传输到哪里去。」
03 TCP/IP 4层模型
这是目前被广泛采用的一种模型,我们可以将 TCP / IP 模型看作是 OSI 7层模型的精简版本,由以下4层组成:
04 TCP/IP 4层模型网络协议概览
「应用层协议」 :
-
HTTP 协议(超文本传输协议,网页浏览常用的协议)
-
DHCP 协议(动态主机配置)
-
DNS 系统原理(域名系统)
-
FTP 协议(文件传输协议)
-
Telnet协议(远程登陆协议)
-
电子邮件协议等(SMTP、POP3、IMAP)
-
......
-
TCP 协议
-
报文段结构
-
可靠数据传输
-
流量控制
-
拥塞控制
-
UDP 协议
-
报文段结构
-
RDT(可靠数据传输协议)
-
IP 协议(TCP/IP 协议的基础,分为 IPv4 和 IPv6)
-
ARP 协议(地址解析协议,用于解析 IP 地址和 MAC 地址之间的映射)
-
ICMP 协议(控制报文协议,用于发送控制消息)
-
NAT 协议(网络地址转换协议)
-
RIP 协议、OSPF 协议、BGP 协议(路由选择协议)
-
......
-
差错检测技术
-
多路访问协议(信道复用技术)
-
CSMA/CD 协议
-
MAC 协议
-
以太网技术
-
......
应用层(Application layer)
应用层的任务是通过应用进程间的交互来完成特定网络应用,我们把应用层交互的数据单元称为报文。「应用层协议定义的是应用进程(进程:主机中正在运行的程序,比如微信、QQ)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。」 在互联网中应用层协议很多,如域名系统DNS,支持Web应用的HTTP协议,支持电子邮件的SMTP协议等等。
HTTP:超文本传输协议
「超文本传输协议(HTTP,HyperText Transfer Protocol)主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。」
SMTP:简单邮件传输(发送)协议
「简单邮件传输协议(SMTP,Simple Mail Transfer Protocol)的缩写,基于 TCP 协议,用来发送电子邮件。」
POP3/IMAP:邮件接收的协议
这两个协议不多做阐述,只需要了解 「POP3 和 IMAP 两者都是负责邮件接收的协议」即可。另外,需要注意不要将这两者和 SMTP 协议搞混淆了。「SMTP 协议只负责邮件的发送,真正负责接收的协议是POP3/IMAP。」
FTP:文件传输协议
「文件传输协议 FTP(File Transfer Protocol),提供文件传输服务,基于 TCP 实现可靠的传输。使用 FTP 传输文件的好处是可以屏蔽操作系统和文件存储方式。」
DNS:域名系统
「域名系统(DNS,Domain Name System)将人类可读的域名 (例如,www.baidu.com) 转换为机器可读的 IP 地址 (例如,220.181.38.148)。」 我们可以将其理解为专为互联网设计的电话薄。
Telnet:远程登陆协议
远程登陆协议,通过一个终端登陆到其他服务器,建立在可靠的传输协议 TCP 之上。
SSH:安全的网络传输协议
SSH( Secure Shell)是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 建立在可靠的传输协议 TCP 之上。
传输层(Transport layer)
「传输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务」。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。
网络接口层
我们可以把网络接口层看作是数据链路层和物理层的合体。