(chap2 TCP/IP基础知识) TCP/IP分层模型的通信流程

2024-03-28 09:32

本文主要是介绍(chap2 TCP/IP基础知识) TCP/IP分层模型的通信流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 每个分层中,都会对所发送的数据附件一个首部,在这个首部中包含了该层次必要的信息,如发送的目标地址以及协议相关信息。
在这里插入图片描述

1.1 数据单位


  • 全能性术语。

  • 表示数据链路层中包的单位。
  • 数据报
    IP和UDP 等网络层以上的分层中包的单位。

  • 表示TCP数据中流的信息。
  • 消息
    指应用协议中数据的单位。

网络中传输的数据包由两部分组成,首部加数据。首部用来标明协议如何读取数据。

1.2 经过数据链路层的包:每个包首部中至少都会有两个信息,一个为发送端和接受端地址,另一个为上一层协议类型。

1.2.1 TCP包首部

  • 以太网:MVC地址
  • IP:IP地址
  • TCP/UDP:端口号

1.2.2 IP包首部

  • 接受端IP地址
  • 发送端IP地址
  • 用来判断其后数据是TCP还是UDP的信息。

1.2.3 以太网包首部

  • 接受端的MAC地址
  • 发送端MAC地址
  • 标志以太网的类型数据

在这里插入图片描述

2. 通信流程(以发送邮件为例)

2.1 发送流程

step1. 应用程序处理

应用程序会进行编码处理(ISO表示层),建立通信连接发送数据(ISO会话层),在发送邮件的时候建立TCP连接。

step2.TCP模块处理

  • 根据应用的指示,负责建立连接,发送数据以及断开连接。
  • TCP提供将应用层发来的数据帧顺利的发送到对端的可靠传输。需要在应用层数据前端附件TCP首部,(包含源端口号和目标端口号,序号(发送的是包中那部分数据)以及校验和(判断数据是否损坏),之后将附加TCP首部的包发给IP。

step3.IP模块处理

将TCP传过来的TCP首部和TCP数据合起来当做自己的数据,并在TCP首部的前端在加上自己的IP首部。

IP包生成后参考路由控制表决定接受此IP包的路由或主机,IP包将被发送给连接路由器或主机网络接口的驱动程序,可以利用ARP查找IP地址对应的MAC地址。

step4.网络接口(以太网驱动)的处理

从IP传过来IP包,以太网驱动会在数据上附加以太网首部并进行发送处理,以太网数据包通过物理层传输给接收端。FCS由硬件计算,添加到包的最后(判断数据包是否被破坏)。

在这里插入图片描述

2.2 接收数据流程(接受处理是发送端的逆序过程)

step5. 网络接口(以太网驱动)的处理

主机收到以太网包后,从以太网的包首部找到MAC地址判断是否发给自己

  • 若不是,就丢弃数据。
  • 若是,就查找以太网包首部中的类型域从而确定以太网协议所传送过来的数据类型。

step6. IP模块的处理

a. 判断得出包首部中的IP地址与自己的IP地址匹配
b. 若匹配,接受数据并从中查找上一层协议,如果为TCP就给TCP处理,如果为UDP就给UDP处理
c. 接收端地址往往不是自己的地址,需要借助路由控制表找到应该送往的主机或路由器。

step7. TCP模块处理

a. 计算一下校验和,判断是否被破坏
b. 检查是否是按照序号接收数据
c. 检查端口号,确定具体的应用程序。
d. 数据接收完成会返送“确认回执”,若接收端未能接收,发送端会一直发送。

step8. 应用程序的处理

接收端应用程序会直接接收发送端发送的数据,如果未能成功接收,就发送一个“处理异常”的回执给发送端。

3. eg. SNS(Social Network Service ),社交网络是一种即使共享,使发布消息该圈内特定联系人的一种服务。
在这里插入图片描述

这篇关于(chap2 TCP/IP基础知识) TCP/IP分层模型的通信流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/855205

相关文章

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

Linux配置IP地址的三种实现方式

《Linux配置IP地址的三种实现方式》:本文主要介绍Linux配置IP地址的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录环境RedHat9第一种安装 直接配置网卡文件第二种方式 nmcli(Networkmanager command-line

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM