[计算机网络八股] TCP/IP四层模型

TCP/IP四层模型

在这里插入图片描述

TCP/IP四层模型是自底而上的层次结构,包括:

物理链路层(或称为网络接口层)

概述
  • 主要功能:提供数据在网络媒介上传输的手段,例如网卡和调制解调器。
  • 关联设备:网线、网卡等。

生成了 IP 头部之后,接下来要交给网络接口层Link Layer)在 IP 头部的前面加上 MAC 头部,并封装成数据帧(Data frame)发送到网络上。MAC 头部是以太网使用的头部,它包含了接收方和发送方的 MAC 地址等信息,我们可以通过 ARP 协议获取对方的 MAC 地址。

那么,如何将网络层中的32位IP地址解析为48位的MAC地址呢?

ARP(地址解析协议)总体流程
  1. 发送ARP请求
    • 当主机A需要知道与某IP地址(如IP地址为B)对应的MAC地址时,首先会检查本地的ARP缓存表。
    • 如果在ARP缓存表中没有找到与IP地址B对应的MAC地址,主机A会发送一个ARP请求广播报文。这个广播报文中包含发送方(主机A)的MAC地址、IP地址以及需要查询的目标设备的IP地址B。
    • 所有局域网内的主机都会接收到这个ARP请求广播报文。
  2. 接收ARP请求并响应
    • 局域网内的每台主机都会检查ARP请求广播报文中的目标IP地址是否与自己的IP地址匹配。
    • 如果某台主机(如主机B)发现请求的IP地址与自己的IP地址匹配,它将回复一个ARP响应报文给主机A。这个ARP响应报文包含了主机B的MAC地址。
  3. 接收ARP响应并更新缓存
    • 主机A接收到主机B的ARP响应报文后,会将主机B的IP地址和MAC地址的映射关系存储到自己的ARP缓存表中。
    • 之后,主机A就可以使用主机B的MAC地址来封装数据包,并发送到主机B。
  4. ARP缓存的作用
    • ARP缓存表是一个存储IP地址和对应MAC地址的表,其中存储了最近通信过的设备的地址信息。
    • 当主机需要再次与某个已知IP地址的设备通信时,会首先检查ARP缓存表,如果找到对应的MAC地址,则直接使用,避免再次发送ARP请求。
  5. 安全性考虑
    • 由于ARP协议是基于广播的,因此存在安全风险,如ARP欺骗(ARP spoofing)或ARP泛洪(ARP flooding)。
    • 攻击者可能通过发送伪造的ARP应答报文,欺骗主机A使其将数据包发送到错误的主机或无法到达预期的主机。
    • 为了应对这些攻击,网络管理员可以采取一系列的安全措施,如启用ARP检查、使用静态ARP映射或部署ARP防护设备等。

通过以上步骤,ARP协议实现了将网络层(IP层)的32位IP地址解析为数据链路层(MAC层)的48位MAC地址的功能,确保了数据包能够正确地从一台主机发送到另一台主机。

网络层

概述
  • 主要功能:提供数据包传输服务和寻址,例如IP和ICMP协议。
  • 关联设备:路由器。
  • 数据封装:将来自数据链路层的数据进行IP地址的封装与解封装,形成数据包(packet)。

网络层负责将来自传输层(如TCP或UDP)的数据段(segments)封装成数据包(packets),并添加必要的网络层头部信息,包括源IP地址和目标IP地址。

数据包在网络中通过路由器进行转发,路由器基于IP地址和路由表来确定最佳的传输路径。

到达目标网络后,目标设备的网络层会去除数据包的网络层头部,并将数据段传递给传输层。

传输层

概述
  • 主要功能:提供可靠和不可靠的数据传输服务,例如TCP和UDP。

  • 数据封装:将来自网络层的数据进行分段传输,并在目的地址进行重组,形成数据段(segment)。

  • 关联协议:TCP(传输控制协议,传输效率低但可靠性强)、UDP(用户数据报协议,传输效率高但可靠性相对较弱)。

    TCP与UDP的区别也是一个常考的点。需要详细说明。

TCP、UDP详解

TCP 的全称叫传输控制协议(Transmission Control Protocol),大部分应用使用的正是 TCP 传输层协议,比如 HTTP 应用层协议。TCP 相比 UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方。

UDP 相对来说就很简单,简单到只负责发送数据包,不保证数据包是否能抵达对方,但它实时性相对更好,传输效率也高。当然,UDP 也可以实现可靠传输,把 TCP 的特性在应用层上实现就可以,不过要实现一个商用的可靠 UDP 传输协议,也不是一件简单的事情。

​ -----小林coding

小林coding这里讲得很好,但是博主还有要补充的点。“TCP 相比 UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方。”,那么,流量控制、超时重传、拥塞控制都是什么?

**流量控制:**流量控制是为了防止发送方发送速率过快,导致接收方来不及接收,从而造成数据丢失。TCP使用滑动窗口机制来实现流量控制。发送方维护一个发送窗口,只有落在发送窗口内的帧才允许被发送,接收方也只有落在接收窗口内的帧才允许接收。这样通过调整发送方窗口的大小可以实现流量控制。

**超时重传:**当TCP发送一个报文段后,会启动一个定时器等待对方的确认。如果定时器超时还没有收到确认,那么就会重传这个报文段。TCP协议对于每个报文段都有一个重传计时器,当TCP发送报文段时会启动这个计时器,如果在计时器超时前没有收到对方的确认,就会重传报文段。

**拥塞控制:**拥塞控制是为了防止过多的数据包注入网络,这样可以使网络中的路由器或链路不致过载。TCP通过四种算法:慢开始、拥塞避免、快重传和快恢复来实现拥塞控制。

  • 慢开始是TCP拥塞控制中的一个算法,用于在连接建立初期探测网络的可用带宽。在连接建立后,TCP会先发送一个较小的报文段(通常是一个MSS,即最大报文段长度),并等待对方的确认。每当收到一个确认,TCP就会将拥塞窗口的大小加倍,并发送更多的报文段。这种指数级的增长会持续到达到某个预设的阈值(如ssthresh)或发生超时为止。慢开始算法的目的是避免在连接建立初期就发送大量数据,从而引发网络拥塞。
  • 拥塞避免是在慢开始之后,当拥塞窗口大小达到阈值(ssthresh)时启动的算法。此时,TCP会进入一个拥塞避免阶段,其中拥塞窗口的大小每次只增加一个MSS,而不是像慢开始那样加倍。这种线性增长有助于防止网络拥塞的进一步恶化。如果发生超时或收到三个重复的ACK(即快重传),TCP会重新进入慢开始阶段,并将ssthresh设置为当前拥塞窗口大小的一半(但不得小于2个MSS)。
  • 快重传是一种改进TCP重传机制的算法。在TCP中,当接收方收到一个乱序的数据包时,它会立即发送一个重复的ACK给发送方,告诉发送方某个数据包丢失了。如果发送方连续收到三个重复的ACK,它会认为该数据包已经丢失,并立即重传该数据包,而不需要等待超时。这种机制可以更快地恢复丢失的数据包,从而提高TCP的传输效率。快重传与慢开始和拥塞避免一起使用,共同构成了TCP的拥塞控制机制。

应用层

  • 主要功能:为应用程序提供服务,并处理应用程序和网络之间的接口。

  • 关联协议:HTTP(超文本传输协议)、FTP(文件传输协议)、Telnet(远程登录协议)、DNS(域名服务)等。

    这些协议,博主一一列出它们的说明,因为当下八股文考察已经不比三年前,我们必须对八股文理解广而深,不要放过任何一个可以拓展的点。

    • HTTP (Hypertext Transfer Protocol)
      • HTTP是用于在万维网上传输超文本(如网页)的协议。它定义了客户端(如Web浏览器)和服务器之间如何交换数据。HTTP协议是无状态的,即服务器不保留与客户端的会话信息,但可以通过一些机制(如cookies)来模拟有状态的行为。
    • FTP (File Transfer Protocol)
      • FTP用于在计算机网络上传输文件。它支持多种文件类型,包括文本文件、二进制文件、图像文件、声音文件、视频文件等。FTP使用两个并行的TCP连接:一个用于控制信息(如用户名和密码),另一个用于数据传输。
    • SSH (Secure Shell)
      • SSH是一个加密的网络传输协议,用于在不安全的网络中执行安全的数据通信。SSH最初是Telnet的安全替代品,因为它提供了一个加密的、安全的通道,用于远程登录和命令执行。现在,SSH也被广泛用于其他安全网络服务,如VPN和文件传输。
    • DNS (Domain Name System)
      • DNS是一个分布式数据库系统,用于将域名转换为IP地址(以及进行其他与域名相关的操作)。它使得用户能够使用易记的域名(如www.example.com)而不是难以记忆的IP地址(如192.0.2.1)来访问网络资源。
    • SMTP (Simple Mail Transfer Protocol)
      • SMTP是用于电子邮件传输的协议。它定义了邮件服务器之间如何发送和接收邮件消息。当用户发送一封电子邮件时,他们的邮件客户端(如Outlook、Gmail等)会使用SMTP将邮件发送到他们的邮件服务器。然后,邮件服务器会使用SMTP与其他邮件服务器通信,以将邮件传递到目的地。

    应用层是不用去关心数据是如何传输的,就类似于,我们寄快递的时候,只需要把包裹交给快递员,由他负责运输快递,我们不需要关心快递是如何被运输的。

    而且应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。

    ​ ----小林coding

总体流程

以上各层的工作方式都已阐述清楚,但是要完整理解网络模型,还需要理解总体流程,否则又变成了背八股,而不是理解八股。

  1. 应用层:应用程序在这里生成数据,并请求传输服务。

  2. 传输层

    • 在发送方,传输层(如TCP或UDP)接收来自应用层的数据,并将其分割成适当大小的数据段(segments),以便在网络中传输。
    • 每个数据段都附有一个传输层头部,其中包含关于数据段的信息(如序列号、确认号等)。
    • 在接收方,传输层接收来自网络层的数据包(packets),并去除传输层头部,然后将数据段传递给应用层。
  3. 网络层

    • 在发送方,网络层接收来自传输层的数据段,并将其封装成数据包(packets)。每个数据包都包含一个网络层头部,其中包括源IP地址和目标IP地址。
    • 路由器在网络层工作,它们读取数据包的IP头部信息,并使用路由算法和路由表来确定最佳的传输路径。
    • 在接收方,网络层接收数据包,并去除网络层头部,然后将数据段传递给传输层。
  4. 物理链路层

    • 在发送方,数据链路层接收来自网络层的数据包,并将其封装成帧(frames)。帧包含数据链路层头部和尾部信息,用于在物理链路上传输。
    • 交换机和网桥在数据链路层工作,它们根据帧中的MAC地址信息来转发帧。
    • 在接收方,数据链路层接收帧,并去除数据链路层头部和尾部,然后将数据包传递给网络层。
  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值