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

计算机网络体系结构解析

OSI参考模型 与 TCP/IP模型

如图所示
image-20240707093716664

TCP/IP模型有几层

  • 应用层:只需要专注于为用户提供应用功能 HTTP、SMTP、Telnet等,工作在操作系统中的用户态,传输层及以下工作在内核态
  • 传输层:为应用层提供网络支持(TCP、UDP传输协议);传输的数据量非常大的场景下就需要将数据包进行分块,即使丢了只需要重新发送该块就可以。(如何区分一台设备上多个应用在接收传输数据时选择哪一个应用? 使用端口号来进行区分 80、22)
  • 网络层:将数据从一个设备传输到另一个设备,一般使用的IP协议进行传输 (寻址能力实现网络号查找朝哪个方向走、路由实现选择这个方向的最优路径)
  • 网络接口层:主要为网络层提供链路级别的传输服务,负责在以太网、wifi这样的底层网络上发送原始数据包,使用MAC地址来标识网络上的设备。

问题一:为什么要设计分层?

通过分层可以将庞大的网络问题,转化为若干个较小的局部问题,较小的局部问题解决和处理起来就比较的容易。通过分层能够细分通信功能,更易于单独实现每个分层的协议,并界定各个分层的具体责任和义务从而解决计算机在通信过程中遇到的实际问题。劣势在于过分模块化,使得处理变得更加沉重以及每个模块都不得不实现相似的处理逻辑。

问题二:模型中每一层的作用和顺序关系?

物理层(硬件):解决计算机之间的传输媒介和信号发送问题 【解决使用何种信号来传输比特的问题】 TCP/IP协议是在网络互连的设备之间能够通信的前提下被提出的

数据链路层(网络接口层):解决主机编址、如何从比特流中区分出地址和数据、协调各主机争用总线 【解决分组在一个网络上传输的问题】

网络层(互联网层):解决网络和主机共同编址的问题、路由器如何分组转发选择最优路径的问题 【解决分组在多个网络上传输的问题】 IP协议基于IP地址转发分包数据,不具有重发机制,属于非可靠性传输协议; ICMP用来发送异常通知,IP数据包在发送途中发生异常无法到达对端目标地址的场景下; ARP 从分组数据包的IP地址中解析出MAC地址的协议

运输层:解决进程之间基于网络的通信问题 端口号用来标识应用程序(服务器响应之后应该回传给那个进程)、出现传输错误如何处理 【解决进程之间基于网络通信的问题】 TCP \ UDP

应用层:通过应用进程间的交互来完成特定的网络应用

网络传输流程:

主机发送http请求报文,通过路由器转发到对应的服务器,服务器接收到之后返回相对应的http响应报文的数据,通过路由器转发给对应的主机 【实际上是主机里面的浏览器进程与服务器中的web服务器进程之间基于网络的通信】

image-20240707104430249

举个邮件发送的例子

(发送端沿着OSI模型的七层结构向下传输数据,接收端沿着七层结构向上传输数据)

A给B发送一封电子邮件的过程:

【发送过程】:A在电子邮件应用程序中编写邮件,点击"发送",程序将邮件传递到应用程序层,该层选取对应的协议再将数据传递到表示层。接着表示层压缩数据,将数据传递到会话层,会话层初始化通信会话后,接着数据到达发送方的传输层,在该层进行数据分段,然后到网络层后将数据段分解为数据包,然后在数据链路层中进一步分解为帧。随后数据链路层将这些帧传输到物理层,物理层将数据转换为位流1和0,最后通过物理介质发送数据。

【接收过程】:B的计算机物理介质接收到位流之后,数据沿着七层结构向上传输数据。首先物理层将位流转为帧,传递到数据链路层。然后数据链路层将帧重组为数据包,供网络层使用。接着网络层将数据包重组为数据段供传输层使用,传输层再将数据段重组为数据片段。随后数据流入B的会话层,该层将数据传递到表示层并结束通信会话。表示层解压数据并将原始数据传递到应用程序层。应用程序层将人们能够可读的数据传递到B的电子邮件软件中,然后就能收到并阅读A传递过来的电子邮件。

IP TCP DNS的关系

IP: 【网络层】

  • 作用:负责可靠传输数据包给对方
  • 前置条件:IP地址和MAC地址 (MAC地址基本不会更改)
  • ARP是一种解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址

TCP:【传输层】

  • 作用:提供可靠的字节流服务方便数据传输
  • 前置条件:三次握手保证通信的可靠

DNS:【应用层】

  • 作用:提供域名到IP地址之间的解析服务
  • 原因:域名相较于IP地址更加方便记忆

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微生活服务平台与元宇宙的融合
  • 《长相思》第二季回归:好剧质量,永恒的王牌
  • 常用录屏软件,分享这四款宝藏软件!
  • C++ STL iter_swap用法和实现
  • 视频汇聚平台EasyCVR设备录像回看请求播放时间和实际时间对不上,是何原因?
  • FPGA设计之跨时钟域(CDC)设计篇(2)----如何科学地设计复位信号?
  • Conda:Python环境管理的瑞士军刀
  • Oracle基础以及一些‘方言’(一)
  • 【C++】AVL树(旋转、平衡因子)
  • Python高级(三)_正则表达式
  • 小抄 20240709
  • C++ 【 Open3D 】 点云按高程进行赋色
  • 爱丽丝梦游仙境,把大模型打回原形
  • Git分支结构
  • 衣服、帽子、鞋子相关深度学习数据集大合集(2)
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Javascript 原型链
  • Js基础知识(四) - js运行原理与机制
  • Netty 4.1 源代码学习:线程模型
  • php ci框架整合银盛支付
  • PHP那些事儿
  • Python中eval与exec的使用及区别
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • Wamp集成环境 添加PHP的新版本
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 对超线程几个不同角度的解释
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 微信开源mars源码分析1—上层samples分析
  • 写给高年级小学生看的《Bash 指南》
  • 正则学习笔记
  • 追踪解析 FutureTask 源码
  • Mac 上flink的安装与启动
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • "无招胜有招"nbsp;史上最全的互…
  • # linux 中使用 visudo 命令,怎么保存退出?
  • #Lua:Lua调用C++生成的DLL库
  • (09)Hive——CTE 公共表达式
  • (160)时序收敛--->(10)时序收敛十
  • (2)(2.10) LTM telemetry
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (ros//EnvironmentVariables)ros环境变量
  • (vue)页面文件上传获取:action地址
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二)fiber的基本认识
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (杂交版)植物大战僵尸
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)视频码率,帧率和分辨率的联系与区别
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .net 4.0发布后不能正常显示图片问题
  • .Net 6.0--通用帮助类--FileHelper