【计算机网络】详解TCP/IP分层模型局域网和跨网络通信的原理

news2024/12/25 0:27:00

一、网络协议

两个概念:交换机:实现位于同一个子网中的主机数据交换。路由器:实现数据包的跨网络转发。

两台主机的距离变远了,会引发出一系列问题:

1、如何使用数据的问题

2、数据的可靠性问题

3、主机定位问题

4、数据报局域网转发问题

为了解决这些问题,就有网络协议,也就是TCP/IP协议。网络协议是层状结构的。 

二、OSI七层模型

 在实践中,一般将会话层、表示层、应用层统一称为应用层,由用户自主实现。

2.1、TCP/IP五层(或四层)模型

        TCP/IP是一组协议的代名词,它还包括许多协议,组成了 TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型。
物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层。
数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层。
网络层: 负责地址管理和路由选择.。例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层。
传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机。
应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等.。我们的网络编程主要就是针对应用层。

TCP/IP协议是在操作系统内部实现的,网络也属于操作系统源代码的一部分。 因为操作系统是用C语言实现的,所以TCP/IP协议也是用C语言实现的。

如何使用数据的问题是由应用层解决的,数据的可靠性问题是由传输层解决的,主机定位问题是由网络层解决的,数据报局域网转发问题是由数据链路层解决的

三、局域网通信

        同一个局域网中的主机可以直接通信,这就是以太网的通信原理。局域网中所有的主机都接在同一根网线上,如果当两个主句同时向网络中发送消息时,就有可能发生数据碰撞问题,发送消息的主机需要进行碰撞的检测和避免。任何一个局域网就是一个碰撞域,任何时刻只允许一台主机在局域网中发送消息(以太网)。 局域网本质就是一个临界资源。局域网中如果主机太多了,为了减少数据碰撞,就要有交换机了。

3.1、Mac地址

        Mac地址是一种硬件地址,每一台主机上(手机、电脑)都会有网卡,网卡在出厂的时候就内置了一个序列号,这个序列号是全球唯一的。这个序列号就叫做Mac地址(48位)。

        MAC地址用来识别数据链路层中相连的节点;长度为48位,及6个字节。 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19) 在网卡出厂时就确定了,不能修改。mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突;也有些网卡支持用户配置mac地址)。

 3.2、局域网通信原理

        消息不能凭空从一个主机直接发送给另一个主机,必须通过物理介质。当一个主机想要给另一个主机发送一条消息时,在每一层上都要添加协议报头。所谓的添加协议报头,就是在一串二进制数据的前面添加一个固定的结构体对象。报文不断自顶向下进行交付的过程,要添加每一层协议报头,这个过程叫做封装。

数据加上上面层所封装的报头称之为该层的有效载荷。报文为协议报头+有效载荷每一层的报文都有各自的叫法,自顶向下分别为request/response,数据段,数据报,数据帧。

当另一台主句获取了报文以后,就要对该报文进行解包和分用。解包是指将报头和有效载荷进行分离,分用是将自己的有效载荷交给上层的协议在逻辑上,同层协议都可以认为自己在与对方直接通信

四、横跨路由器的网络通信

        路由器至少要横跨两个网络,所以路由器要有两张网卡,也就意味着路由器会有两个Mac地址。数据在转发的过程中会存在两套地址,一套是源IP地址和目的IP地址,另一套为源Mac地址和目标Mac地址。

        如上图所示,当报文传送到网络层时,添加的网络层报头中包含了源IP地址和目的IP地址(也包括源端口号和目标端口号),传送到数据链路层时,添加的数据链路层报头中包含了源Mac地址和目标Mac地址,通过目标Mac地址路由器获取报文,通过解包分用再封装添加新的数据链路层报头,交由对应的网卡接收。在网络层及网络层以上,发送方和接收方收到的东西完全相同,这样就屏蔽了各局域网的数据链路层的区别底层Mac地址的转化全都由路由器帮我们做了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

<<编码>> 第 14 章 反馈与触发器(2)--或非门反馈 示例电路

或非门反馈电路 info::操作说明 先闭合上面的开关(置位 Set), 此时输出高电平 再断开上面的开关, 因反馈的存在, 输出保持为高电平 闭合下面的开关(复位 Reset), 输出重新回到低电平 断开下面的开关, 输出继续保持低电平 primary::在线交互操作链接 https://cc.xiaogd.net/…

产品经理有必要学习大模型技术吗?

第一,大模型正在成为各类产品的核心组件,颠覆了传统产品和应用生态,进入AI大模型应用的新阶段。 例如,NewBing、Perplexity等AI搜索产品已经颠覆了传统搜索引擎的搜索模式,用户不用搜索后再点开排序靠前的网页链接&am…

Linux常见查看文件命令

目录 一、cat 1.1. 查看文件内容 1.2. 创建文件 1.3. 追加内容到文件 1.4. 连接文件 1.5. 显示多个文件的内容 1.6. 使用管道 1.7. 查看文件的最后几行 1.8. 使用 -n 选项显示行号 1.9. 使用 -b 选项仅显示非空行的行号 二、tac 三、less 四、more 五、head 六、…

十八,Spring Boot 整合 MyBatis-Plus 的详细配置

十八,Spring Boot 整合 MyBatis-Plus 的详细配置 文章目录 十八,Spring Boot 整合 MyBatis-Plus 的详细配置1. MyBatis-Plus 的基本介绍2. Spring Boot 整合 MyBatis Plus 的详细配置3. Spring Boot 整合 MyBatis plus 注意事项和细节4. MyBatisx 插件的…

《微处理器系统原理与应用设计第十三讲》通用同/异步收发器USART轮询模式应用设计

USART提供两设备之间的串行双工通信,并支持中断和DMA工作。采用轮询、中断和DMA三种方式进行数据收发。 一、功能需求 实现远程串行通信数据的回传确认。微处理器系统构成的测控设备通过USART(串口)与用户设备(上位机&#xff0…

学习使用SQL Server Management Studio (SSMS)

SQL Server Management Studio (SSMS) 是一个集成环境,用于管理任何SQL基础设施,从SQL Server到Azure SQL数据库。SSMS提供了各种工具来配置、监控和管理SQL Server的实体和组件。以下是一篇详细的使用指南,涵盖了SSMS的主要功能和操作。 1.…

感谢问界M9一打二十,让我们买到这么便宜的BBA

文 | AUTO芯球 作者 | 雷慢 国产豪华车,终于扬眉吐气了, 你敢信吗?在50万以上豪华车中, 现在问界M9一款车的月销量, 是其他前20名销量的总和! 要知道,它的对手是各种宝马、奔驰、雷克萨斯的…

基于python+django+vue的医院预约挂号系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

APP测试基本流程与APP测试要点总结

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 APP测试实际上依然属于软件测试的范畴,是软件测试的一个真子集,所以经典软件测试理论,依然是在APP测试中有效的,只…

RocketMQ实战与集群架构详解

目录 一、MQ简介 MQ的作用主要有以下三个方面 二、RocketMQ产品特点 1、RocketMQ介绍 2、RocketMQ特点 三、RocketMQ实战 1、快速搭建RocketMQ服务 2、快速实现消息收发 1. 命令行快速实现消息收发 2. 搭建Maven客户端项目 3、搭建RocketMQ可视化管理服务 4、升级分…

镀金引线---

一、沉金和镀金 沉金和镀金都是常见的PCB金手指处理方式,它们各有优劣势,选择哪种方式取决于具体的应用需求和预算。 沉金(ENIG)是一种常用的金手指处理方式,它通过在金手指表面沉积一层金层来提高接触性能和耐腐蚀性…

【鸿蒙 HarmonyOS NEXT】popup弹窗

一、背景 给组件绑定popup弹窗,并设置弹窗内容,交互逻辑和显示状态。 常见场景:点击按钮弹出popup弹窗,并对弹窗的内容进行交互逻辑处理,如:弹窗内点击跳转到其他页面 二、给组件绑定Popup弹窗 PopupOp…

【重学 MySQL】三十四、加密与解密函数

【重学 MySQL】三十四、加密与解密函数 在 MySQL 中,加密与解密函数是保护数据安全的重要手段,它们允许开发者在存储和传输敏感数据时保持数据的保密性。 函数名描述返回值类型备注AES_ENCRYPT(str, key_str)使用 AES 算法加密字符串BLOB返回加密后的二…

Quartz框架介绍

一、何为Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组…

【每日刷题】Day125

【每日刷题】Day125 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 17. 电话号码的字母组合 - 力扣(LeetCode) 2. LCR 080. 组合 - 力扣&#…

数字IC设计\FPGA 职位经典笔试面试整理--语法篇 Verilog System Verilog(部分)

注: 资料都是基于网上一些博客分享和自己学习整理而成的 Verilog 1. 数据类型 Verilog一共有19种数据类型 基础四种数据类型:reg型,wire型,integer型,parameter型 reg型   reg类型是寄存器数据类型的关键字。寄存…

VBS学习1 - 语法、内置函数、内置对象

文章目录 概述执行脚本语法转义字符文本弹框msgbx定义变量dim(普通类型)定义接收对象set字符拼接&用户自定义输入框inputbox以及输入判断ifelse数组(参数表最大索引,非数组容量)有容量无元素基于元素确定容量 循环…

解密.bixi、.baxia勒索病毒:如何安全恢复被加密数据

导言 在数字化时代,数据安全已成为个人和企业面临的重大挑战之一。随着网络攻击手段的不断演进,勒索病毒的出现尤为引人关注。其中,.bixi、.baxia勒索病毒是一种新型的恶意软件,它通过加密用户的重要文件,迫使受害者支…

Java-数据结构-优先级队列(堆)-(一) (;´д`)ゞ

文本目录: ❄️一、优先级队列: ➷ 1、概念: ❄️二、优先级队列的模拟实现: ➷ 1、堆的概念: ➷ 2、堆的性质: ➷ 3、堆的创建: ▶ 向下调整: ➷ 4、堆的插入和删除: …

Java 值传递与引用传递

以下是包含引用的完整博客文章,以markdown格式输出,附带“Java 只有值传递”的相关参考来源。 Java 是一种广泛使用的面向对象编程语言,但对于值传递(pass by value)和引用传递(pass by reference&#xff…