面试突击67:说一下 TCP/IP 协议?以及每层的作用?
TCP/IP 包含四层模型,从上层往下层分别是:应用层、传输层、网络层、数据链路层。有些资料也会说 TCP/IP 是五层模型,所谓的五层模型指的是在数据链路层下面还有一个物理层,而作为软件工程师一般不需要关注物理层,所以通常我们说 TCP/IP 四层模型更多一些。
1.应用层
应用层的作用是负责应用程序间的数据通讯的。不同的网络应用需要不同的应用层协议,比如电子邮件传输 SMTP 协议、文件传输 FTP 协议、网络远程访问 Telnet 协议等等。
常见协议
应用层的常见协议有以下两个:
- DNS 域名解析协议(Domain Name System,域名系统),DNS 是将域名和 IP 做一个映射,因为在程序间通讯依靠的是 IP,但 IP 地址不方便记忆,而域名方便记忆,所以将二者作为一个 key-value 映射在一起,这样知道了域名置换就能找对与之相对应的 IP 了,这样既能方便用户记忆,同时又能满足程序间的数据通讯。
- HTTP 协议(HyperText Transfer Protocol,超文本传输协议),互联网上应用最为广泛的一种网络协议。所有的 WWW(万维网) 文件都必须遵守这个标准。
2.传输层
传输层的主要作用是负责两台主机间的数据传输的。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
注意:应用层和传输层描述的主体对象是不同的,应用层描述的主体是“应用程序间”,而传输层描述的主体是“两台主机间”。其中,一个主机可以包含多个应用程序,所以二者是不同的。
常见协议
传输层的常见协议有以下两个:
- TCP 协议(Transmission Control Protocol,传输控制协议):提供了稳定的、需要连接的、面向字节流的协议。
- UDP 协议(User Datagram Protocol,用户数据协议):提供了无连接的、不稳定的、面向数据报的协议。
3.网络层
网络层的作用是负责网络上的地址管理和路由选择的。在数据通讯时,可以选择很多条路径(抵达目的地的),比如从西安到北京,可以选择先从西安 -> 太原 -> 北京,也可以选择从西安 -> 郑州 -> 石家庄 -> 北京,还可以选择从西安 -> 延安 -> 呼和浩特 -> 张家口 -> 北京,究竟选择那一条路呢?这就是网络层负责的。
4.数据链路层
数据链路层的作用是负责设备之间的数据帧的传送和识别的。数据在传输时需要经过多个设备进行数据传输,而数据链路层就是负责相邻设备间的数据传输和识别的。
数据链路层可以完全消除网络层和物理层之间的不同,将数据在链路层进行有效的识别和传输。
5.物理层(可选)
物理层的作用是负责将数据转换成信号,再将信号转换为数据的。转换方法因通讯媒体不同而不同,所以没有特定的协议。
总结
TCP/IP 包含了五层(或四层)模型,从上层往下层分别是:
- 应用层:负责应用程序间的数据通讯。
- 传输层:负责两台主机之间的数据传输。
- 网络层:负责网络地址的管理和路由选择。
- 数据链路层:负责设备之间的数据帧的传送和识别。
- 物理层(可选):负责数据和信号间的转换。