TCP/IP协议族、封装/解封装

目录

    • 1、死也不能忘记的四个层
      • ①数据链路层
      • ②网络层
      • ③传输层
      • ④应用层
    • 2、TCP/IP工作原理以及流程
      • ①封装:加上协议头
      • ②分用/解封装:解析协议头
      • ③对等层通信


说明:本文摘自游双的《Linux高性能服务器编程》,主要摘抄重要的概念和内容。

1、死也不能忘记的四个层

TCP/IP协议族、封装/解封装_第1张图片

①数据链路层

  1. 实现了网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网、令牌环等)上的传输。主要的协议ARP和RARP
  2. 经过数据链路层封装的数据成为帧,有以太网帧、令牌环帧,其中,以太网帧的格式:
    TCP/IP协议族、封装/解封装_第2张图片
    MTU最大传输单元,即帧最多能携带多少上层协议数据(比如IP数据报),正因为如此,过长的IP数据报可能需要分片传输。
    说明:以太网帧的MTU=1500,可以通过ifconfig、netstat查看,因此它携带的IP数据报的数据部分最多是1480个字节(IP数据报头部占20个字节)

②网络层

  1. 主要的协议是IP和ICMP
  2. 功能:
    路由选择:通信的两台主机不是直接相连的,而是经过多个中间节点(路由器)连接,网络层的任务就是选择这些中间节点,已确定两台主机之间的通信
  3. IP协议是根据数据包的目的IP地址来决定如何投递它。如果数据包不能直接发送给目标主机,那么IP协议将会为数据包选择合适的下一跳路由器,并将数据包交付给该路由器来转发。多次重复该过程,直到数据包到达目的主机,或者由于发送失败数据包而被丢弃。可以发现,网络层的IP协议使用逐跳的方式确定通信路径。
  4. ICMP协议(因特网控制报文协议)主要用于检测网络连接,分为两种类型:差错报文、查询报文。详细介绍看图示:
    TCP/IP协议族、封装/解封装_第3张图片

③传输层

主要协议:TCP、UDP、SCTP
功能:为两台主机上的应用程序提供端到端(end-to-end)的通信。与网络层的IP协议使用逐跳的通信方式缺人通信路径不同,传输层只关心src和dst,并不关心数据包的中转过程。

④应用层

在用户空间实现,主要协议:telnet、OSPF、DNS、ping程序等


2、TCP/IP工作原理以及流程

①封装:加上协议头

Q1:上层协议是如何使用下层协议提供的服务的呢?—封装
A1:应用程序的数据在发送到物理网络上之前,将沿着协议栈从上向下一次传递,每层协议都将在上层数据的基础上加上自己的头部信息。
TCP–>TCP报文段、UDP–>UDP数据报、IP–>IP数据包、数据链路层–>帧(以太网帧、令牌环帧)
说明:TCP、UDP对数据的封装类似,不同的是,UDP无需为数据保存副本,因为UDP是不可靠的服务,当UDP数据报被成功发送之后,UDP缓冲区中的该数据报就被丢弃了(如果应用程序检测到该数据报未能被接收方正确接收,并打算重发该数据包,则应用程序需要从用户空间将该数据拷贝到UDP内核发送缓冲区中)。
TCP/IP协议族、封装/解封装_第4张图片

②分用/解封装:解析协议头

Q2:当帧在物理网络上传输到目的主机时,将会沿着协议自底向上依次传递,具体执行过程?—分用
A2:各层协议将依次处理帧中本层负责的头部数据,以获取所需要的信息,并最终将处理后的帧交给目标应用程序。

(从下到上)以太网帧的分用过程,图示:
TCP/IP协议族、封装/解封装_第5张图片
可以看到:
1. IP、ARP、RARP协议都使用传输数据,所以帧的头部中以太网帧的类型来区分它们。IP、ARP、RARP对应的类型分别是:0x800、0x806、0x835。
2. ICMP协议、TCP协议、UDP协议都是用IP协议,所以IP数据报的头部采用16位的协议字段来区分它们
3. TCP、UDP则通过16位的端口号字段区分上层应用程序

③对等层通信

在两个端系统的同一层上,双方都有对应的一个或多个协议进行通信
TCP/IP协议族、封装/解封装_第6张图片

你可能感兴趣的:(TCP/IP详解)