邓哥奇遇记——初识五层网络模型

大家都经常听到Http协议、TCP/IP协议,UDP协议等等很多协议,这都是一些既熟悉又陌生的词,很多同学不理解这些协议是做什么的?好吃吗?不用协议行不行?这些协议有什么区别?今天我们就来聊聊这个话题~为了内容上更趣味性,就说说我身边的人——邓哥。
  话说邓哥平生,稳久必浪,浪久必稳。有一天,你们成哥给邓哥介绍了一个女朋友,名叫:赵铁锤~邓哥虽然平时抽烟喝酒烫头,但是性格还是比较内向的~所以决定先进行书信交流~
  这时邓哥和铁锤妹妹就相当于两个软件或者两个程序,邓哥想给铁锤妹妹送信,就好像是两个软件或程序要进行通信,如果我们就拿浏览器和服务器之间的通信来举例,那么邓哥就相当于是浏览器,铁锤妹妹就相当于是服务器上的程序,这些程序或软件我们称之为应用层
  于是邓哥找来了思彤来送信,但是成哥担心思彤把信送错了人,所以提前向邓哥和铁锤妹妹约定了暗号。
  这个暗号就好比是应用层协议,比如:Http协议,当然应用层协议还有很多,包括DNS协议(域名解析),FTP协议(文件传输),SMTP协议(邮件传输)等等
  如果送信时送错了地方,思彤把信送给铁锤妹妹的隔壁邻居老王,思彤说出暗号的上半句:“天王盖地虎”。对方一定会觉得这人脑子有病,肯定就不会收。只有能够认识这个暗号的人,才会收这封信。
  就像是能识别Http协议的程序才能解读Http协议里传输的数据内容
  这时邓哥将信交给思彤了~邓哥这时需要考虑信件的传输过程。
  这时对数据传输连接的建立和管理,在网络的世界中我们称之为传输层
  这时邓哥可以有很多种选择,可以搬一个小马扎坐在门口等,也可以边吃边等,也可以边睡边等,或者干脆不等。
  这些方式每一种方式都称之为一种协议,这就是传输层协议
  我们只举两个例子。一种是不管信有木有送到,现在都去睡觉。毕竟岁数大了要保养。就算是思彤在送信的半路把信丢了,也不管~
  这种方式在网络的世界中,我们称之为:UDP协议,UDP协议是尽最大努力保证数据送到,但是不保证数据一定能够送到的。我们经常用到的Ping命令,来测试主机之间是否联通,原理就是UDP协议。这种在送信途中把信丢了的情况,在网络中我们称之为:丢包
  另一种方式就是邓哥搬个小马扎,坐在门口等~等待铁锤妹妹的回信,如果思彤在半路把信丢了,邓哥就再写一封送过去。
  这种方式在网络中,我们称之为:TCP协议,TCP协议是会保证数据的正确性的,也会保证数据的顺序性。
  邓哥在两种方式中选择了搬个小马扎等待,伴随着那痴汉般的笑容。
  思彤拿到信之后,要找到一个好的线路,把信送过去。于是打开了XX地图,问:谁是这个世界上最帅的人~?地图:帅了这么多年,你不累吗?(有兴趣的可以去撩一下地图~)思彤得到了内心的满足之后,开始寻找去铁锤妹妹家最合适的路线。邓哥住在害虫大街138号601室,铁锤妹妹住在如花大街100号502室。
  这里的每一栋楼房都相当于连接到网络中的一台计算机,每个屋子都相当于是计算机上的一个端口,而交通网络就像是计算机世界的网络。在网络的世界中,我们称之为网络层。在现实世界中我们要找到一个人的住址我们需要的是地址和门牌号,地址和门牌号具有一定的格式,这种格式类比到网络世界中就是一种协议,我们称之为网络层协议。我们在网络中通常用IP加端口来定位一个程序的位置,这种方式就是一种网络层协议,我们称之为IP协议
  思彤在地图上找到了最好的路线,先到A地,再到B地,再到C地,最后到铁锤妹妹家。
  这一层我们称之为数据链路层,这数据链路层呢又分为两个部分或者称为两个子层,一个是地图上显示的路线我们称之为:逻辑链路控制子层,另一个是现实世界中的路线,我们称之为:媒体访问控制子层,这层的缩写大家肯定熟悉——MAC,也就是人们常说的MAC地址
  在实际的送信过程中,需要做公交车,地铁,骑共享单车等等,坐公交需要公交卡,骑车子需要扫码。
  这个层面在网络中我们称之为物理层,物理层也有很多协议,我们就不一一列举了~
  现在这封信已经从从邓哥手里到思彤手里了,思彤也乘坐交通工具在送信的路上。车到站之后思彤下车,然后根据地址和门牌号找到铁锤妹妹家,然后敲门,和铁锤妹妹对暗号。
  这个过程就是从应用层到物理层的过程。但是数据到了对方的计算机时,就是一个从物理从到应用层的过程,坐车到站之后,先下公交车,这就是从物理层到数据链路层,这是思彤已经在数据链路层中最后一个环节上了。然后根据门牌号找到相应的楼和门,这就是从数据链路层到网络层的过程。找到门之后,敲铁锤妹妹家的门,这就是网络层到运输层的过程,然后和铁锤妹妹对暗号,这就是运输层到应用层的过程
  好~到此为止我们就将五层网络模型的基本结构说完了,大家需要记住,五层网络模型分别是:应用层,运输层,网络层,数据链路层和物理层。
  五层网络模型在数据传输的过程中,先是从A处的应用层到运输层到网络层到数据链路层到物理层,将数据运送到B处,然后再从B处的物理层到数据链路层到网络层到运输层到应用层。每层协议本质就是在外面套一层特殊格式的数据。所以在将数据送到的时候,需要将这一层层的协议拆开,然后才能得到里面的数据。
  这个过程就像是我们出门的时候要先穿袜子再穿鞋,回到家之后要先脱鞋再脱袜子一样。我们不可能不脱鞋直接脱袜子~所以当我们的消息送到目的地之后,协议也是一层层去掉的,要先去掉最外层的物理层协议,然后一层一层逐渐地去掉,最后去掉应用层协议。
  除了五层网络模型之外还有七层网络模型,那么七层网络模型是什么呢?就是将应用层一分为三,分别为:应用层,表示层和会话层。新出来的表示层和会话层没有相应的协议。一般表示层做的是数据格式化,或者加密等操作。就比方说邓哥的信,怕别人偷看,于是用甲骨文来写,这样就不怕别人看了。这就是表示层要做的事情。

原文地址:https://blog.51cto.com/13409950/2456252

时间: 2024-10-19 03:53:58

邓哥奇遇记——初识五层网络模型的相关文章

《邓哥奇遇记5》——同源策略

hello,小伙伴们,又到了<邓哥奇遇记>时间了,是不是很期待呢~好了,咱们闲言少叙,奇遇继续~ 同源策略几乎是前端面试中几乎必然问到的问题.但是很多同学对同源策略的理解不够深入,今天我们就来聊聊同源策略的问题. 首先按照老规矩,我们先来提出几个问题: 1. 什么是同源? 2. 为什么要有同源策略? 一句话解释同源就是:相同协议,相同域名,相同端口称为同源. 下面我们还是用邓哥抄作业的故事来讲述什么是同源策略. 话说邓哥大学时候号称比较"浪漫~",因为很"浪&qu

《邓哥奇遇记8》——域名解析过程

当我们在浏览器的地址栏中输入了一个域名~比如github.com的时候,在我们的计算机中以及整个网络中都会发生什么事情呢? 从我们输入域名开始直到我们获得要访问的ip地址的过程,我们称之为域名解析过程.这个过程也是很多公司面试的时候经常会问的问题,那么我们今天依然通过邓哥的例子来为大家解释域名解析的全过程~ 有一天邓哥想约绿茶妹妹出来玩~打通电话之后,绿茶妹妹说:"那你明天来接我吧~". 这里邓哥想去绿茶妹妹家,就像是我们想访问某个网站,比如百度. 我们说的"绿茶妹妹家&qu

《邓哥奇遇记7》—— GET与POST的真正区别

我们会经常看到有人问:http协议中GET请求和POST请求有什么区别~? 这个问题看似很简单,但是不同程度的人会回答出不同的结果.在公司的面试中,也会经常的问及类似这样的问题,看似很简单,但是不同层次的人会回答出不同的结果.那么我们今天就来聊聊HTTP协议中GET与POST的真正区别. 我们还是要用一句简练的话来回答GET和POST的区别: 提及GET和POST的区别,一定要确定基于什么前提.在不同的前提下有不同的答案. 这么简单的GET和POST背后有什么神秘的面纱呢?我们今天依然用邓哥的例

《邓哥奇遇记9》—— 设计模式之六大基本原则

我们在学习.开发或面试时经常会听到设计模式,很多同学也多多少少能说出一点关于设计模式的东西来,但是很多同学却一直无法理解设计模式的精髓,那么今天开始我们就来聊聊设计模式~ 我们依旧提出几个问题: 01设计模式和设计原则是什么关系? 答:所有的设计模式都是遵循设计原则的,不能违反设计原则. 02设计原则的核心思想是什么? 核心思想只有两条:减少复杂度(让一个复杂的逻辑变成多个简单的逻辑),降低耦合度(让模块之间的关联减少,使得模块之间更独立.更清晰) 那么今天我们就来用邓哥的故事来和大家聊聊设计模

《邓哥奇遇记3》——TCP三次握手

你是否经常听别人提起TCP的三次握手和四次挥手呢?你是否看过很多次关于三次握手和四次挥手的文章都没用看懂或是没有记住?三次握手与四次挥手是计算机行业的一个基本知识点,无论是校招还是社招.无论是前端还是后端都有可能被问到,由于很多同学就要开始准备校招了,那么我们今天就先来聊聊TCP的三次握手.我们先来聊聊三次握手,我们看到这个问题的时候,第一个疑问是,啥叫握手?俩机器之间怎么还能握手呢?我怎么没发现我家电脑有手?第二个疑问是,为啥要三次?两次不行吗?我觉得握一下就行了~为啥要握三次?我们今天先用邓

bzoj3157国王奇遇记(秦九韶算法+矩乘)

bz第233题,用一种233333333的做法过掉了(为啥我YY出一个算法来就是全网最慢的啊...) 题意:求sigma{(i^m)*(m^i),1<=i<=n},n<=10^9,m<=200 别人的做法: O(m^2logn),O(m^2),甚至O(m)的神做法 学渣的做法:矩乘+秦九韶算法,O(m^3logn),刚好可以过最弱版本的国王奇遇记的数据 (极限数据单点其实是1.2s+,不想继续卡常了-bzoj卡总时限使人懒惰-如果把矩乘的封装拆掉可能会快点吧,然而人弱懒得拆了...

【BZOJ】【3157】&amp;【BZOJ】【3516】国王奇遇记

数论 题解:http://www.cnblogs.com/zhuohan123/p/3726933.html copy一下推导过程: 令$$S_i=\sum_{k=1}^{n}k^im^k$$ 我们有$$ \begin{aligned} (m-1)S_i &= mS_i-S_i \\&=\sum_{k=1}^n k^im^{k+1}-\sum_{k=1}^n k^i m^k \\&=\sum_{k=2}^{n+1}(k-1)^i m^k-\sum_{k=1}^n k^i m^k \

linux内核奇遇记之md源代码解读之十五bitmap原理

转载请注明出处:http://blog.csdn.net/liumangxiong 为人不识陈近南,走遍江湖也枉然.做raid不识bitmap,通通都是走过场. 那么bitmap究竟是何许人物,能够在raid5的场子里混得风生水起呢?话说最早raid5是没有bitmap这位门客的,突然有一天跑raid5的系统异常掉电了,客户发现异常掉电之后再写数据就出现了数据不一致的情况.查来查去发现raid5本身设计就有一个缺陷:raid5每次写至少要写两个磁盘,写过程中异常掉电的时候就会发现一个磁盘写完成而

linux内核奇遇记之md源代码解读之十四raid5非条块内读

转载请注明出处:http://blog.csdn.net/liumangxiong 如果是非条块内读,那么就至少涉及到两个条块的读,这就需要分别从这两个条块内读出数据,然后再凑成整个结果返回给上层.接下来我们将看到如何将一个完整的bio读请求拆分成多个子请求下发到磁盘,从磁盘返回之后再重新组合成请求结果返回给上层的. 4097 logical_sector = bi->bi_sector & ~((sector_t)STRIPE_SECTORS-1); 4098 last_sector =