网络协议漫谈

一、什么是网络协议?

幻想一下,咱们有一封信,要送给近邻市的好基友,要怎样做呢?

  • 把信装信封
  • 把信投递到邮筒
  • 邮递员送信
  • 好基友取信

写信得知道对方的地址,并且把地址写在信封上。这样邮递员才知道信送到哪里。

别的,送信并不是由一个邮递员完结的,中间有许多中转的过程,每一个邮递员都只担任某几个小区函件的收递

信也能够分类的,能够是普通函件,也能够是加急件,快件之类的

中国邮政,能够送信,也能够送其它快递

假如咱们要给近邻市的好基友发送一条信息,这中间又阅历了什么样的过程呢?网络状况是怎样样的呢?

众所周知,网络协议是分层的,如下所示:

网络协议漫谈

  • 应用层:能够比照中国邮政,中国邮政能够运用全国的邮政网络推出不同的产品,比方能够送信,也能够送快递,能够飞机运贵重物品,针对邮政网络有不同的“应用”产品
  • 传输层:能够比照邮政的传输方法,物品有易碎品,也有普通物品,邮政肯定会有不同的方法来确保运送的安全,比方说,运送易碎品之前先把物品包裹得厚厚地
  • 网际层:能够比照邮政的运送网络,邮政或许和其它航空公司协作来运送物品,邮政公司本身并不担任运送,它只担任物品的打包,打包好交给航空公司就行了,而航空公司便是邮政的运送网络,它对应着网际层
  • 网络接口层:它对应着邮政系统的一些底层套件,比方邮筒之类的

每一层都运用下一层的服务做相应的事情,比方传输层就运用网络层的传输服务,完成特定的信息传送方法。每一层都只对上一层担任。

二:数据链路层

网络接口层,也能够叫数据链路层,它是网络四层协议中的最下面一层,它会与硬件打交道,网络中传输的都是1、0之类的二进制,二进制数据与电气数据的转化,便是由数据链路层完结。数据链路层有自己的数据格局:

网络协议漫谈

那这儿就有一个疑问了?数据链路层的数据怎样定位呢?送信有必要得有地址,数据链路层的数据也有地址,mac地址。每一个主机都有必要有mac地址,mac地址在设备出厂的时分就确认了,通常是48个二进制位,通常用12个十六进制数据表明

网络协议漫谈

如上图的物理地址,便是mac地址,前6位是厂商编号,后6位是网卡编号。mac地址,全世界唯一。或许有同学会有疑问了,不是还有IP地址吗,不是经过IP地址来确认网络接纳地址的吗?IP地址用在网际层(也叫网络层),MAC地址用在数据链路层。

从前文所述,咱们能够知道,mac地址是一个真实的物理地址,而ip地址仅仅一个虚拟地址。为什么会有两套地址系统,已然MAC地址现已全世界唯一了,能不能不要IP地址,只需mac地址呢?这个问题,当咱们聊到IP地址时就能回答了。IP地址是经过层级联系来将核算机分组的(子网的完成)。不同核算机组间传递信息时要经过路由表,它们自己被分红不同的层级。比方,202.108.x.x是百度的网络。经过这个地址,百度能够知道那些不计其数的子网在哪里散布同时怎样找到它们(其他人不需要知道这个,只需要知道以202.108最初的IP地址都会到百度那里)。

在一个局域网中,假如两台主机相互通信,网速会非常快。因为在同一个主机傍边,互相都有对方的mac地址,直接将数据发送给对方就行了。这就好比送信,假如对方和你在同一个小区中,你直接把信送过去就行了,不需要再把信中转到城市的函件中转中心,再绕一大圈送回来,这样功率天然就高了。

三:网络层

邮递员送信的过程是怎样样的呢?

首先根据地址将信分捡,广东省深圳市某某区某某街道某某小区之类的。将信分组之后,功率则会在大进步。网络,也是存在分组的,怎样完成网络分组的呢,便是经过大名鼎鼎的IP地址。

网络协议漫谈

一般ip地址是由32个bit组成,它的前一部分代表网络,后一部分代码主机,假定上面的ip地址中前24位是网络地址,223.212.40,那么主机部分便是后边的8位,当时ip地址的主机部分便是80。假如两个ip地址的网络部分是相同的,那么它们肯定处于同一个子网络傍边。

网络层传输的数据叫IP数据包,ip数据包也分为标头和数据部分,但整个ip数据包都是存在在数据链路层的数据部分。能够理解为信封套着信封

网络协议漫谈

ip层传输的数据并不能保证安全,比方说卡车在送货的时分有或许出现货物损坏,没有办法保证货物必定就完整无缺。别的,ip层也不是一个面向衔接的运送,它和电话不相同,电话得打通之后再说话,但ip层传输数据不相同,只管送。当然,运送出错也会有相应方法通知主机。

四:传输层

传输层中有两个大名鼎鼎的协议,TCP和UDP,只需是程序员没人不知道这两个的吧。TCP和UDP运用ip层,完成自己的特殊的传输方法,所以这一层叫传输层。

有了ip地址和mac地址,能够精准地确认一台主机的位置。但我能够运用pc看网页,也能用pc聊qq,或人给我发了一个qq信息,pc怎样知道这是qq信息而不是一个其它信息呢,这儿还有一个概念叫端口。在传输层,结合ip和端口,就能够知道信息是发给主机的哪个应用程序的。

TCP,一种面向衔接的安全的传输方法,有点类似于打电话,得经过三次握手确认衔接,双刚才能够发送音讯,假如因为网络原因发送出错了,还会重传,断开衔接还得经过四次握手才会真地断开衔接

UDP,非面向衔接,也不安全的传输方法。它并不要求两边建立衔接,只管把数据报发送出去,不论对方是否接纳。

安全的方法都是有代价的,虽然TCP安全,但得经过三次握手才能建立衔接,中间还得经过ack确认已接纳的数据,监听超时,假如超时了,还要重传,假如网络堵塞,重传是否会加剧堵塞,所以超时时刻的设定也是一个难点,得经过特定算法动态核算超时时刻。

UDP不安全,是不是就必定不可取呢,也不是,它有它的好处。谷歌的QUIC,便是在应用层对UDP加以控制,也能完成安全的传输,某些当地也会比TCP更优异

传输层也有自己的数据格局,不过它是套在ip数据中,还是和之前相同的信封套信封方法

五:应用层

应用层,我们都听过http等协议,http协议便是应用层的协议。

http协议是运用tcp协议完成的,运用tcp协议完成的诸多特性。前文说到的QUIC,也是应用层的协议。应用层是最高的一层,直接面临用户,http协议的数据部分就放在TCP数据包的“数据”部分。最终,整个数据链路层的数据包格局就变成了这样

网络协议漫谈