当前位置: 首页 > news >正文

【网络通信】TCP/IP 协议全方位解析​

TCP/IP 协议全方位解析​


文章目录

  • TCP/IP 协议全方位解析​
  • 前言
  • 一、TCP/IP 协议的概念​
  • 二、TCP/IP 协议与 ISO 七层模型、五层模型的对比
    • 2.1 七层模型(OSI模型)
    • 2.2 五层模型(教学折中模型)
    • 2.3 四层模型(TCP/IP标准模型)
  • 三、数据报文的封装与解封装​
    • 3.1 数据报文封装​
    • 3.2 数据报文解封装​
  • 四、TCP/IP 协议各层详细介绍
    • 4.1 网络接口层​
    • 4.2 网络层​
      • 4.2.1 常见协议​
      • 4.2.2 IP 地址相关知识​
    • 4.3 传输层​
      • 4.3.1 TCP 和 UDP 的区别​
      • 4.3.2 常见协议​
      • 4.3.3 TCP 三次握手和四次挥手​
    • 4.4 应用层​
      • 4.4.1 常见协议​
  • 总结​


前言

TCP/IP 协议的诞生与冷战时期的军事需求密切相关。20 世纪 60 年代,美国国防部为了解决在核战争等极端情况下,传统通信网络容易被单点破坏而瘫痪的问题,成立了高级研究计划局(ARPA),着手研发一种能够实现分布式通信的网络技术。​

  • 1969 年,ARPA 建立了 ARPANET,这是世界上第一个分组交换网络。在 ARPANET 的发展过程中,为了实现不同计算机和网络之间的通信,需要一套统一的通信规则,TCP/IP 协议便是在这样的背景下逐步发展起来的。​
  • 1983 年 1 月 1 日,ARPANET 正式采用 TCP/IP 协议,这一事件标志着 TCP/IP 协议成为网络通信的标准。随着互联网的飞速发展,TCP/IP 协议也不断完善和扩展,成为了全球互联网通信的基石。

一、TCP/IP 协议的概念​

TCP/IP 协议是一组用于实现网络通信的协议集合,它并不是一个单一的协议,而是由多个协议共同组成的。其中,TCP(Transmission Control Protocol,传输控制协议)和 IP(Internet Protocol,网际协议)是最核心的两个协议,因此这组协议被称为 TCP/IP 协议。​

TCP/IP 协议定义了计算机之间如何进行数据交换、如何识别和定位网络中的设备等关键问题,它使得不同类型的计算机、不同操作系统以及不同网络之间能够进行有效的通信。

二、TCP/IP 协议与 ISO 七层模型、五层模型的对比

2.1 七层模型(OSI模型)

由国际标准化组织(ISO)提出的理论框架,将网络通信划分为七个独立功能层:

  • 物理层:传输比特流,定义硬件标准(如电平、电缆接口)。
  • 数据链路层:组帧、差错检测,通过MAC地址寻址。
  • 网络层:逻辑寻址(IP地址)和路由选择。
  • 传输层:端到端可靠传输(TCP/UDP)。
  • 会话层:建立/管理/终止通信会话。
  • 表示层:数据格式转换、加密/压缩。
  • 应用层:为程序提供交互服务。

特点:理论严谨但实现复杂,实际中未被广泛采用。

2.2 五层模型(教学折中模型)

为平衡教学清晰度与实践性,学术界在四层基础上拆分出独立的数据链路层:

物理层 + 数据链路层:保留OSI底层细节(比特传输、帧封装)。
网络层、传输层、应用层:与TCP/IP四层功能一致。
目的:便于理解网络设备分层(如交换机工作在数据链路层,路由器工作在网络层)

2.3 四层模型(TCP/IP标准模型)

基于互联网实践发展而来,由美国国防部设计,聚焦实际通信效率:

  • 网络接口层:对应OSI的物理层+数据链路层,处理硬件连接和帧传输。
  • 网际层(IP层):实现逻辑寻址和路由(IP协议)。
  • 传输层:提供端到端通信(TCP/UDP协议)。
  • 应用层:整合OSI的应用层、表示层、会话层功能(如HTTP/FTP)。

优势:结构简洁,兼容性强,成为互联网事实标准。

模型层数各层名称分层逻辑核心驱动因素
ISO 七层模型7物理层、数据链路层、网络层、传输层、会话层、表示层、应用层严格分离功能(会话层、表示层独立)ISO追求通用性与理论完备性
五层模型5物理层、数据链路层、网络层、传输层、应用层精简高层(会话层、表示层、应用层合并)互联网实际部署效率优先
TCP/IP 协议4网络接口层、网络层、传输层、应用层拆解底层(物理层、数据链路层独立)平衡教学清晰度与实践性

三、数据报文的封装与解封装​

3.1 数据报文封装​

报文封装

数据在从应用程序发送到网络中的过程中,需要经过层层封装。具体过程如下:​

  • 应用层:应用程序生成数据,按照相应的应用层协议(如 HTTP、FTP 等)对数据进行处理,形成数据报文。这些数据报文包含了应用程序所要传递的具体信息,例如网页内容、文件数据等。​
  • 传输层:将应用层传来的数据报文加上 TCP 或 UDP 头部信息,形成段(Segment)。TCP 头部包含源端口、目的端口、序列号、确认号、数据偏移、保留位、控制位、窗口大小、校验和、紧急指针等信息,这些信息用于保证数据的可靠传输和流量控制;UDP 头部相对简单,包含源端口、目的端口、长度和校验和等信息,主要用于快速传输数据。​
  • 网络层:为传输层传来的段加上 IP 头部,形成数据包(Packet)。IP 头部包含版本号、头部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议类型、头部校验和、源 IP 地址、目的 IP 地址等信息,其中源 IP 地址和目的 IP 地址用于确定数据的发送和接收地址,协议类型用于指示传输层所使用的协议(如 TCP 或 UDP)。​
  • 网络接口层:将网络层传来的数据包加上数据链路层头部和尾部,形成帧(Frame)。数据链路层头部包含源 MAC 地址、目的 MAC 地址、类型 / 长度等信息,用于在局域网内识别发送和接收数据的设备;尾部包含校验和等信息,用于检验数据在传输过程中是否发生错误。最后,将帧转换为比特流,通过物理层发送到网络中。​

举例来说,当我们通过浏览器访问一个网页时,浏览器(应用层)生成 HTTP 请求数据,传输层为其加上 TCP 头部,网络层加上 IP 头部,网络接口层加上 MAC 头部和尾部,最终以比特流的形式在网络中传输。

3.2 数据报文解封装​

报文解封装

当数据报文到达接收端后,需要进行解封装,以获取原始数据。解封装过程与封装过程相反:​

  • 网络接口层:接收来自物理层的比特流,将其转换为帧,通过尾部的校验和检验数据是否完整,若完整则去除数据链路层的头部和尾部,得到数据包,并将其传递给网络层。如果校验发现数据错误,可能会要求发送端重新发送数据。​
  • 网络层:检查 IP 头部中的源 IP 地址和目的 IP 地址,确认数据是发送给自己的后,去除 IP 头部,得到段,传递给传输层。同时,会根据 IP 头部中的生存时间(TTL)字段,对其进行减一操作,如果 TTL 变为 0,则丢弃该数据包。​
  • 传输层:根据段中的源端口和目的端口,确定对应的应用程序,然后去除 TCP 或 UDP 头部。对于 TCP 段,还会通过序列号、确认号等信息进行数据的排序和确认,确保数据的有序和完整接收;对于 UDP 段,直接将数据传递给应用层。​
  • 应用层:对传输层传来的数据报文进行处理,还原为应用程序能够理解的数据,例如将 HTTP 响应数据解析为网页内容并显示在浏览器上。​

四、TCP/IP 协议各层详细介绍

4.1 网络接口层​

网络接口层是 TCP/IP 协议的最底层,它负责处理与物理网络的接口,实现数据在物理介质上的传输。该层没有统一的协议标准,不同的物理网络(如以太网、令牌环网等)有各自的协议。​
常见的协议和技术:​

  • 以太网(Ethernet):是目前应用最广泛的局域网技术,采用 CSMA/CD(载波监听多路访问 / 冲突检测)介质访问控制方法。​
  • 无线局域网协议(如 802.11 系列协议):最新802.11ax、802.11be用于实现无线设备之间的通信。

4.2 网络层​

网络层的主要功能是实现不同网络之间的数据传输,负责路由选择和地址转发。​

4.2.1 常见协议​

IP(Internet Protocol):是网络层的核心协议,负责为数据报文分配 IP 地址,并进行路由选择。目前广泛使用的是 IPv4,正在向 IPv6 过渡。​
ICMP(Internet Control Message Protocol):用于在 IP 网络中传递控制消息,如差错报告、网络探测等。例如,ping 命令就是基于 ICMP 协议实现的。​
ARP(Address Resolution Protocol):用于将 IP 地址转换为 MAC 地址,以便数据在数据链路层进行传输。​
RARP(Reverse Address Resolution Protocol):与 ARP 相反,用于将 MAC 地址转换为 IP 地址。​

4.2.2 IP 地址相关知识​

其中A、B、C3类(如下表格)由InterNIC在全球范围内统一分配,D、E类为特殊地址。

类别最大网络数IP地址范围单个网段最大主机数私有IP地址范围
A126(2^7-2)1.0.0.1-127.255.255.2541677721410.0.0.0-10.255.255.255
B16384(2^14)128.0.0.1-191.255.255.25465534172.16.0.0-172.31.255.255
C2097152(2^21)192.0.0.1-223.255.255.254254192.168.0.0-192.168.255.255
  • A 类地址:A 类地址的第一个字节为网络号,后三个字节为主机号。网络号的范围是 1-126,每个 A 类网络可以容纳的主机数量为 2^24-2=16777214 台。​
  • B 类地址:B 类地址的前两个字节为网络号,后两个字节为主机号。网络号的范围是 128-191,每个 B 类网络可以容纳的主机数量为 2^16-2=65534 台。​
  • C 类地址:C 类地址的前三个字节为网络号,最后一个字节为主机号。网络号的范围是 192-223,每个 C 类网络可以容纳的主机数量为 2^8-2=254 台。​
  • D 类地址:D 类地址用于多播通信,其第一个字节的范围是 224-239,没有网络号和主机号的划分。​

IP 地址划分通常采用子网掩码来实现,子网掩码与 IP 地址进行 “与” 运算,可以得到网络地址。例如,一个 C 类 IP 地址 192.168.1.100,子网掩码为 255.255.255.0,那么网络地址为 192.168.1.0。

4.3 传输层​

传输层负责为应用程序之间提供端到端的通信服务,确保数据的可靠传输或高效传输。它屏蔽了下层网络的细节,使得应用程序能够专注于数据的处理和交换。​

4.3.1 TCP 和 UDP 的区别​

特性​TCP​UDP​
连接性​面向连接,在数据传输前需要建立三次握手,传输结束后需要进行四次挥手释放连接​无连接,不需要建立和释放连接​
可靠性可靠,通过序列号、确认号、重传机制、拥塞控制等保证数据的有序、无丢失、无重复传输​不可靠,不提供重传机制,数据可能会丢失、重复或乱序​
效率​效率较低,由于需要进行连接管理和可靠性保证,开销较大​效率较高,开销小,传输速度快​
流量控制​支持,通过窗口大小机制控制数据的发送速率,避免接收方缓冲区溢出​不支持​
拥塞控制​支持,通过慢启动、拥塞避免、快重传、快恢复等算法应对网络拥塞​不支持​
数据边界​无,数据被视为字节流,没有明确的边界划分​有,数据以数据报的形式发送,保持数据的边界​
适用场景适用于对可靠性要求高的场景,如文件传输(FTP)、网页浏览(HTTP)、电子邮件(SMTP)等​适用于对实时性要求高的场景,如视频会议、语音通话、实时游戏等​
头部大小​20 - 60 字节​8 字节​

4.3.2 常见协议​

TCP:如前所述,用于可靠传输。除了上述提到的特点外,TCP 还支持全双工通信,即通信双方可以同时发送和接收数据。​
UDP:如前所述,用于高效传输。在一些对实时性要求极高,而对可靠性要求相对较低的场景中,UDP 是更好的选择,例如在线游戏中,偶尔的数据丢失不会对游戏体验造成太大影响,但数据的及时传输至关重要。​
其他协议:如 SCTP(Stream Control Transmission Protocol,流控制传输协议),结合了 TCP 和 UDP 的特点,适用于一些特殊的通信场景。SCTP 支持多流传输和多宿主特性,能够在多个路径上传输数据,提高了通信的可靠性和灵活性,常用于电信网络等领域。​

4.3.3 TCP 三次握手和四次挥手​

TCP三次握手

三次握手:用于建立 TCP 连接,确保双方都具备发送和接收数据的能力。​

  • 第一次握手:客户端向服务器发送一个 SYN(同步)报文,其中包含客户端的初始序列号(ISN),表示客户端请求建立连接。​
  • 第二次握手:服务器收到 SYN 报文后,向客户端发送一个 SYN + ACK(确认)报文。该报文包含服务器的初始序列号(ISN),以及对客户端 SYN 报文的确认(确认号为客户端 ISN+1),表示服务器同意建立连接。​
  • 第三次握手:客户端收到服务器的 SYN + ACK 报文后,向服务器发送一个 ACK(确认)报文,确认号为服务器 ISN+1,表示客户端已收到服务器的响应,连接建立完成。

TCP四次挥手

四次挥手:用于释放 TCP 连接,确保双方都已完成数据传输。​

  • 第一次挥手:客户端向服务器发送一个 FIN(结束)报文,表示客户端不再发送数据。​
  • 第二次挥手:服务器收到 FIN 报文后,向客户端发送一个 ACK 报文,确认号为客户端 FIN 报文的序列号 + 1,表示服务器已收到客户端的结束请求,但可能还有数据需要发送。​
  • 第三次挥手:当服务器完成所有数据发送后,向客户端发送一个 FIN 报文,表示服务器也不再发送数据。​
  • 第四次挥手:客户端收到服务器的 FIN 报文后,向服务器发送一个 ACK 报文,确认号为服务器 FIN 报文的序列号 + 1,表示客户端已收到服务器的结束请求,等待一段时间后释放连接;服务器收到 ACK 报文后,立即释放连接。

4.4 应用层​

应用层是 TCP/IP 协议的最高层,直接为用户应用程序提供服务,它定义了应用程序之间通信的规则和接口。​

4.4.1 常见协议​

  • HTTP(HyperText Transfer Protocol,超文本传输协议):用于实现万维网中客户端与服务器之间的通信,是网页浏览的基础。HTTP 采用请求 - 响应模式,客户端向服务器发送 HTTP 请求报文,服务器收到请求后返回 HTTP 响应报文。HTTP 1.1 支持持久连接,允许在一个连接上发送多个请求和响应,提高了传输效率;HTTP 2.0 引入了二进制分帧、多路复用等特性,进一步提升了性能。​
  • HTTPS(HyperText Transfer Protocol Secure,超文本传输安全协议):是 HTTP 的安全版本,通过 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议对通信内容进行加密,保证数据传输的安全性和完整性,常用于涉及敏感信息的场景,如网上银行、电子商务等。​
  • FTP(File Transfer Protocol,文件传输协议):用于在客户端和服务器之间进行文件传输。FTP 使用两个连接,一个是控制连接(通常使用端口 21),用于传输命令和响应;另一个是数据连接(通常使用端口 20),用于传输文件数据。FTP 支持匿名登录和用户登录两种方式。​
  • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议):用于发送电子邮件。SMTP 定义了邮件客户端如何将邮件发送到邮件服务器,以及邮件服务器之间如何传递邮件。SMTP 使用端口 25 进行通信。​
  • POP3(Post Office Protocol version 3,邮局协议版本 3)和 IMAP(Internet Message Access Protocol,互联网消息访问协议):用于接收电子邮件。POP3 是一种简单的协议,邮件客户端将邮件从服务器下载到本地后,服务器通常会删除该邮件;IMAP 则更强大,支持在服务器上管理邮件(如创建文件夹、标记邮件等),邮件可以保留在服务器上,方便在多个设备上访问。​
  • DNS(Domain Name System,域名系统):用于将域名转换为 IP 地址,方便用户记忆和使用网络。DNS 采用分布式结构,由根域名服务器、顶级域名服务器、权威域名服务器等组成。当用户输入域名时,本地 DNS 服务器会向其他 DNS 服务器查询该域名对应的 IP 地址,并将结果返回给用户。例如,当我们输入www.baidu.com时,DNS 会将其转换为对应的 IP 地址,使得计算机能够找到百度的服务器。​
  • Telnet(Telecommunication Network,远程终端协议):用于远程登录到其他计算机,实现对远程计算机的控制和操作。Telnet 传输的数据是明文的,安全性较差,目前逐渐被 SSH(Secure Shell)协议取代。​
  • SSH(Secure Shell):是一种安全的远程登录协议,通过对数据进行加密和认证,保证远程登录的安全性。SSH 不仅可以用于远程登录,还可以用于文件传输(如 SCP、SFTP)等。​

总结​

TCP/IP 协议作为互联网的基石,其体系结构和各层协议共同保障了全球网络的顺畅通信。从网络接口层实现数据在物理介质上的传输,到网络层进行路由选择和地址转发,再到传输层提供可靠或高效的端到端通信服务,最后到应用层直接为用户应用程序提供服务,每一层都发挥着不可或缺的作用。​

http://www.dtcms.com/a/336217.html

相关文章:

  • 计算机网络 TCP、UDP 区别
  • 云原生俱乐部-RH134知识点总结(2)
  • mediamtx v1.14.0版本全面解析:RTP流接收、IPv6支持与性能监控体系升级​
  • 如何做HTTP优化
  • Python 项目里的数据清理工作(数据清洗步骤应用)
  • 芯片行业主要厂商
  • Java 大视界 -- 基于 Java 的大数据分布式计算在气象灾害预警与应急响应中的应用
  • LeetCode 837.新 21 点:动态规划+滑动窗口
  • 动态规划法 - 53. 最大子数组和
  • MySQL数据库基础操作指南:从创建到管理的完整流程
  • Linux系统中6种替代top的工具
  • SparkSQL性能优化实践指南
  • ubuntu 24.04 安装
  • RAC环境redo在各节点本地导致数据库故障恢复---惜分飞
  • 云智智慧停充一体云-allnew全新体验-路内停车源码+路外停车源码+充电桩源码解决方案
  • 从零配置YOLOv8环境:RTX 3060显卡完整指南
  • 43.安卓逆向2-补环境-使用unidbg(使用Smali语法调用方法和使用方法地址调用方法)
  • n2n局域网搭建
  • 0-12岁幼儿启蒙与教育
  • Linux操作系统远程连接
  • 代码管理系统简介与部署
  • 《告别 if-else 迷宫:Python 策略模式 (Strategy Pattern) 的优雅之道》
  • Honor of Kings 101star (S40) 2025.08.17
  • Spring Bean 的生命周期:从创建到销毁的完整旅程​
  • Gemini 学习记录:实践与反思
  • 深度解析 Spring Bean 生命周期
  • UE5多人MOBA+GAS 49、创建大厅
  • MariaDB 多源复制
  • Qt异步编程:QFuture与QPromise深度解析
  • Mysql常见的查询总结