目录
第一层:物理层
第二层(数据链路层)
第三层(网络层)
第四层(传输层)
第五层(应用层)
网络模型有好几种,其中最常讨论的有俩种:OSI七层参考模型、TCP/IP四层参考模型。OSI模型是国际标准模型,结构分的很细,然而既复杂又不实用,我们这篇文章来讲已经得到广泛应用的TCP/IP模型,同时也是面试也问的比较多的。
很多人可能会有个疑问,TCP/IP模型到底是分了四层还是五层,有些资料说四层,有些资料说五层。其实TCP/IP模型是分四层的,应用层、传输层、网络层、网络接口层。由于讲解的时候想要把网络接口层阐述清楚,通常会把网络接口层分成数据链路层与物理层来讲解,TCP/IP模型中的网络接口层也正对应OSI模型中的数据链路层与物理层,所以也就有了TCP/IP五层模型。TCP/IP模型与OSI模型对应关系如下图:
下面我以TCP/IP五层模型来讲解。
第一层:物理层
我记得大一开学的时候我跟几个室友兴高采烈的带了笔记本电脑去宿舍,结果发现宿舍没网,一圈打听下来是学校不给大一的学生开通网络,那电脑不能白带啊,我们就整了个集线器,把几台电脑连接起来,配置这几台电脑的 IP 地址、子网掩码,要想两台电脑能够通信,必须配置成为一个网段,否则是不通的,这几台电脑已经构成了一个很小的局域网,也即 LAN。可以玩联机局域网游戏啦,比如魔兽争霸!集线器的作用就是将自己收到的每一个字节都广播出去,这是第一层物理层联通的方案。悄悄告诉你,如果只有俩台电脑,集线器都不用,一根网线就行了。
第二层(数据链路层)
如果只有物理层,所有的消息都广播给所有人,那就麻烦了,比如你广播的一个消息包只对张三有用,李四收到这个消息包打开一看,发现对自己没用,过了一会又来了一个消息包,李四拆了半天发现又是对自己没用的,李四就很恼火了,这就产生了一个问题:这个包是发给谁的?谁应该接收?就像你去寄快递,快递员都会让你填上接收人信息。这里用到一个物理地址,叫作链路层地址。但是因为第二层主要解决媒体接入控制的问题,所以它常被称为MAC(Media Access Control) 地址,第二层有时候也会被称为MAC层。
那么又有个问题诞生了,我怎么知道别的电脑的MAC地址呢?吼啊,在宿舍中大声一吼,张三,你的MAC地址是多少,张三听到了就会说:我的MAC地址是xxx,你说:好了我知道了,过了一会你又要发送消息包给张三,你又吼一声,张三,你的MAC地址是多少?这样是不是有点不合适?张三可能会说你有毛病啊,我刚刚才告诉你了,俗话说好记性不如烂笔头,张三第一次告诉你的时候,就先记下来,下次用直接查就好了。
在第二层有个协议叫ARP协议,他就是解决已知ip求mac地址的问题,在一个局域网里面,当知道了 IP 地址,不知道 MAC 怎么办呢?靠“吼”。广而告之,发送一个广播包,谁是这个 IP 谁来回答,为了避免每次都用 ARP 请求,机器本地也会进行 ARP 缓存(打开cmd 输入arp -a 命令可以查看)。当然机器会不断地上线下线,IP 也可能会变,所以 ARP 的 MAC 地址缓存过一段时间就会过期。
消息包中有了MAC地址,李四收到消息包发现MAC不是他的,那就不管他了,直接丢弃,也不用去管里面数据是不是对他有用了。
这种组网的方法,对一个宿舍来说没有问题,但是一旦机器数目增多,问题就出现了。因为集线器(Hub) 是广播的,不管某个接口是否需要,所有的 Bit 都会被发送出去,然后让主机来判断是不是需要。把不需要的包转发过去,纯属浪费。看来集线器这种不管三七二十一都转发的设备是不行了,需要点儿智能的。因为每个口都只连接一台电脑,这台电脑又不怎么换 IP 和 MAC 地址,只要记住这台电脑的 MAC 地址,如果目标 MAC 地址不是这台电脑的,这个口就不用转发了。正因为这个需求,二层设备——交换机诞生了。
一台 MAC1 电脑将一个包发送给另一台 MAC2 电脑,当这个包到达交换机的时候,一开始交换机也不知道 MAC2 的电脑在哪个口,所以没办法,它只能将包转发给除了来的那个口之外的其他所有的口。但是,这个时候,交换机会干一件非常聪明的事情,就是交换机会记住,MAC1 是来自一个明确的口。以后有包的目的地址是 MAC1 的,直接发送到这个口就可以了。当交换机作为一个关卡一样,过了一段时间之后,就有了整个网络的一个结构了,这个时候,基本上不用广播了,全部可以准确转发。当然,每个机器的 IP 地址会变,所在的口也会变,因而交换机上的学习的结果,我们称为转发表,是有一个过期时间的。有了交换机,一般来说,你接个几十台、上百台机器打游戏,应该没啥问题。
第三层(网络层)
网络层也被称为IP层。大一比较可惜,大伙兴高采烈的带了电脑来学校经过一番折腾还是只能玩玩局域网游戏,连爱情武打片都看不了,时间也过得很快,不知不觉到了大二了。学校给每个宿舍分配了一个网口,这个网口是开通网络了的,可是我们有三四台电脑,只有一个网口咋办呢,我跟舍友们商量了一番合资买了个家庭路由器,路由器有内网网口跟外网网口,外网网口连接学校的网口,内网网口连接我们的电脑,这样我们一直开着路由器就大家都能上网了,能够愉快的玩网游和看爱情武打片了。
那么路由器扮演了什么角色,干了什么活呢。
路由器,有时也称为三层设备。
当一台机器去访问一个IP地址的时候,都会先去判断这个IP跟它自己是不是在同一个网段里面,怎么判断呢?将IP与子网掩码按位与,可获得网络号。 CIDR确定网络号长度,如192.168.0.1/24,24表示网络号是24位,意味着子网掩码应该为255.255.255.0 即前三个字节全1,最后字节全0。与IP做与操作,就可以去掉主机号,得到网络号,如果网络号相同,就在同一个网段。
如果是同一个网段,例如,你访问你室友兄弟的电脑,那就没网关什么事情,直接将源地址和目标地址放入 IP 头中,然后通过 ARP 获得 MAC 地址,将源 MAC 和目的 MAC 放入 MAC 头中,发出去就可以了。
如果不是同一网段,例如,你要访问你们校园网,该怎么办?这就需要发往默认网关 Gateway。Gateway 的地址一定是和源 IP 地址(也就是你的IP)是一个网段的。往往不是第一个,就是第二个。例如 192.168.1.0/24 这个网段,Gateway 往往会是 192.168.1.1/24 或者 192.168.1.2/24。
这里的网关通常就是路由器,路由器中有路由表,根据消息包里面的目标IP可以在路由表中找到下一跳的路由IP,地铁线路图都看过吧,可以把路由表想象成地铁线路图,你知道目的地,你根据地铁图就能查到对应的路线。当走到最后一跳的时候,路由器发现包里的目标IP就是我这个网段的,然后通过ARP协议获取目标IP的MAC地址,修改消息包里的目标MAC地址后发过去,最终目标机器就能收到这个消息包了。
第四层(传输层)
传输层也是比较重要的一层,主要负责向两个主机中进程之间的通信提供服务。而且面试经常问,传输层里比较重要的两个协议,一个是 TCP,一个是 UDP。是不是经常被问到TCP跟UDP有什么区别?很多人会回答TCP是面向连接的,UDP是面向无连接的。那么TCP为什么要三次握手去建立连接,我UDP也可以发三个包玩玩啊!
欲知详情,请参阅我的另一篇文章:
详解TCP/UDP网络协议
第五层(应用层)
应用层给我们提供了很多协议,比如HTTP、HTTPS、DNS、FTP等等,最常用的就是HTTP了,这里我就介绍HTTP,请参阅我的另一篇文章:
详解HTTP协议文章来源:https://www.toymoban.com/news/detail-445956.html
到这里,TCP/IP五层网络模型就介绍完了,写的不好的地方还请多多包涵,欢迎指教。文章来源地址https://www.toymoban.com/news/detail-445956.html
到了这里,关于详解TCP/IP网络模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!