TCP/IP协议栈全解析:从分层模型到核心协议

TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网的核心协议簇,定义了数据如何在网络中传输。本文将深入探讨TCP/IP的七层模型与五层架构DNS与FTP等协议的工作原理,以及TCP的三次握手与四次挥手过程及其报文结构

目录

一、TCP/IP协议族概述

二、OSI七层模型与五层架构

OSI七层模型框架

TCP/IP五层架构

TCP/IP协议的应用层

TCP/IP协议的传输层

TCP/IP协议的网络层

 TCP/IP协议的数据链路层

 TCP/IP协议的物理层

 TCP/IP传输过程(封装与解封装)

三、TCP的三次握手与四次挥手

三次握手

四次挥手

四、TCP与IP的报文结构

TCP报文结构解释

通俗易懂版:

 UDP报文结构解释

首部(共 8 字节,分为 4 个字段,每个字段 2 字节)

数据部分

TCP与UDP的区别

连接特性

可靠性

数据传输模式

传输效率

拥塞控制

首部开销

应用场景

 IP报文结构解释

首部固定部分(20 字节)

首部可变部分

数据部分

通俗易懂版:

信封正面信息(首部固定部分)

信封背面备注(首部可变部分)

信纸内容(数据部分)

五、总结


一、TCP/IP协议族概述

TCP/IP是指能够在多个不同网络间实现信息传输的协议簇。它不仅仅包括TCP和IP两个协议,而是由多个协议组成的协议簇,包括FTP、SMTP、UDP等‌。TCP/IP协议是Internet最基本的协议,定义了电子设备如何连入因特网以及数据如何在它们之间传输的标准‌。

二、OSI七层模型与五层架构

OSI七层模型框架

OSI模型定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),每一层实现各自的功能和协议,并完成与相邻层的接口通信。OSI模型各层的通信协议,如下表:

应用层 HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP、等等
表示层 XDR、ASN.1、SMB、AFP、NCP、等等
会话层 ASAP、SSH、RPC、NetBIOS、ASP、Winsock、BSD Sockets、等等
传输层 TCP、UDP、TLS、RTP、SCTP、SPX、ATP、IL、等等
网络层 IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、X.25、等等
数据链路层 以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP、等等
物理层 传输介质:例如同轴电缆、光纤、网线、无线电等

注:ARP是工作在二三层之间的协议

TCP/IP五层架构

应用层 HTTP、HTTPS、FTP、DHCP、DNS、telnet、SSH、等等
传输层 TCP、UDP
网络层 IP、ICMP、ARP、IGMP、RARP
数据链路层 PPP、VLAN
物理层 传输介质:例如同轴电缆、光纤、网线、无线电等

注:数据链路层与物理层通常被称为网络接口层


  • TCP/IP协议的应用层

应用层是 TCP/IP 协议栈的最高层,直接为用户的应用程序提供服务,负责处理特定的应用程序协议,包括文件传输、电子邮件、远程登录、万维网等各种网络应用。

常见协议如下:

HTTP(超文本传输协议):用于在 Web 浏览器和 Web 服务器之间传输超文本数据,使得用户能够通过浏览器访问网页。

FTP(文件传输协议):用于在网络上进行文件的上传和下载,提供了可靠的文件传输服务。

SMTP(简单邮件传输协议):主要用于发送电子邮件,负责将邮件从发件人邮箱服务器传输到收件人邮箱服务器。


  • TCP/IP协议的传输层

传输层的主要功能是在不同主机上的应用进程之间提供端到端的通信服务,确保数据的可靠传输和流量控制等。它为应用层提供了两种不同的传输协议,即 TCP 和 UDP,以满足不同应用对传输可靠性和实时性的需求。

常见协议如下:

TCP(传输控制协议):面向连接的、可靠的传输协议。它通过三次握手建立连接,在数据传输过程中进行差错检测、流量控制和拥塞控制,保证数据能够准确无误地到达目的地。常用于对数据可靠性要求较高的应用,如文件传输、电子邮件等。

UDP(用户数据报协议):无连接的、不可靠的传输协议。UDP 在传输数据时不建立连接,也不进行差错检测和流量控制,只是简单地将数据报发送出去,速度快但不保证数据的完整性和准确性,适用于对实时性要求较高但对数据准确性要求相对较低的应用,如视频会议、实时游戏等。


  • TCP/IP协议的网络层

网络层负责在不同的网络之间进行数据报的路由选择和转发,使数据能够从源主机传输到目标主机,主要解决的是网络之间的通信问题,为数据在网络中的传输提供逻辑地址和路径选择。

常见协议如下:

IP(网际协议):网络层的核心协议,它为每个网络设备分配一个唯一的 IP 地址,用于标识设备在网络中的位置。IP 协议负责将数据报从源节点通过网络路径传输到目标节点,根据目标 IP 地址进行路由选择,决定数据报在网络中的传输路径。

ICMP(互联网控制报文协议):用于在 IP 主机、路由器之间传递控制消息,如网络通不通、主机是否可达、路由是否可用等网络本身的消息,对于网络故障的诊断和维护非常重要。


  •  TCP/IP协议的数据链路层

数据链路层主要负责将网络层传来的数据报封装成帧,并在物理链路上进行传输,同时对传输过程中的数据进行差错检测和纠正,确保数据在相邻节点之间的可靠传输。

常见协议如下:

ARP(地址解析协议):用于将 IP 地址解析为物理地址(MAC 地址),在数据链路层实现通信时,需要知道目标设备的 MAC 地址,ARP 协议就是用来完成这种地址转换的。

RARP(逆地址解析协议):与 ARP 相反,RARP 用于将物理地址转换为 IP 地址,通常在无盘工作站等场景中使用,通过 RARP 协议从服务器获取自己的 IP 地址。


  •  TCP/IP协议的物理层

物理层是 TCP/IP 协议栈的最底层,负责处理物理介质上的信号传输,包括电缆、光纤、无线等物理介质,它定义了物理设备的电气、机械、功能和规程特性,确保数据能够在物理介质上正确地发送和接收。 

常见标准如下:

EIA/TIA-232:一种常用的串行通信接口标准,用于计算机与调制解调器、终端设备等之间的连接,规定了接口的电气特性、机械特性和信号功能等。

IEEE 802.3:以太网标准,定义了基于双绞线、光纤等介质的以太网物理层规范,包括信号编码、传输速率、物理拓扑结构等方面的内容,是目前应用最广泛的局域网物理层标准之一。


 TCP/IP传输过程(封装与解封装)

如图所示

TCP/IP协议栈全解析:从分层模型到核心协议_第1张图片

注:OSI七层顺序为:物、数、网、传、会、表、应;(图中顺序有误差)由于过程比较复杂具体可后台私信交流


三、TCP的三次握手与四次挥手

  • 三次握手

三次握手是 TCP 协议建立连接的过程,确保客户端和服务器双方都具有发送和接收数据的能力,并且初始序列号能被双方知晓。以下是具体步骤:

  1. 客户端发送 SYN 包
    • 客户端向服务器发送一个 TCP 数据包,其中同步位(SYN)标志位被设置为 1,表示这是一个建立连接的请求。同时,客户端会随机选择一个初始序列号(ISN),假设为 x,并将其放入序列号字段中。
    • 该数据包的格式可以表示为:[SYN = 1, Seq = x]。
  2. 服务器发送 SYN + ACK 包
    • 服务器接收到客户端的 SYN 包后,知道客户端想要建立连接。服务器会为这个连接分配资源,并发送一个响应数据包。
    • 在这个数据包中,同步位(SYN)和确认位(ACK)标志位都被设置为 1。SYN = 1 表示服务器同意建立连接,ACK = 1 表示对客户端 SYN 包的确认。服务器也会随机选择一个自己的初始序列号(ISN),假设为 y,并将其放入序列号字段中。同时,确认号字段的值被设置为 x + 1,表示服务器期望接收到的下一个客户端数据包的序列号。
    • 该数据包的格式可以表示为:[SYN = 1, ACK = 1, Seq = y, Ack = x + 1]。
  3. 客户端发送 ACK 包
    • 客户端接收到服务器的 SYN + ACK 包后,知道服务器已经同意建立连接。客户端会发送一个确认数据包,其中确认位(ACK)标志位被设置为 1,表示对服务器 SYN 包的确认。
    • 序列号字段的值为 x + 1,确认号字段的值为 y + 1,表示客户端期望接收到的下一个服务器数据包的序列号。
    • 该数据包的格式可以表示为:[ACK = 1, Seq = x + 1, Ack = y + 1]。

 通俗易懂版:

TCP/IP协议栈全解析:从分层模型到核心协议_第2张图片

客户端发送连接请求报文段,(你好我是xxx)

服务器收到请求并发送确认报文段(好的我知道了xxx,我是xxx)

客户端收到确认并发送确认报文段(好的我知道你是xxx)

  • 四次挥手

四次挥手是 TCP 协议断开连接的过程,确保双方都能够正确地释放连接所占用的资源。以下是具体步骤:

  1. 客户端发送 FIN 包
    • 当客户端完成数据传输后,它会向服务器发送一个 TCP 数据包,其中终止位(FIN)标志位被设置为 1,表示客户端请求关闭连接。同时,客户端会将当前的序列号,假设为 m,放入序列号字段中。
    • 该数据包的格式可以表示为:[FIN = 1, Seq = m]。
  2. 服务器发送 ACK 包
    • 服务器接收到客户端的 FIN 包后,知道客户端想要关闭连接。服务器会发送一个确认数据包,其中确认位(ACK)标志位被设置为 1,表示对客户端 FIN 包的确认。
    • 序列号字段的值为服务器当前的序列号,假设为 n,确认号字段的值为 m + 1,表示服务器期望接收到的下一个客户端数据包的序列号。
    • 该数据包的格式可以表示为:[ACK = 1, Seq = n, Ack = m + 1]。此时客户端到服务器的连接已经关闭,但服务器到客户端的连接还未关闭,服务器还可以继续向客户端发送数据。
  3. 服务器发送 FIN 包
    • 当服务器完成数据传输后,它会向客户端发送一个 TCP 数据包,其中终止位(FIN)标志位被设置为 1,表示服务器请求关闭连接。同时,服务器会将当前的序列号,假设为 n,放入序列号字段中。
    • 该数据包的格式可以表示为:[FIN = 1, Seq = n]。
  4. 客户端发送 ACK 包
    • 客户端接收到服务器的 FIN 包后,知道服务器想要关闭连接。客户端会发送一个确认数据包,其中确认位(ACK)标志位被设置为 1,表示对服务器 FIN 包的确认。
    • 序列号字段的值为 m + 1,确认号字段的值为 n + 1,表示客户端期望接收到的下一个服务器数据包的序列号。
    • 该数据包的格式可以表示为:[ACK = 1, Seq = m + 1, Ack = n + 1]。发送完这个 ACK 包后,经过一段时间的等待(TIME - WAIT 状态),客户端和服务器之间的连接就完全关闭了。

四、TCP与IP的报文结构

  • TCP报文结构解释

TCP/IP协议栈全解析:从分层模型到核心协议_第3张图片

TCP 报文段的结构包含源端口号、目的端口号、序号、确认号、数据偏移、保留位、控制位、窗口大小、校验和、紧急指针以及选项和数据等部分,以下是具体解释:

  1. 源端口号(Source Port):占 16 位,标识发送端应用程序使用的端口号,用于区分不同的应用程序或进程。比如 HTTP 协议通常使用 80 端口,FTP 协议使用 20 和 21 端口等。
  2. 目的端口号(Destination Port):同样占 16 位,标识接收端应用程序使用的端口号,告诉接收方数据应该交付给哪个应用程序或进程进行处理。
  3. 序号(Sequence Number):占 32 位,在 TCP 通信中,发送方会为每个字节的数据分配一个序号,用于标识数据的顺序,确保数据按序传输和接收。
  4. 确认号(Acknowledgment Number):32 位,是期望收到对方下一个报文段的第一个数据字节的序号。它表示接收方已经成功接收了序号小于该确认号的所有数据,用于实现可靠的数据传输和流量控制。
  5. 数据偏移(Data Offset):占 4 位,指出 TCP 报文段的数据部分距离报文段头部的起始位置有多少个 32 位字(4 字节),用于确定报文段中数据的开始位置,实际上也表示了 TCP 首部的长度。
  6. 保留位(Reserved):占 6 位,保留给未来使用,目前必须置为 0。
  7. 控制位(Control Bits):共 6 位,每一位都有特定的含义。
    • URG(紧急指针标志):紧急指针有效标志位,为 1 时表示紧急指针字段有效,用于指示紧急数据的位置。
    • ACK(确认标志):确认号有效标志位,为 1 时表示确认号字段有效,表明接收方成功接收数据并进行确认。
    • PSH(推送标志):为 1 时提示接收方应尽快将数据交付给应用层,而不是等到缓冲区满。
    • RST(复位标志):用于复位连接,为 1 时表示出现错误或异常情况,需要重新建立连接。
    • SYN(同步标志):用于建立连接时同步序号,为 1 时表示这是一个连接请求或连接接受报文。
    • FIN(结束标志):为 1 时表示发送方已经没有数据要发送了,请求关闭连接。
  8. 窗口大小(Window):占 16 位,用于流量控制,它表示接收方的接收窗口大小,即接收方当前可以接收的数据量。发送方会根据这个值来调整自己的发送速度,避免发送数据过快导致接收方缓冲区溢出。
  9. 校验和(Checksum):占 16 位,用于检测 TCP 报文段在传输过程中是否发生错误。它是对 TCP 首部和数据部分进行计算得到的一个校验值,接收方会重新计算校验和并与接收到的校验和进行比较,以判断数据的完整性。
  10. 紧急指针(Urgent Pointer):占 16 位,当 URG 标志位为 1 时有效,它指出了紧急数据的末尾在报文段中的位置,帮助接收方快速处理紧急数据。
  11. 选项(Options):长度可变,最多可达 40 字节,主要用于协商一些 TCP 连接的参数,如最大段长度(MSS)、窗口扩大因子、时间戳等。
  12. 数据(Data):TCP 报文段中携带的应用层数据,其长度由数据偏移字段和整个报文段的长度决定。
    通俗易懂版:

TCP 报文就像是一个快递包裹,里面装着各种信息来保证数据准确无误地从一个地方送到另一个地方,下面是对其各部分内容的通俗解释:

  1. 源端口号:好比寄快递的人所在的门牌号,告诉对方数据是从哪里的应用程序或进程发出来的。
  2. 目的端口号:就像快递要送达到的门牌号,让数据知道该送到对方设备上的哪个应用程序或进程去。
  3. 序号:像是给快递包裹里的每一页纸都编了号,这样接收方就能知道这些纸的顺序,保证按正确顺序把内容拼起来。
  4. 确认号:相当于告诉对方,我已经收到了哪些编号之前的所有纸,你可以放心,接下来该给我送哪个编号的纸了。
  5. 数据偏移:可以理解为快递单上写的包裹里的重要信息从第几页开始,让接收方知道从哪里开始看真正要送的数据内容。
  6. 保留位:是一些暂时空着没用的位置,留着以后可能会有新用途。
  7. 控制位
    • URG:好比快递上的 “加急” 标记,告诉接收方里面有紧急的东西要先处理。
    • ACK:就像一个 “已收到” 的回执,让对方知道我确实收到东西了。
    • PSH:像是在说 “别等了,赶紧把东西给人家”,让接收方快点把数据交给应用程序。
    • RST:如果发现快递送错了或者有问题,就发这个信号,让双方重新来一次。
    • SYN:在刚开始送快递前,用这个来和对方打个招呼,说 “我准备好送了,你呢”,用来建立联系。
    • FIN:表示 “我东西送完了,没别的了”,告诉对方可以结束这次送快递的过程了。
  8. 窗口大小:这就像接收方说 “我这里能放快递的地方有这么大,你看着送”,用来告诉发送方一次能接收多少数据。
  9. 校验和:相当于给快递包裹做了一个检查标记,用来检查包裹在运输过程中有没有损坏或者东西有没有少。
  10. 紧急指针:当有 “加急” 标记时,这个指针就告诉接收方紧急的东西到哪里结束。
  11. 选项:类似于快递单上的备注栏,可以写一些特殊要求或信息,比如包裹里东西的最大尺寸等。
  12. 数据:就是快递包裹里真正要送的东西,是应用程序需要传输的内容。 

  •  UDP报文结构解释

TCP/IP协议栈全解析:从分层模型到核心协议_第4张图片

UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,它的报文结构比较简单,主要由首部和数据两部分组成。下面为你详细介绍各部分及其含义:

首部(共 8 字节,分为 4 个字段,每个字段 2 字节)
  1. 源端口号(Source Port)含义:源端口号是一个 16 位的字段,它标识了发送该 UDP 报文的应用程序或进程所使用的端口。端口号就像是不同应用程序的 “门牌号”,通过源端口号,接收方可以知道数据是从发送方的哪个应用程序发出来的。例如,当你使用某个游戏客户端发送数据时,源端口号就对应这个游戏客户端在你设备上使用的端口,方便接收方返回响应数据到正确的应用。
  2. 目的端口号(Destination Port)含义:同样是 16 位字段,它指明了该 UDP 报文要送达的接收方应用程序或进程所使用的端口。接收方的操作系统会根据这个目的端口号,将接收到的 UDP 报文交付给对应的应用程序进行处理。比如,当你访问网页时,浏览器会将请求封装在 UDP 报文中,目的端口号通常会设置为 Web 服务器的 HTTP 端口(如 80 或 443),这样服务器就能把响应数据准确地返回给浏览器。
  3. 长度(Length)含义:该字段占 16 位,它表示整个 UDP 报文(包括首部和数据)的长度,单位是字节。其最小值为 8 字节(仅包含首部,没有数据),最大值为 65535 字节。通过这个长度字段,接收方可以知道应该从网络中读取多少字节的数据来组成完整的 UDP 报文。
  4. 校验和(Checksum)含义:16 位的校验和字段用于检测 UDP 报文在传输过程中是否发生了错误。发送方会根据首部和数据部分计算一个校验和值,并将其填充到校验和字段中。接收方在收到报文后,会重新计算校验和,并与接收到的校验和进行比较。如果两者不相等,说明报文在传输过程中可能出现了错误,接收方通常会选择丢弃该报文。不过,校验和是可选的,在某些情况下可以设置为 0,表示不进行校验。
数据部分
  • 含义:UDP 报文的数据部分包含了上层协议(如应用层协议)传递下来的数据。这部分的长度没有固定限制,它等于整个 UDP 报文的长度减去首部的 8 字节。例如,当你使用 DNS(Domain Name System,域名系统)进行域名解析时,DNS 请求或响应的数据就会被放在 UDP 报文的数据部分进行传输。

总体而言,UDP 协议由于报文结构简单,没有复杂的连接建立和维护机制,因此传输效率较高,但可靠性相对较低,适用于对实时性要求较高、对少量数据丢失不太敏感的应用场景,如视频直播、音频通话等。


  • TCP与UDP的区别

TCP(传输控制协议)和 UDP(用户数据报协议)是两种常用的传输层协议,它们之间的区别主要体现在以下几个方面:

连接特性
  • TCP:是面向连接的协议,就像打电话一样,在数据传输之前,需要先建立连接,数据传输完成后,还需要释放连接。比如在使用浏览器访问一个网站时,浏览器和网站服务器之间会先通过 TCP 建立连接,然后才能进行数据的传输。
  • UDP:是无连接的协议,类似于写信,不需要事先建立连接就可以直接发送数据。比如在进行实时视频直播时,主播端可以直接通过 UDP 将视频数据发送出去,不需要与每个观众端先建立连接。
可靠性
  • TCP:提供可靠的传输服务,它通过序列号、确认应答、重传机制等保证数据能准确无误地到达对方。如果发送方没有收到接收方的确认应答,就会自动重传数据。比如在下载文件时,使用 TCP 协议可以确保文件完整、准确地下载到本地。
  • UDP:不保证数据传输的可靠性,数据可能会丢失、重复或乱序。但是在一些对实时性要求高的场景,如在线游戏中,偶尔丢失一些数据对游戏体验影响不大,反而更看重数据传输的速度。
数据传输模式
  • TCP:是流式传输,数据就像水流一样连续不断地发送,没有明确的边界。接收方需要按照发送方的顺序依次接收和处理数据。
  • UDP:是数据报传输,每个 UDP 数据包都是独立的,有明确的边界。发送方发送的每个 UDP 数据包,接收方都会独立地进行接收和处理。
传输效率
  • TCP:由于需要建立连接、确认应答、重传等机制,传输效率相对较低。但是在对数据准确性要求高的场景下,这些机制是必要的。
  • UDP:没有复杂的连接和确认机制,传输效率高,能够快速地将数据发送出去。适合对实时性要求高、能容忍少量数据丢失的场景。
拥塞控制
  • TCP:具有拥塞控制机制,能够根据网络的拥塞状况自动调整发送数据的速率,避免网络拥塞进一步恶化。比如当网络出现拥堵时,TCP 会降低发送数据的速度,等网络状况好转后再逐渐提高速度。
  • UDP:没有拥塞控制机制,不管网络状况如何,都会按照自己的速率发送数据。如果网络拥塞,可能会导致大量数据丢失,但也有可能在某些情况下充分利用网络带宽。
首部开销
  • TCP:首部长度一般为 20 字节,当有选项字段时会更长。因为 TCP 需要包含更多的信息来实现可靠传输和连接管理等功能。
  • UDP:首部只有 8 字节,非常简洁,这也是 UDP 能提高传输效率的一个因素。
应用场景
  • TCP:适用于对数据准确性要求高的场景,如文件传输、电子邮件、网页浏览等。这些应用需要确保数据完整无误地传输。
  • UDP:适用于对实时性要求高、能容忍少量数据丢失的场景,如视频直播、音频通话、在线游戏等。在这些场景中,及时传输数据比保证数据完全准确更重要。

  •  IP报文结构解释

TCP/IP协议栈全解析:从分层模型到核心协议_第5张图片

IP 报文是在网络层进行数据传输的基本单元,其结构主要分为首部和数据两大部分,首部又可分为固定部分和可变部分,以下为你详细介绍各部分及其含义:

首部固定部分(20 字节)
  1. 版本(Version)含义:占 4 位,指明 IP 协议的版本。目前广泛使用的是 IPv4(版本号为 4),未来趋势是 IPv6(版本号为 6)。不同版本的 IP 协议在报文格式、地址长度等方面存在差异。
  2. 首部长度(Internet Header Length, IHL)含义:占 4 位,以 32 位(4 字节)为单位,指示 IP 首部的长度。由于首部存在可变部分,所以需要该字段来确定首部的边界,以便准确提取数据部分。例如,若该值为 5,则首部长度为 5×4 = 20 字节(即固定部分长度)。
  3. 区分服务(Differentiated Services, DS)含义:占 8 位,用于为不同类型的流量提供不同的服务质量(QoS)。通过这个字段,网络设备可以根据预先设定的规则,对不同优先级的数据包进行差异化处理,如高优先级的实时视频流可以优先通过网络。
  4. 总长度(Total Length)含义:占 16 位,指明整个 IP 报文(包括首部和数据)的长度,单位是字节。其最大值为 2^16 - 1 = 65535 字节。接收方可以根据该字段和首部长度字段,准确分离出首部和数据部分。
  5. 标识(Identification)含义:占 16 位,用于标识一个特定的数据包。当一个较大的数据包需要在网络中进行分片传输时,这些分片都具有相同的标识号,接收方可以根据这个标识号将分片重新组装成原始的数据包。
  6. 标志(Flags)含义:占 3 位,目前只使用了其中的 2 位。第一位保留未用;第二位是不分片标志(DF),当该位为 1 时,表示不允许对该数据包进行分片;第三位是更多分片标志(MF),当该位为 1 时,表示该分片不是最后一个分片。
  7. 片偏移(Fragment Offset)含义:占 13 位,以 8 字节为单位,指示该分片在原始数据包中的相对位置。通过标识号、标志和片偏移,接收方能够正确地将分片重新组合成完整的数据包。
  8. 生存时间(Time to Live, TTL)含义:占 8 位,最初表示数据包在网络中允许经过的路由器跳数。每经过一个路由器,TTL 值减 1。当 TTL 值减为 0 时,数据包将被丢弃,以防止数据包在网络中无限循环转发,浪费网络资源。
  9. 协议(Protocol)含义:占 8 位,指明 IP 报文的数据部分所使用的上层协议类型,如 TCP(值为 6)、UDP(值为 17)、ICMP(值为 1)等。接收方根据该字段将数据部分交给相应的上层协议进行处理。
  10. 首部校验和(Header Checksum)含义:占 16 位,用于检验 IP 首部的完整性。在传输过程中,如果首部发生错误,接收方通过重新计算校验和并与接收到的校验和进行比较,就可以发现错误并丢弃该数据包。
  11. 源 IP 地址(Source IP Address)含义:占 32 位,标识发送该 IP 报文的源主机的 IP 地址。它是数据包的发送源头,接收方可以根据该地址进行响应。
  12. 目的 IP 地址(Destination IP Address)含义:占 32 位,标识该 IP 报文的目标接收主机的 IP 地址。网络中的路由器根据该地址将数据包转发到正确的目的地。
首部可变部分
  • 含义:长度可变,用于支持一些特殊的选项,如记录路由(让数据包经过的每个路由器记录自己的 IP 地址)、时间戳(记录数据包经过每个路由器的时间)等。这些选项虽然增加了 IP 协议的灵活性,但也会增加首部的长度和处理复杂度,在实际应用中使用相对较少。
数据部分
  • 含义:承载的是上层协议(如 TCP、UDP 等)传递下来的数据,是 IP 报文真正要传输的内容。其长度等于总长度减去首部长度。

通俗易懂版:

可以把 IP 报文想象成一封挂号信,这封信要在复杂的邮政网络里从一个地方送到另一个地方,信的不同部分就对应着 IP 报文结构的各个部分,以下是详细解释:

信封正面信息(首部固定部分)
  1. 版本含义:就好比信封上标明是古代的送信方式还是现代的邮政方式。现在常见的是 IPv4 这种 “现代邮政”,以后可能更多用 IPv6 这种 “更先进的邮政”,不同方式规则不太一样。
  2. 首部长度含义:可以理解为信封上贴的各种标签说明占了几行。因为有时候会有额外说明,所以要明确标签内容到哪里结束,方便找到信里真正的内容。
  3. 区分服务含义:类似信封上贴的 “加急”“普通”“挂号” 等标签,告诉邮局工作人员这封信需要什么样的处理优先级。比如 “加急” 的信会优先送。
  4. 总长度含义:相当于整封信(包括信封和里面的信纸)一共占了多大的地方,这样邮局工作人员就能知道这封信有多大,好安排运输空间。
  5. 标识含义:就像给这封信编了一个独一无二的号码。如果这封信太大,需要拆成几个小包裹寄,这些小包裹都有相同的编号,收件人就能知道它们原来是同一封信。
  6. 标志含义
    • 还有个 “还有后续包裹” 标志,贴上它表示这只是一部分,后面还有其他小包裹一起组成完整的信。
    • 有个 “不许拆分” 标志,如果贴了这个,邮局就不能把信拆开分成几个小包裹寄。
  7. 片偏移含义:如果信被拆成了小包裹,这个就表示每个小包裹在原来完整信里的位置,方便收件人把小包裹重新按顺序拼回去。
  8. 生存时间含义:好比信上写着这封信最多能在邮局转多少个地方。每到一个邮局,这个次数就减 1,减到 0 邮局就不送了,免得信一直在邮局之间转来转去浪费资源。
  9. 协议含义:相当于信封上写着这封信里面装的是合同、发票还是情书。邮局根据这个把信交给不同的部门处理,比如合同交给业务部,情书交给个人。
  10. 首部校验和含义:就像信封上有个特殊的防伪标记。收件人收到信后,通过检查这个标记就能知道信封上的信息在传递过程中有没有被改乱。
  11. 源 IP 地址含义:这就是寄信人的地址,告诉收件人这封信是从哪里来的。
  12. 目的 IP 地址含义:这是收件人的地址,邮局根据这个地址把信送到正确的地方。
信封背面备注(首部可变部分)
  • 含义:信封背面可以写一些额外要求,比如 “路过哪个邮局帮忙盖个章留个纪念”,或者 “记录一下经过每个邮局的时间”。不过一般很少有人写这些,因为写了会增加处理的麻烦。
信纸内容(数据部分)
  • 含义:就是寄信人真正要传达的信息,比如合同条款、情书内容等,这才是这封信最重要的部分。

 注:”常见协议原理解释与端口号等请看下一篇”

五、总结

TCP/IP协议族是互联网的基石,其分层架构和协议设计确保了数据的高效、可靠传输。通过理解七层模型与五层架构、DNS与FTP等协议的工作原理,以及TCP的三次握手与四次挥手过程,可以更好地掌握网络通信的核心机制。

希望这篇文章对您有所帮助!如果需要进一步扩展或调整内容,请随时告诉我

你可能感兴趣的:(网络,tcp/ip,网络,服务器)