本文共享自华为云社区《两台计算机之间究竟是怎么通讯的?》,作者:龙哥手记。
计算机网络的常识点十分凌乱且琐碎,十分容易让人发生害怕心思。其实计网通篇研究的中心便是不同计算机之间的通讯进程,本文将从小白的视点,解说两台计算机之间是怎么精确的找到对方的位置并发送和接纳音讯的,以从宏观视点掌握计算机网络的体系结构。
1. 五层协议参阅模型
所谓通讯协议便是通讯两边都必须要恪守的通讯规则。如果没有网络通讯协议,计算机的数据将无法发送到网络上,更无法抵达对方计算机,即使能够抵达,对方也未必能读懂。有了通讯协议,网络通讯才能够发生。
一般咱们用五层协议参阅模型来进行计算机网络的学习:
-
运用层
-
运送层
-
网络层
-
数据链路层
-
物理层
上述各层的效果会鄙人文具体解说,咱们首先要明白为什么要分层:
协议的完结是很杂乱的。因为协议要把人读得懂的数据,如网页、电子邮件等加工转化成能够在网络上传输的信号,需求进行的处理工作十分多。
两个体系中实体间的通讯是一个十分杂乱的进程。为了削减协议设计和调试进程的杂乱性,网络协议通常都按结构化的层次方法来进行安排,每一层完结必定功用,每一层又都树立在它的下层之上。不同的网络协议,其层的数量、各层的姓名、和功用不尽相同。
也便是说,每一层都是鄙人一层的基础上,经过层间接口向上一层供给必定的服务,而把 “这种服务是怎么完结的” 细节对上层加以屏蔽。
那么,咱们将一个大型网络体系分成了若干个层,各个层之间是怎么进行通讯的呢?
-
1)对等层之间通讯(不同开放体系中的相同层次之间的通讯,对等层实体之间的信息交流):OSI 规范为每一层的通讯都严厉界说了 协议数据单元 PDU的格局。对等层之间的通讯是意图,对等层实体的协作确保该层功用和服务的完结
-
2)相邻层之间通讯(相邻的上下层之间的通讯,归于部分问题):相邻层之间的通讯是手段,确保对等层实体之间的通讯得以实 施
假定网络协议分为若干层,那么 A、B 两节点通讯,实际是节点 A 的第 n 层与节点 B 的第 n 层进行通讯,故协议总是指某一层的协议,例如物理层协议、传输层协议、运用层协议。每一相邻层协议间有一接口,下层经过该接口向上一层供给服务。
2. 物理层
两台计算机之间要进行通讯,必然需求传输介质/物理前言来衔接两台计算机,这样,咱们才能把数据传输过去。传输介质分为:
-
导向型传输介质:
双绞线:适用于近距离
同轴电缆(抗干扰性强):适用于远距离
光纤:带宽远远大于其他传输媒体
-
非导向型传输介质:
无线电波
微波
红外线、激光
也便是说,物理层的效果便是完结计算机之间的数据传送,这个数据其实是比特流,物理层需求尽或许屏蔽掉具体传输介质和物理设备的差异, 使其上面的数据链路层不用考虑网络的具体传输介质是什么,即完结比特流的透明传输。
3. 数据链路层
物理层只是简单的把计算机衔接起来并在上面传输比特流,它还是存在着许多问题的:
-
1)物理衔接是有过失和不牢靠的
-
2)物理设备之间或许存在传输速度不匹配问题
也便是说仅仅靠物理层是无法确保数据传输的正确性的。
这样,数据链路层的主要效果便是加强物理层传输原始比特流的功用,将物理层供给的或许出错的物理衔接改造成为逻辑上无过失的数据链路,使之对网络层表现为一条无过失的链路。在物理层供给服务的基础上,数据链路层还肩负着为网络层供给服务的职责,其最基本的服务是将来自网络层的 IP 数据报封装成帧,牢靠的传输到相邻结点的方针网络层。
① 封装成帧
首先了解一下为什么需求封装成帧:前面说了,物理层它只是简单的把计算机衔接起来并在上面传输比特流(0、1 序列),如果这些 0,1 组合的传送毫无规则的话,计算机是解读不了的。因而,咱们需求制定一套规则来进行 0、1 的传送,让计算能够读懂这些序列。
封装成帧便是:发送端的数据链路层接纳到上层网络层传过来的 IP 数据报后,在其前后部分增加首部、尾部,这样就构成了一个帧。接纳端在收到物理层上交的比特流后,就能依据首部和尾部的标记,从收到的比特流中辨认帧的开端和结束。
把一台计算的的数据经过物理层和链路层发送给另一台计算机,究竟是谁发给谁的,计算机与计算机之间怎么区分,你总得给他们一个仅有的标识吧?
于是,MAC 地址出现了
② MAC 地址
MAC 地址便是链路层地址,长度为 6 字节(48 位),**用于仅有标识网络适配器(网卡)。**计算机之间的数据传送,便是经过 MAC 地址来仅有寻找、传送的。
一台主机具有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因而就有两个 MAC 地址。
那么,一台计算机它是怎么知道另一台计算机的 MAC 地址的呢?这是网络层的 ARP 地址解析协议做的事情。
4. 网络层
在 计算机网络中进行通讯的两个计算机之间或许会经过许多个数据链路,也或许还要经过许多通讯子网。
网络层的使命便是选择适宜的网间路由和交流结点, 确保数据及时传送。在发送数据时,网络层把运送层发生的报文段或用户数据报封装成分组和包进行传送。
在 TCP/IP 体系结构中,因为网络层运用 IP 协议,因而分组也叫 IP 数据报 ,简称数据报。
① IP 协议
IP 协议用于屏蔽下层物理网络的差异,为上层供给统一的 IP 数据报。
IP 协议界说的地址,咱们称之为 IP 地址。IP 数据报中含有发/收方的 IP 地址。
IP 协议供给无衔接的、不牢靠的、极力的数据报投递服务
-
1)无衔接的投递服务
发送端可于任何时候自在发送数据,而接纳端永久不知道自己会在何时从哪里接纳到数据。每个数据报独立处理和传输, 一台主机发出的数据报序列,或许取不同的路径, 乃至其间的一部分数据报会在传输进程中丢掉;
-
2)不牢靠的投递服务
IP 协议自身不确保数据报投递的成果。在传输的进程中,数据报或许会丢掉、重复、延迟和乱序等, IP协议不对内容作任何检测,也不将这些成果告诉收发两边;I 数据报的丢掉,经过路由器发 ICMP报文 奉告;必要时,由高层实体(如TCP)担任过失康复动作。
-
3)极力投递服务
执行数据报的分段和封装,以适应具体的传输网络, 由最终结点的IP模块进行合段处理
不同物理网络对传输的帧 /分组的体积有不同的规定;当数据报长度 > MTU(最大传输单元 MTU—Maximun Transfer Unit )时,需对数据报分段 。
② 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 协议做的事情,在运用层咱们会具体解说。
5. 传输层
经过物理层、数据链路层以及网络层的互相效果,咱们现已把数据成功从计算机 A 传送到计算机 B 了,但是,计算机 B 里边有各式各样的运用程序,计算机 B 该怎么知道这些数据是给哪个运用程序的呢?
所以,咱们在从计算机 A 传数据给计算表 B 的时候,还得指定一个端口(Port),以供特定的运用程序来承受处理。即 IP 地址 + 端口号就能够仅有确定某个主机上的某个运用进程
也便是说,网络层的功用是树立主机到主机的通讯,而传输层的功用便是树立端口到端口的通讯(也能够说是进程到进程之间的通讯)
传输层最常见的两大协议是 TCP 协议和 UDP 协议,其间 TCP 协议与 UDP 最大的不同便是 TCP 供给牢靠的传输,而 UDP 供给的是不牢靠传输。
-
1)用户数据报协议 UDP(User Datagram Protocol)
UDP 在传送数据之前不需求先树立衔接,远程主机在收到 UDP 报文后,不需求给出任何确认。尽管
UDP 不供给牢靠交给,但在某些情况下 UDP 确是一种最有效的工作方法(一般用于即时通讯),比如:QQ 语音、 QQ 视频 、直播等等
-
2)传输操控协议 TCP(Transmission Control Protocol)
TCP 供给面向衔接的服务。在传送数据之前必须先树立衔接,数据传送结束后要开释衔接。
TCP 不供给播送或多播服务。因为 TCP 要供给牢靠的,面向衔接的传输服务(TCP 的牢靠体现在 TCP 在传递数据之前,会有三次握手来树立衔接,并且在数据传递时,有确认、窗口、重传、流量操控、拥塞操控机制,在数据传完后,还会断开衔接用来节省体系资源。这不只使协议数据单元的首部增大许多,还要占用许多处理机资源。TCP 一般用于文件传输、发送和接纳邮件、远程登录等场景。
6. 运用层
运用层最接近于用于,它的使命便是经过运用进程间的交互来完结特定网络运用。
运用层协议界说的是运用进程间的通讯和交互的规则。因为传输层传来的数据形形色色,有 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 地址。
点击关注,第一时间了解华为云新鲜技能~