【TCP/IP协议族详解】

目录

[第1层 链路/网络接口层---帧(Frame)](#第1层 链路/网络接口层—帧(Frame))

[1. 链路层功能](#1. 链路层功能)

[2. 常见协议](#2. 常见协议)

[2.1. ARP(地址解析协议)](#2.1. ARP(地址解析协议))

[3. 常见设备](#3. 常见设备)

[第2层 网络层---数据包(Packet)](#第2层 网络层—数据包(Packet))

[1. 网络层功能](#1. 网络层功能)

[2. 常见协议](#2. 常见协议)

[2.1. ICMP(互联网控制消息协议)](#2.1. ICMP(互联网控制消息协议))

[3. 常见设备](#3. 常见设备)

[第3层 传输层---TCP段或UDP数据报](#第3层 传输层—TCP段或UDP数据报)

[1. 传输层功能](#1. 传输层功能)

[2. 常见协议](#2. 常见协议)

[2.1. TCP](#2.1. TCP)

[2.2. UDP](#2.2. UDP)

[3. TCP三次握手与四次挥手](#3. TCP三次握手与四次挥手)

[3.1. 名词讲解](#3.1. 名词讲解)

[3.2. 三次握手](#3.2. 三次握手)

[3.3. 数据传输](#3.3. 数据传输)

[3.4. 四次挥手](#3.4. 四次挥手)

[3.5. 整体流程](#3.5. 整体流程)

[4. 常见设备](#4. 常见设备)

[第4层 应用层](#第4层 应用层)

[1. 应用层功能](#1. 应用层功能)

[2. 常见协议](#2. 常见协议)

[3. 常见软件](#3. 常见软件)

TCP/IP通信流程

[1. 发送端](#1. 发送端)

[2. 接收端](#2. 接收端)

TCP/IP数据解封装​


TCP/IP协议(传输控制协议/互联网协议,Transmission Control Protocol/Internet Protocol)是一组用于计算机网络通信的协议集合,是互联网和许多局域网的基础。它定义了数据如何在网络中传输、寻址、路由和接收。

第1层 链路/网络接口层---帧(Frame)

负责将数据封装成帧,通过物理介质传输,并包括地址解析和物理信号传输功能。

1. 链路层功能

  • 帧的封装与拆装:将网络层数据包封装成帧,添加MAC地址和校验字段,并在接收端解封装。
  • 帧边界识别:通过前导码、定界符或长度字段识别帧的开始和结束。
  • 介质访问控制(MAC):协调多设备对共享介质的访问,防止数据冲突(如CSMA/CD、CSMA/CA)。
  • 差错检测:通过CRC或校验和检测帧传输错误,丢弃出错帧(通常不负责重传,重传一般由传输层负责)。
  • 物理信号传输:将帧转化为物理信号(如电信号、光信号)并通过介质发送和接收。
  • 地址解析:通过ARP协议将IP地址映射为MAC地址。

2. 常见协议

Ethernet(以太网)、Wi-Fi(IEEE 802.11)、PPP(点对点协议)、ARP(地址解析协议)、HDLC(高级数据链路控制协议)

2.1. ARP(地址解析协议)

ARP负责在同一局域网内,将网络层的IP地址(IPv4)映射到链路层的MAC地址。作为链路层协议,它为网络层的IP寻址提供支持,通常被视为网络层与链路层的接口协议。

ARP工作流程

  • ARP请求(Request)
    • 以广播方式发送到本地网络,目标MAC地址为FF:FF:FF:FF:FF:FF(全网广播)。
    • 请求包通过Ethernet帧传输(协议类型0x0806),包含:
      • 发起者的IP地址和MAC地址。
      • 目标MAC地址(填充为00:00:00:00:00:00,因为未知)。
      • 目标IP地址(待解析的IP)。
  • ARP回复(Reply)
    • 以单播方式发送给请求者的MAC地址,通过Ethernet帧(协议类型0x0806)。
    • 回复包包含:
      • 回应者的IP地址和MAC地址。
      • 发起者的IP地址和MAC地址(继承自请求包)。
  • 缓存与超时
    • 主机收到ARP回复后,将IP↔MAC映射存入ARP缓存(ARP table),减少后续请求。
    • 缓存分为动态条目(通过ARP请求/回复生成)和静态条目(手动配置,不超时)。
    • 动态条目通常在1-20分钟后超时(视操作系统而定,如Linux约20分钟,Windows可能更短),超时后需重新发送ARP请求。
  • 扩展功能
    • 反向ARP(RARP):将MAC地址解析为IP地址,早期用于无盘工作站,现多被DHCP取代。
    • 代理ARP(Proxy ARP):路由器代表其他网络中的主机回复ARP请求,用于跨子网通信。

如何查看ARP缓存

bash 复制代码
Linux
查看:arp -n(显示ARP表,不解析主机名)或ip neigh show(显示邻居表,包括ARP和IPv6的NDP)。
添加静态:sudo arp -s 192.168.1.20 BB:BB:BB:BB:BB:BB(MAC地址使用冒号分隔)。
删除:sudo arp -d 192.168.1.20。
Windows
查看:arp -a(显示ARP缓存表)。
添加静态:arp -s 192.168.1.20 BB-BB-BB-BB-BB-BB(MAC地址使用连字符分隔)。
删除:arp -d 192.168.1.20。

注意 :Linux使用冒号分隔的MAC地址(如BB:BB:BB:BB:BB:BB),Windows使用连字符分隔(如BB-BB-BB-BB-BB-BB)。

3. 常见设备

  • 网卡(NIC):将数据转换为物理信号(如电信号或无线信号),并具有唯一的MAC地址
  • 交换机(Switch):根据MAC地址表转发数据帧,支持全双工通信,减少网络冲突。
  • 网桥(Bridge):连接两个网络段,根据MAC地址过滤和转发数据,适用于小型网络。
  • 集线器:广播所有接收到的信号,带宽共享,易发生冲突,主要用于小型或早期网络。
  • 传输介质:如双绞线、光纤、同轴电缆,用于承载物理信号。

第2层 网络层---数据包(Packet)

负责将数据从源主机传输到目的主机,即使它们不在同一个网络中。它通过逻辑寻址和路由选择来实现这一点,确保数据包能够跨越不同的网络和子网到达目的地。

1. 网络层功能

  • 逻辑寻址:为每个网络设备分配唯一的IP地址(IPv4或IPv6),用于标识主机和网络。
  • 路由选择:根据路由表和路由协议(如RIP、OSPF)确定数据包从源到目的地的最佳路径。
  • 数据包转发:路由器根据目标IP地址和路由表将数据包转发到下一跳。
  • 分片与重组:当数据包大小超过网络路径中的最大传输单元(MTU)时,网络层在源端或中间路由器将数据包分片,并在目的端重组。
  • 差错检测:IP包头包含头部校验和,用于检测头部数据是否损坏(不检查数据部分)。
  • 协议支持:支持ICMP(用于网络诊断,如ping)、IGMP(用于组播管理)等协议。
  • 网络地址转换(NAT):在私有网络和公共网络之间转换IP地址,允许多个设备共享一个公共IP。
  • 拥塞反馈:通过ICMP协议报告网络拥塞状态,辅助传输层进行拥塞控制"。

2. 常见协议

  • IP(Internet Protocol):提供无连接的数据包传输服务,包括IPv4和IPv6。
  • ICMP:用于网络诊断和错误报告,如ping和traceroute。
  • IGMP:管理组播组成员,支持多播通信。
  • ARP:为网络层提供IP到MAC地址的解析,操作上依赖链路层(ARP归属为链路层协议)。
  • RIP/OSPF:动态路由协议,辅助路由选择

2.1. ICMP(互联网控制消息协议)

ICMP用于差错报告和网络诊断。

  • **错误报告:**当 IP 数据包在传输过程中因目的地不可达、路由超时等原因不能被正常转发或送达时,路由器或主机会利用 ICMP 向源主机发送差错报文,告知其具体的失败原因。
  • **网络诊断:**通过 "Echo Request/Reply" 机制(即 ping 命令),可以测试两台主机之间的连通性、往返时延(RTT)以及丢包率。

注意:ICMP不负责数据传输,仅用于控制和诊断。ICMP报文封装在IP数据包中,由网络层处理。

3. 常见设备

  • 路由器(Router):根据IP地址和路由表转发数据包,支持NAT(网络地址转换)和防火墙功能。
  • 三层交换机(Layer 3 Switch):结合链路层交换和网络层路由功能,根据IP地址进行快速转发。

第3层 传输层---TCP段或UDP数据报

负责在源主机和目的主机之间提供端到端的通信服务。根据所使用的协议,它可以确保数据的可靠传输(如TCP)或高效传输(如UDP)。传输层通过端口号标识应用程序,并提供流量控制、错误控制和连接管理等功能。

1. 传输层功能

  • 端到端通信:在源设备和目的设备之间建立和管理通信会话。
  • 数据分段与重组:将来自应用层的数据分割成适合网络传输的块(TCP称为段,UDP称为数据报),并在接收端按顺序重组。
  • 端口寻址:使用端口号区分不同的应用程序,实现数据的多路复用和解复用。
  • 流量控制:通过滑动窗口机制(如TCP)调节数据发送速率,避免网络拥塞。
  • 错误控制:检测数据包的丢失或损坏,并根据需要请求重传(TCP支持,UDP不支持)。
  • 连接管理:根据协议类型(如TCP面向连接,UDP无连接)建立、维护或终止连接。

2. 常见协议

2.1. TCP

是一种面向连接的、可靠的、基于字节流的传输层协议。
工作机制:通过三次握手建立连接,四次握手断开连接。

  • 面向连接:通信前必须"三次握手"建立连接,断开前"四次挥手"
  • 可靠性保障:通过序列号、确认号、重传机制、校验等方式
  • 有序交付:数据按顺序到达,不会乱(方法:序列号)
  • 流量控制:控制发送速率(方法:滑动窗口)
  • 拥塞控制:网络拥堵时主动降低数据传输速率(TCP慢启动等方法)
  • 双向通信:全双工(双向传输)
  • 错误检测:校验和保证数据不出错(方法:校验和等方法)

场景示例:

|-------|--------------------|--------------|
| 应用 | 协议 | 为什么用TCP? |
| 网页浏览 | HTTP/HTTPS | 要求完整、顺序、可靠 |
| 邮件 | SMTP / IMAP / POP3 | 邮件不可丢 |
| 文件传输 | FTP | 数据不可丢 |
| SSH远程 | SSH | 丢包或错包会导致断开连接 |

2.2. UDP

是一种无连接、不可靠、传输效率高的传输层协议。

  • 无连接:不建立连接,直接发包
  • 不可靠:不确认、不重传、不排顺序
  • 效率高:头部小(8字节),资源消耗低
  • 不保证顺序:包可能乱序到达

场景示例:

|--------|------------|-----------------|
| 应用 | 协议 | 为什么用UDP? |
| 视频/音频流 | RTP / VoIP | 一点丢包不影响整体体验 |
| DNS | DNS | 查询快,包小,可靠性交给应用层 |
| 游戏 | 自定义UDP协议 | 掉一帧画面也能玩 |

3. TCP三次握手与四次挥手

3.1. 名词讲解

复制代码
Seq:序列号(用于标识发送的数据字节流的顺序)每个 TCP 数据包(或段)都包含一个序列号。
SYN:表示该数据包用于发起连接请求或响应连接请求。
ACK:表示该数据包包含确认信息,用于通知发送方已成功接收某些数据。
FIN:表示发送方已完成数据发送,请求终止连接。

3.2. 三次握手

复制代码
客户端 <------------- 三次握手 -------------> 服务端
  | -------------> SYN, Seq=x -------------> |	
        #客户端发起连接,客户端数据包的初始序列号为x
  | <------- SYN+ACK, Seq=y, Ack=x+1 ------- |	
        #服务端响应客户端的连接请求,并且告知客户端我确认收到了请求。
        #服务端数据包的初始序列号为y,希望客户端的下一个数据包使用x+1
  | -------> ACK, Seq=x+1, Ack=y+1 --------> |
        #客户端响应服务端的连接请求,并告知服务端我确认收到了请求。
        #该数据包的序列号为x+1,希望服务端的下一个数据包使用y+1
        #连接建立,双方进入ESTABLISHED(连接状态)

3.3. 数据传输

复制代码
客户端 <------------- 数据传输 -------------> 服务端
  | -------> Seq=x+1, Ack=y+1 (1 byte) ----> |
    #客户端发送1字节数据,希望服务端的下一个数据包使用y+1
    #该包的序列号为x+1,这里假设传输的是1字节数据,所以是x+1。
    #如果是100字节数据,那就是x+101。x+101是下一个包的起始序列号
  | <----------- ACK, Seq=y+1, Ack=x+2 ----- |
    #服务端确认收到数据,希望客户端的下一个数据包使用x+2。
    #该包的序列号为y+1

3.4. 四次挥手

复制代码
客户端 <------------- 四次挥手 -------------> 服务端
  | ---------> FIN, Seq=x+2, Ack=y+1 ------> |
    # 客户端发送FIN请求断开连接,希望服务端的下一个数据包使用y+1
    # 该包的序列号为x+2,延续数据传输后的序列号
    # FIN占用一个序列号,类似数据传输的1字节
  | <-------- ACK, Seq=y+1, Ack=x+3 -------- |
    # 服务端确认收到客户端的FIN,希望客户端的下一个数据包使用x+3
    # 该包的序列号为y+1
  | <--------- FIN, Seq=y+1, Ack=x+3 ------- |
    # 服务端发送FIN请求断开连接,希望客户端的下一个数据包使用x+3
    # 该包的序列号为y+1,延续服务端的序列号
  | --------> ACK, Seq=x+3, Ack=y+2 -------> |
    # 客户端确认收到服务端的FIN,希望服务端的下一个数据包使用y+2
    # 该包的序列号为x+3,连接即将关闭

3.5. 整体流程

复制代码
客户端 <------------- 三次握手 -------------> 服务端
  | -------------> SYN, Seq=x -------------> |	
  | <------- SYN+ACK, Seq=y, Ack=x+1 ------- |	
  | -------> ACK, Seq=x+1, Ack=y+1 --------> |
客户端 <------------- 数据传输 -------------> 服务端
  | -------> Seq=x+1, Ack=y+1 (1 byte) ----> |
  | <----------- ACK, Seq=y+1, Ack=x+2 ----- |
客户端 <------------- 四次挥手 -------------> 服务端
  | ---------> FIN, Seq=x+2, Ack=y+1 ------> |
  | <-------- ACK, Seq=y+1, Ack=x+3 -------- |
  | <--------- FIN, Seq=y+1, Ack=x+3 ------- |
  | --------> ACK, Seq=x+3, Ack=y+2 -------> |

4. 常见设备

  • 网关:在传输层进行协议转换,如将TCP/IP数据转换为其他协议。
  • 负载均衡:根据端口号分发流量,优化服务器性能。

第4层 应用层

负责为用户应用程序提供网络服务和通信接口。它处理数据的格式化、表示、加密以及会话管理,确保应用程序能够通过网络进行有效通信。

1. 应用层功能

  • 网络服务提供:为应用程序(如浏览器、邮件客户端、文件传输工具)提供通信功能,支持网页浏览、文件传输、电子邮件发送和接收等。
  • 数据格式化:将应用程序的数据转换为网络可传输的格式(如HTTP请求、FTP命令),并在接收端将数据还原为应用程序可识别的格式。
  • 会话管理:管理应用程序之间的通信会话,包括会话的建立、维护和终止。
  • 安全性:通过协议内置的加密和认证机制(如HTTPS中的TLS/SSL)保护数据传输的安全性。
  • 资源定位:通过DNS(域名系统)将域名解析为IP地址,帮助用户访问网络资源。
  • 用户认证:通过协议(如FTP、SMTP、SSH)验证用户身份,确保访问安全。

2. 常见协议

  • HTTP/HTTPS(超文本传输协议/安全超文本传输协议) :用于网页浏览,HTTPS提供加密保护。
  • DHCP(动态主机配置协议):动态分配IP地址,简化网络配置
  • FTP(文件传输协议):用于在网络上上传和下载文件。
  • SMTP(简单邮件传输协议):用于发送电子邮件。
  • POP3/IMAP(邮局协议/互联网消息访问协议):用于从邮件服务器接收电子邮件。
  • DNS(域名系统):将域名(如www.baidu.com)解析为IP地址。
  • Telnet/SSH(远程登录协议/安全Shell协议):用于远程登录到网络设备,SSH提供加密保护。

3. 常见软件

  • Web服务器:如Apache、Nginx、IIS,提供网页内容。
  • DNS服务器:如BIND,负责域名解析。
  • 客户端应用程序:如浏览器(Chrome、Firefox)、邮件客户端(Outlook、Thunderbird)

如果按照设备划分的话可分为:

服务器(Server):提供网络服务,如:Web服务器、邮件服务器等

客户端(Client):请求服务的设备:如电脑或手机

TCP/IP通信流程

1. 发送端

  • 应用层:在浏览器输入某网址,浏览器通过HTTP协议生成请求数据(例如GET /index.html)。
    • 若使用HTTPS,数据会通过SSL/TLS加密,准备发送给Web服务器。
  • 传输层:数据被分割成小块(Segment),添加TCP头部,形成TCP段。
    • TCP头部包含源端口(随机端口,如49152)、目标端口(通常为80或443)、序列号、确认号和校验和,用于确保可靠传输。
  • 网络层:TCP段被封装成IP数据包,添加IP头部,包含源IP地址和目的IP地址。
    • 若使用IPv4,头部还包括协议类型(TCP)。
  • 链路层:IP数据包被封装成数据帧,添加链路层头部(如以太网头部,包含源MAC地址和目标MAC地址)和尾部(如CRC校验),通过网卡准备发送到局域网。
    • 数据帧通过物理介质(如网线、Wi-Fi)转换为电信号、光信号或无线信号传输到网络。

2. 接收端

  • 链路层:接收电信号、光信号或无线信号,转换为数据帧。
    • 检查MAC地址是否匹配,验证帧的完整性(通过CRC校验),剥离链路层头部和尾部,提取IP数据包。
  • 网络层:解析IP数据包,检查目的IP地址是否匹配本地设备,剥离IP头部,提取TCP段,传递给传输层。
    • 若需跨网络,路由器会根据IP地址转发数据包。
  • 传输层:解析TCP段,检查端口号(例如80或443)以确定目标应用,验证序列号确保数据按序到达,剥离TCP头部,重组数据段,传递给应用层。
    • 若数据丢失,触发重传机制。
  • 应用层:Web服务器接收HTTP请求数据(若为HTTPS,解密SSL/TLS数据),处理请求,生成响应数据(如HTML网页内容),并通过相同流程返回给客户端。

TCP/IP数据解封装

相关推荐
Alfadi联盟 萧瑶2 小时前
网络协议与通信安全
网络·网络协议
兴达易控4 小时前
ModbusRTU转profibusDP网关与RAC400控制器快速通讯
网络协议
奕天者5 小时前
计算机网络学习(五)——TCP
学习·tcp/ip·计算机网络
Leo Han7 小时前
apache http client连接池实现原理
网络协议·http·apache
爬点儿啥8 小时前
[爬虫知识] IP代理
服务器·网络·爬虫·python·tcp/ip·代理
supingemail10 小时前
深度剖析 MCP SDK 最新版:Streamable HTTP 模式
网络·网络协议·http
九州ip动态11 小时前
自媒体运营新利器:账号矩阵+指纹浏览器,解锁流量密码
网络·网络协议·tcp/ip
xx240612 小时前
什么是HTTP
网络·网络协议·http
某个默默无闻奋斗的人12 小时前
HTTP基本概述
网络·网络协议·http