文章目录
- TCP/IP模型
- 应用层(Application Layer)
- 传输层(Transport Layer)
- 网络层(Internet Layer)
- 网络接口层(Network Interface Layer)
TCP/IP模型
经典的TCP/IP参考模型从上至下分为4个层次:应用层、传输层、网络层和网络接口层。与OSI模型不同的是在TCP/IP参考模型中,根据实际情况把OSI参考模型的会话层和表示层合并到应用层中。同时,将数据链路层和物理层合并为网络接口层。
为什么要有 TCP/IP 网络模型?
对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议。
这个网络协议是分层的,每一层都有各自的作用和职责,接下来就根据「 TCP/IP 网络模型」分别对每一层进行介绍。
应用层(Application Layer)
应用层(Application Layer)是最接近用户的层,直接为用户和应用程序提供服务。那么,当两个不同设备的应用需要通信的时候,应用就把应用数据传给下一层,也就是传输层。
TCP/IP模型中把会话层和表示层取消,并将其功能合并到应用层。实现了许多基于TCP和UDP的应用层协议。例如基于TCP协议的文件传输协议(File Transfer Protocol,FTP)、Telnet
协议、超文本传输协议(HyperText Transfer Protocol,HTTP)等,基于UDP协议有简化的FTP协议、TFTP、网络管理协议SNMP、域名服务DNS、网络文件共享NFS等。
应用层是不用去关心数据是如何传输的,就类似于,我们寄快递的时候,只需要把包裹交给快递员,由他负责运输快递,我们不需要关心快递是如何被运输的。
而且应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。
传输层(Transport Layer)
传输层负责在通信双方之间提供可靠的数据传输。它提供了源主机和目标主机上的对等层之间可以进行会话的机制。传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)是这一层的主要协议。应用层的数据包会传给传输层,传输层是为应用层提供网络支持的。
- TCP协议是一个面向连接的、可靠的协议。它利用IP层的机制在不可靠连接的基础上实现可靠的连接,通过发送窗口控制、超市重发、分包等方法,将一台主机发出的字节流发往互联网上的其他主机。
- UDP协议是一个不可靠的、无连接协议,主要适用于不怕数据丢失、不需要对报文进行排序、流量控制的场景。
当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。
比如 80 端口通常是 Web 服务器用的,22 端口通常是远程登录服务器用的。而对于浏览器(客户端)中的每个标签栏都是一个独立的进程,操作系统会为这些进程分配临时的端口号。
由于传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用。
网络层(Internet Layer)
网络层是TCP/IP协议栈的核心。它将数据包进行分组并发往目的主机或网络。为了尽快地发送分组,一个数据包的分组可能要经过不同的路径进行传递。这造成了分组之间到达目的网络或主机的顺序不是原来发送分组的顺序,需要在本层对分组进行排序。网络层定义了数据包的分组格式和协议, IP 协议(Internet Protocol),因此网络层也可以称为IP层。它可以进行路由,网际互连和拥塞控制等。
在实际的网络环境中,数据传输涉及复杂的网络路径和节点。设备之间的数据传输需要在不同的路径和节点之间进行选择,而传输层的设计理念是追求简单、高效和专注。因此,不希望传输层协议处理过多的任务,而是专注于应用间的数据传输。传输层的主要职责是充当应用之间的数据传输媒介,实现应用到应用的通信,而实际的数据传输功能和路径选择则由网络层来处理。
这样,传输层可以更好地为应用服务,而网络层则负责路由和数据包的传输。
网络层负责将数据从一个设备传输到另一个设备,世界上那么多设备,又该如何找到对方呢?因此,网络层需要有区分设备的编号。
我们一般用 IP 地址给设备进行编号,对于 IPv4 协议, IP 地址共 32 位,分成了四段(比如,192.168.100.1),每段是 8 位。
网络接口层(Network Interface Layer)
包括物理层和数据链路层。在TCP/IP这一层负责物理设备之间的数据传输。它包括硬件接口和低级协议,确保数据能够在物理介质上进行传输,如以太网、Wi-Fi等。
生成了 IP 头部之后,接下来要交给网络接口层(Link Layer)在 IP 头部的前面加上 MAC 头部,并封装成数据帧(Data frame)发送到网络上。
IP地址和MAC地址的区别:
- IP地址: 在网络通信中,IP地址标识数据包的目的地。通过IP地址,我们可以确定要将数据包发送到哪里。然而,IP地址在局域网内并不能直接用于数据包的传输。
- MAC地址: 在以太网环境中,数据包的传输依赖于MAC地址。MAC地址是物理网络接口的硬件地址,用于在局域网中唯一标识设备。
IP 头部中的接收方 IP 地址表示网络包的目的地,通过这个地址我们就可以判断要将包发到哪里,但在以太网的世界中,这个思路是行不通的。
什么是以太网呢?以太网是一种「局域网」技术,用于将附近的设备连接起来,实现它们之间的通信。以太网设备包括电脑上的以太网接口、Wi-Fi接口、以太网交换机和路由器上的接口等。网线也是以太网的一部分。
在以太网中,网络包的目的地判断与IP的方式不同。以太网使用MAC头部来标识接收方和发送方的MAC地址。为了将网络包准确发送到目标设备,需要使用MAC地址,而不是IP地址。
网络接口层的职责:网络接口层为网络层提供链路级别的传输服务,负责在以太网、Wi-Fi等底层网络上发送原始数据包。该层次的操作主要在网卡(网络接口卡)上进行,使用MAC地址来标识和定位网络中的设备。
网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。
以下关于网络协议分层说法不正确的是()
A.表示层一项重要的工作就是网络标准数据格式的转换
B.会话层负责管理传输层以下的分层
C.数据链路层是地址管理和路由选择
D.传输层管理两个节点之间的数据传输
C :数据链路层完成帧同步,差错控制,流量管理,链路管理
OSI参考模型中,()提供了差错报告,网络拓扑结构的功能
A.网络层 B.传输层 C.数据链路层 D.物理层
C:传输层负责两端之间的数据传输;网络层负责地址管理与路由选择;数据链路层负责相邻设备之间数据帧传输,完成帧同步,差错控制,流量管理,链路管理;物理层负责物理光电信号传输。
传统交换机和路由器分别运行在OSI参考模型的()
A.数据链路层和网络层 B.网络层和传输层
C.传输层和数据链路层 D.物理层和网络层
交换机在数据链路层,路由器在网络层
OSI的哪一层通常同时使用报头和报尾进行封装()
A.网络 B.传输层 C.数据链路层 D.表示层
在OSI模型中,数据链路层通常同时使用报头(Header)和报尾(Footer)进行封装。
数据链路层负责在相邻节点之间提供可靠的数据传输。在这一层,数据被封装成帧(Frame),帧的报头包含了控制信息,如源和目的MAC地址、帧类型等,而报尾可能包含错误检测信息,如循环冗余检测(CRC)码。这些信息帮助接收方正确地接收并处理数据帧。因此,正确答案是数据链路层。