深入浅出计算机网络基石:详解 OSI 模型、TCP/IP 模型及数据通信全过程
前言大家好这里是程序员阿亮今天也是在公司里面当起黑奴了实习生大小周不包饭吃公司饭还要收钱。。。但是博客还是要写滴今天来给大家讲解一下OSI七层模型和TCP/IP模型这是计算机网络中的基础架构也是我们计算机网络通信的基本规则。在互联网时代我们在微信上发的一条消息、在浏览器里输入的一个网址只需毫秒之间就能跨越千山万水到达对方屏幕上。这一切看似变魔术般的背后隐藏着一套极其精密且严谨的规则。如果全世界的计算机没有统一的“语言”和“礼仪”它们就会像建巴别塔的人类一样因为无法沟通而陷入混乱。为了解决这个问题网络专家们制定了网络分层模型OSI 参考模型和TCP/IP 模型。一、理论上的完美教科书OSI 七层模型OSIOpen Systems Interconnection开放系统互连模型是由国际标准化组织ISO在 1984 年提出的。它将网络通信的工作分为 7 个层级。虽然在实际应用中它显得有些过于繁琐但它是理解网络通信逻辑的最佳“教科书”。但是不是最佳实践在常用的分层模型中一般是简化为五层或者四层的TCP/IP模型。我们就自顶向下从上到下第 7 层 - 第 1 层来拆解它第 7 层应用层 (Application Layer)职责这是最靠近用户的一层负责为计算机上的应用程序提供网络服务。它不指应用程序本身比如 Chrome 浏览器而是指应用程序所使用的通信协议。常见协议HTTP/HTTPS (网页浏览)、FTP (文件传输)、SMTP/POP3 (电子邮件)、DNS (域名解析)。也就是说应用层如其名是在应用层面的交互是我们应用程序与网络交互的协议栈第 6 层表示层 (Presentation Layer)职责负责数据的翻译、加密、解密和压缩。它确保发送方发送的数据接收方能够看得懂。工作内容将本地字符集转换为标准格式如 ASCII 或 UTF-8对图像视频流进行编解码JPEG, MPEG对敏感数据进行 TLS/SSL 加密。也就是说表示层一般是对数据进行加密、解密、格式转换等的层第 5 层会话层 (Session Layer)职责负责在网络中的两台设备之间建立、管理和终止会话。它可以在数据传输中断时提供恢复点检查点实现断点续传。常见协议RPC, NetBIOS。在现代开发中一般会话层是被整合到了应用层表示层也是现在会话的管理一般是基于Token/Cookie等来实现第 4 层传输层 (Transport Layer)职责负责端到端End-to-End的数据传输。它不仅将大块数据切割成小块分段还负责通过“端口号”区分这些数据是给哪个应用程序的比如 80 端口给网页22 端口给 SSH。它还决定了传输的可靠性要求。核心协议TCP传输控制协议可靠、需建立连接、保证数据不丢不乱像寄挂号信。UDP用户数据报协议速度快、不建立连接、不保证送达像寄明信片。需要注意的是传输层是端对端的是可以区分不同的应用程序的第 3 层网络层 (Network Layer)职责负责在不同的网络之间比如从你家局域网到国外的服务器寻找最佳路径并进行逻辑寻址。核心概念/协议IP 协议IPv4/IPv6、IP 地址、路由器。第 2 层数据链路层 (Data Link Layer)职责负责在同一个本地网络相邻节点内进行数据传输并将物理层的电信号组装成有意义的数据帧。它还负责物理寻址和错误检测。核心概念/协议MAC 地址、以太网Ethernet、Wi-Fi802.11、交换机。这里大家可能有疑惑网络层是逻辑寻址也就是逻辑寻址 路由选择区分不同网络/子网而数据链路层是物理寻址物理寻址区分同一局域网内不同设备简单说就是每经过一个路由器数据链路层的源/目的 MAC 地址都会重写但传输层的端口和网络层的 IPNAT 除外全程保持不变。第 1 层物理层 (Physical Layer)职责最底层负责传输原始的比特流0 和 1。它定义了硬件设备的机械、电子、功能和过程特性。核心概念网线双绞线、光纤、无线电波、中继器、集线器。二、TCP/IP模型我们会发现实际上OSI模型划分的很细看起来很完美但是在实践中并不多用在实践中我们基本上都是使用TCP/IP的五层或者四层模型。OSI 七层模型TCP/IP 四层模型TCP/IP 五层对等模型 (常用教学)核心协议应用层应用层 (Application)应用层HTTP, FTP, DNS, SMTP表示层会话层传输层传输层 (Transport)传输层TCP, UDP网络层网络层 / 互联网层 (Internet)网络层IP, ICMP, ARP数据链路层网络接口层 (Network Access)}数据链路层Ethernet, Wi-Fi, MAC物理层物理层光纤, 双绞线 (0101信号)为什么TCP/IP更受青睐呢因为它“重实效”。它把 OSI 中过于细化、很多时候用不到的表示层和会话层直接打包进了应用层并把关注点集中在了保证网络连通的核心IP找路和TCP保证送达上。三、数据通信全流程了解了层级接下来我们看看当我们在浏览器输入 www.example.com 并按下回车时数据到底经历了什么这个过程分为发送端的封装Encapsulation和接收端的解封装Decapsulation。阶段一发送端的“俄罗斯套娃”数据封装数据从顶层向下层传递每一层都会给数据加上一个自己的“头部”Header就像俄罗斯套娃一样包上一层又一层。应用层 (L7)浏览器生成一段 HTTP GET 请求数据“请给我 example.com 的首页”。此时的数据被称为消息 (Message / Data)。传输层 (L4)HTTP 消息来到传输层。TCP 协议接管它将大块消息切分并在前面加上TCP Header包含源端口如 54321目标端口 80/443。此时的数据包叫做数据段 (Segment)。网络层 (L3)TCP 数据段来到网络层。IP 协议在外面再加上IP Header包含你电脑的源 IP 地址和 DNS 解析出来的目标服务器 IP 地址。此时的数据包叫做数据包 (Packet)。数据链路层 (L2)IP 数据包来到链路层。以太网协议在前面加上MAC Header包含你网卡的源 MAC 地址以及你家路由器的目标 MAC 地址并在尾部加上 **FCS 校验码Trailer**以防数据损坏。此时的数据包叫做数据帧 (Frame)。物理层 (L1)庞大的数据帧最终被转换成二进制的比特流 (Bits)—— 01010101通过网线变成电脉冲或者通过路由器天线变成无线电波发射出去。阶段二网络中的接力跑路由转发你的请求离开家后会到达运营商的路由器。路由器主要在网络层 (L3)工作。它会拆开外层的 MAC 头部查看里面的IP 头部。路由器通过查找路由表发现“哦这个 IP 在美国”于是它修改 MAC 头部换成下一个路由器的 MAC然后再次打包成帧传给下一个节点。这个“拆 MAC - 看 IP - 换 MAC”的过程会在全球的海底光缆和无数路由器之间接力数十次直到到达目标服务器。阶段三接收端的“剥洋葱”数据解封装最终电信号到达了 example.com 的服务器网卡。服务器开始自底向上“剥洋葱”物理层 (L1)网卡接收到电信号还原成二进制比特流交给上一层。数据链路层 (L2)服务器检查MAC 头部确认“这是发给我的网卡的”然后拆掉 MAC 头部和尾部检查数据是否在传输中损坏。如果完好把里面的 IP 数据包交给上一层。网络层 (L3)服务器检查IP 头部确认“目标 IP 确实是我”拆掉 IP 头部把里面的 TCP 数据段交给上一层。传输层 (L4)服务器检查TCP 头部看到“目标端口是 443”。它知道 443 端口对应的是 Web 服务器软件如 Nginx 或 Apache。它剥离 TCP 头部把纯净的数据按照顺序拼装好交给 443 端口绑定的程序。应用层 (L7)Nginx 软件拿到了最初的那段HTTP GET 请求消息。它理解了请求的含义在硬盘里找到首页对应的 HTML 文件。随后服务器把 HTML 文件作为响应数据再次经历上述完整的封装过程顺着原路发送回你的电脑。你的浏览器拿到 HTML 并渲染网页就这么呈现在了你的眼前总结网络通信的本质就是分工与协作。OSI 模型提供了完美的理论框架TCP/IP 模型构筑了现实的互联网世界。每一层恪尽职守下层为上层提供服务上层无需关心下层的具体实现细节比如应用层的浏览器根本不需要管现在连的是 Wi-Fi 还是插的网线。正是这种严密的分层架构和封装/解封装机制支撑起了今天这个每秒传输着亿万字节、连接着全球几十亿人的庞大数字世界。理解了它们你就拿到了打开计算机网络大门最关键的那把钥匙。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2419449.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!