文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

聊聊 TCP/IP 协议处理流程

2024-12-13 21:29

关注

​当用户使用 TCP/IP 应用层协议的命令时,会启动一系列事件。用户的命令或消息通过本地机器上的 TCP/IP 协议栈,然后通过网络介质到达接收者的协议。发送主机上每一层的协议将信息添加到原始数据中。

当用户的命令通过协议栈时,发送主机每一层的协议也与接收主机上的对等方交互。

数据封装和 TCP/IP 协议栈

数据包是通过网络传输的信息的基本单元,至少由包含发送和接收主机地址的标头和包含要传输的数据的主体组成。当数据包通过 TCP/IP 协议栈时,每一层的协议在基本报头中添加或删除字段。当发送主机上的协议将数据添加到数据包头时,该过程称为数据封装。此外,每一层对修改后的数据包都有不同的术语,如下图所示。

本文总结了数据包的生命周期,从用户发出命令或发送消息到接收主机上的相应应用程序接收到数据包。

应用层——用户发起通信

当一个主机上的用户发送消息或发出必须访问远程主机的命令时,数据包的历史就开始了。与命令或消息相关的应用协议对数据包进行格式化,以便它可以由适当的传输层协议 TCP 或 UDP 处理。

假设用户发出rlogin命令登录远程主机,该rlogin命令使用 TCP 传输层协议。TCP 期望以包含命令中信息的字节流的形式接收数据。因此,rlogin将此数据作为 TCP 流发送。

然而,并非所有应用层协议都使用 TCP。假设用户想在远程主机上挂载一个文件系统,从而启动 NIS+ 应用层协议。NIS+ 使用 UDP 传输层协议。因此,包含命令的数据包必须以 UDP 期望的方式格式化。这种类型的数据包称为消息。

传输层——数据封装开始

当数据到达传输层时,该层的协议启动数据封装过程。最终结果取决于 TCP 或 UDP 是否处理了信息。

(1) TCP 分段

TCP 通常被称为“面向连接”的协议,因为它确保将数据成功传送到接收主机。上图显示了 TCP 协议如何接收来自rlogin命令的流。TCP 将从应用层接收到的数据分成多个段,并在每个段上附加一个标头。

段标头包含发送方和接收方端口、段排序信息和称为校验和的数据字段。两台主机上的 TCP 协议使用校验和数据来确定数据是否已正确传输。

(2) 建立 TCP 连接

TCP 使用段来确定接收主机是否准备好接收数据。当发送 TCP 想要建立连接时,它会向运行在接收主机上的对等 TCP 协议发送一个称为 SYN 的段。接收 TCP 返回一个称为 ACK 的段,以确认该段的成功接收。发送 TCP 发送另一个 ACK 段,然后继续发送数据。这种控制信息的交换被称为三次握手。

(3) UDP 数据包

UDP 是一种“无连接”协议。与 TCP 不同,它不检查以确保数据到达接收主机。相反,UDP 接收从应用层接收到的消息并将其格式化为UDP 数据包。UDP 为每个数据包附加一个标头,其中包含发送和接收主机端口、包含数据包长度的字段和校验和。

发送 UDP 进程尝试将数据包发送到接收主机上的对等 UDP 进程。应用层确定接收 UDP 进程是否确认接收到数据包。UDP 不需要接收通知。UDP 不使用三次握手。

互联网层

TCP 和 UDP 都将它们的段和数据包向下传递到 Internet 层,由 IP 协议处理它们。IP 通过将它们格式化为称为 IP 数据报的单元来为交付做好准备。然后 IP 确定数据报的 IP 地址,以便将它们有效地传递给接收主机。

(1) IP数据报

除了 TCP 或 UDP 添加的信息之外,IP 还会将 IP 标头附加到段或数据包的标头。IP 头中的信息包括发送和接收主机的 IP 地址、数据报长度和数据报序列顺序。如果数据报超过网络数据包允许的字节大小并且必须分段,则提供此信息。

数据链路层——成帧

数据链路层协议(如 PPP)将 IP 数据报格式化为帧。他们附加第三个页眉和一个页脚来“框定”数据报。帧头包括一个循环冗余校验(CRC) 字段,用于在帧通过网络介质传输时检查错误。然后数据链路层将帧传递给物理层。

物理网络层——为传输准备帧

发送主机上的物理网络层接收帧并将 IP 地址转换为适合网络介质的硬件地址。然后物理网络层通过网络介质将帧发送出去。

接收主机如何处理数据包

当数据包到达接收主机时,它会按照与发送方相反的顺序通过 TCP/IP 协议栈。上图说明了这条路径。此外,接收主机上的每个协议都会剥离发送主机上的对等方附加到数据包的标头信息。这是发生的事情:

来源:弱电文档内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯