前言
计算机网络的知识点十分芜杂且琐碎,非常容易让人产生畏惧心理。其实计网通篇钻研的外围就是不同计算机之间的通信过程,???? 本文将从小白的角度,解说两台计算机之间是如何准确的找到对方的地位并发送和接管音讯的,以帮忙读者从宏观角度把握计算机网络的体系结构。
- 五层协定参考模型
所谓通信协议就是通信单方都必须要恪守的通信规定。如果没有网络通信协定,计算机的数据将无奈发送到网络上,更无奈达到对方计算机,即便可能达到,对方也未必能读懂。有了通信协议,网络通信才可能产生。
个别咱们用五层协定参考模型来进行计算机网络的学习:
- 应用层
- 运输层
- 网络层
- 数据链路层
- 物理层
上述各层的作用会在下文具体解说,咱们首先要明确为什么要分层:
协定的实现是很简单的。因为协定要把人读得懂的数据,如网页、电子邮件等加工转化成能够在网络上传输的信号,须要进行的解决工作十分多。
两个零碎中实体间的通信是一个十分复杂的过程。为了缩小协定设计和调试过程的复杂性,网络协议通常都按结构化的档次形式来进行组织,每一层实现肯定性能,每一层又都建设在它的上层之上。不同的网络协议,其层的数量、各层的名字、和性能不尽相同。
???? 也就是说,每一层都是在下一层的根底上,通过层间接口向上一层提供肯定的服务,而把 “这种服务是如何实现的” 细节对下层加以屏蔽。
❓ 那么,咱们将一个大型网络体系分成了若干个层,各个层之间是如何进行通信的呢?
- 1)对等层之间通信(不同开放系统中的雷同档次之间的通信,对等层实体之间的信息替换):OSI 规范为每一层的通信都严格定义了 协定数据单元 PDU的格局。 对等层之间的通信是目标,对等层实体的合作保障该层性能和服务的实现
- 2)相邻层之间通信(相邻的上上层之间的通信,属于部分问题):相邻层之间的通信是伎俩,保障对等层实体之间的通信得以实 施
⭐ 假如网络协议分为若干层,那么 A、B 两节点通信,理论是节点 A 的第 n 层与节点 B 的第 n 层进行通信,故协定总是指某一层的协定,例如物理层协定、传输层协定、应用层协定。每一相邻层协定间有一接口,上层通过该接口向上一层提供服务。
- 物理层
两台计算机之间要进行通信,必然须要传输介质/物理媒介来连贯两台计算机,这样,咱们能力把数据传输过来。传输介质分为:
- 导向型传输介质:
- 非导向型传输介质:
⭐ 也就是说,物理层的作用就是实现计算机之间的数据传送,这个数据其实是比特流,物理层须要尽可能屏蔽掉具体传输介质和物理设施的差别, 使其下面的数据链路层不用思考网络的具体传输介质是什么,即实现比特流的通明传输。
- 数据链路层
物理层只是简略的把计算机连接起来并在下面传输比特流,它还是存在着很多问题的:
- 1)物理连贯是有过错和不牢靠的
- 2)物理设施之间可能存在传输速度不匹配问题
也就是说仅仅靠物理层是无奈保障数据传输的正确性的。
⭐ 这样,数据链路层的次要作用就是增强物理层传输原始比特流的性能,将物理层提供的可能出错的物理连贯革新成为逻辑上无差错的数据链路,使之对网络层体现为一条无差错的链路。在物理层提供服务的根底上,数据链路层还肩负着为网络层提供服务的责任,其最根本的服务是将来自网络层的 IP 数据报封装成帧,牢靠的传输到相邻结点的指标网络层。
① 封装成帧
首先理解一下为什么须要封装成帧:后面说了,物理层它只是简略的把计算机连接起来并在下面传输比特流(0、1 序列),如果这些 0,1 组合的传送毫无规定的话,计算机是解读不了的。因而,咱们须要制订一套规定来进行 0、1 的传送,让计算可能读懂这些序列。
⭐ 封装成帧就是:发送端的数据链路层接管到下层网络层传过来的 IP 数据报后,在其前后局部增加首部、尾部,这样就形成了一个帧。接收端在收到物理层上交的比特流后,就能依据首部和尾部的标记,从收到的比特流中辨认帧的开始和完结。
把一台计算的的数据通过物理层和链路层发送给另一台计算机,到底是谁发给谁的,计算机与计算机之间如何辨别,你总得给他们一个惟一的标识吧?
于是,MAC 地址呈现了 ????
② MAC 地址
MAC 地址就是链路层地址,长度为 6 字节(48 位),用于惟一标识网络适配器(网卡)。计算机之间的数据传送,就是通过 MAC 地址来惟一寻找、传送的。
一台主机领有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因而就有两个 MAC 地址。
❓ 那么,一台计算机它是如何晓得另一台计算机的 MAC 地址的呢?这是网络层的 ARP 地址解析协定做的事件,详见下文 ????
- 网络层
在 计算机网络中进行通信的两个计算机之间可能会通过很多个数据链路,也可能还要通过很多通信子网。
网络层的工作就是抉择适合的网间路由和替换结点, 确保数据及时传送。 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。
在 TCP/IP 体系结构中,因为网络层应用 IP 协定,因而分组也叫 IP 数据报 ,简称数据报。
① IP 协定
IP 协定用于屏蔽上层物理网络的差别,为下层提供对立的 IP 数据报。
IP 协定定义的地址,咱们称之为 IP 地址。IP 数据报中含有发/收方的 IP 地址。
IP 协定提供无连贯的、不牢靠的、尽力的数据报投递服务
- 1)无连贯的投递服务
- 2)不牢靠的投递服务
- 3)尽力投递服务
② ARP 地址解析协定
OK,有了下面 IP 协定的常识,咱们来解说一台计算机它是如何晓得另一台计算机的 MAC 地址的,这就是网络层的 ARP 地址解析协定做的事件。
网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因而在通信过程中,IP 数据报的源地址和目标地址始终不变,而 MAC 地址随着链路的扭转而扭转。
⭐ ARP(Address Resolution Protocol )协定就能够实现由 IP 地址失去 MAC 地址。
每个主机都有一个 ARP 高速缓存,外面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。
如果主机 A 晓得主机 B 的 IP 地址,然而 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过播送的形式发送 ARP 申请分组(该分组携带本人的 IP 地址 和 MAC 地址 以及 指标主机的 IP 地址),主机 B 收到该申请后会发送 ARP 响应分组 给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。
???? 对应的,RARP 协定能够实现由 MAC地址转化为 IP 地址
❓ 那么,咱们如何晓得对方计算机的 IP 地址呢,这是 DNS 协定做的事件,在应用层咱们会具体解说。
- 传输层
通过物理层、数据链路层以及网络层的相互作用,咱们曾经把数据胜利从计算机 A 传送到计算机 B 了,可是,计算机 B 外面有各种各样的应用程序,计算机 B 该如何晓得这些数据是给哪个应用程序的呢?
所以,咱们在从计算机 A 传数据给计算表 B 的时候,还得指定一个端口(Port),以供特定的应用程序来承受解决。即 IP 地址 + 端口号就能够惟一确定某个主机上的某个利用过程
⭐ 也就是说,网络层的性能是建设主机到主机的通信,而传输层的性能就是建设端口到端口的通信(也能够说是过程到过程之间的通信)
传输层最常见的两大协定是 TCP 协定和 UDP 协定,其中 TCP 协定与 UDP 最大的不同就是 TCP 提供牢靠的传输,而 UDP 提供的是不牢靠传输。
- 1)用户数据报协定 UDP(User Datagram Protocol)
- 2)传输控制协议 TCP(Transmission Control Protocol)
- 应用层
应用层最靠近于用于,它的工作就是通过利用过程间的交互来实现特定网络应用。
应用层协定定义的是利用过程间的通信和交互的规定。因为传输层传来的数据形形色色,有 html 格局的,有 mp4 格局等等,所以对于不同的网络应用须要不同的应用层协定。在互联网中应用层协定很多,如域名零碎 DNS,反对万维网利用的 HTTP 协定,反对电子邮件的 SMTP 协定等等。咱们把应用层交互的数据单元称为报文。
因为本文的要害就是解说计算机之间的通信,所以其余协定咱们就不讲了,只解说一下 DNS 协定是如何将域名转化为 IP 地址的。
DNS 域名解析协定
域名零碎 Domain Name System 缩写 DNS,是因特网的一项外围服务,它作为能够将域名和 IP 地址互相映射的一个分布式数据库 (这里的分布式数据库是指,每个站点只保留它本人的那局部数据),可能使人更不便的拜访互联网,而不必去记住可能被机器间接读取的 IP 地址。
域名具备层次结构,从上到下顺次为:根域名、顶级域名、二级域名。
DNS 能够应用 UDP 或者 TCP 进行传输,应用的端口号都为 53。
大多数状况下 DNS 应用 UDP 进行传输,这就要求域名解析器和域名服务器都必须本人解决超时和重传从而保障可靠性。
域名解析形式:
- 递归查问
- 迭代查问
基本原理:
1)浏览器搜寻本人的 DNS 缓存,缓存中保护一张域名与 IP 地址的对应表;
2)若没有,则搜寻操作系统的 DNS 缓存;
3)若没有,则操作系统将域名发送至本地域名服务器(递归查问形式),本地域名服务器查问本人的 DNS 缓存,查找胜利则返回后果,否则,通过以下形式迭代查找:
- 本地域名服务器向根域名服务器发动申请,根域名服务器返回 com 域的顶级域名服务器的地址;
- 本地域名服务器向 com 域的顶级域名服务器发动申请,返回权限域名服务器地址
- 本地域名服务器向权限域名服务器发动申请,失去 IP 地址
4)本地域名服务器将失去的 IP 地址返回给操作系统,同时本人将 IP 地址缓存起来
5)操作系统将 IP 地址返回给浏览器,同时本人也将 IP 地址缓存起来
至此,浏览器曾经失去了域名对应的 IP 地址。
总结
???? 计算机之间的通信过程至此结束,当然,外面很多的细节并没有具体叙述,计算机网络的知识点比拟芜杂,本篇只作为大家构建计算机网络常识体系的开篇之旅,后续会解说更多细节局部。
???? 下方扫码关注_公众号_「飞天小牛肉」(专一于分享计算机根底、Java 根底和面试指南的相干原创技术好文,帮忙读者疾速把握高频重点常识,对症下药),与小牛肉一起成长、共同进步
???? 并向大家强烈推荐我保护的 _Gitee 仓库_ 「CS-Wiki」(Gitee 举荐我的项目,目前已 0.9k star。面向全栈,致力于构建欠缺的常识体系:数据结构、计算机网络、操作系统、算法、数据库、设计模式、Java 技术栈、机器学习、深度学习、强化学习等),相比公众号,该仓库领有更健全的常识体系,欢送前来 star,仓库地址 CS-Wiki(Gitee 举荐我的项目,0.9k star)