05 | 常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?
05 | 常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?
讲述:Chrono
时长09:56大小13.63M
TCP/IP 网络分层模型
OSI 网络分层模型
两个分层模型的映射关系
TCP/IP 协议栈的工作方式
小结
课下作业
赞 30
提建议
精选留言(64)
- 火车日记2019-06-071 二层转发:设备工作在链路层,帧在经过交换机设备时,检查帧的头部信息,拿到目标mac地址,进行本地转发和广播 2 三层路由:设备工作在ip层,报文经过有路由功能的设备时,设备分析报文中的头部信息,拿到ip地址,根据网段范围,进行本地转发或选择下一个网关 3 dns,网络请求的第一步是域名解析,所以工作在应用层 4 cdn,应用层展开
作者回复: ✔️
共 4 条评论154 - 壹笙☞漂泊2019-06-10课后题 1、二层转发:二层应该指数据链路层,工作在二层的设备,通过查找到目标MAC地址,进行数据转发 三层路由:三层应该指网络层,工作在三层的设备,通过解析数据包头信息,找到目标IP地址,转发数据 2、DNS处于应用层 3、CDN处于应用层 总结: 1、TCP/IP协议是一个“有层次的协议栈” TCP/IP 2、TCP/IP协议总共有四层,顺序从下往上 链接层->网际层->传输层->应用层 3、链接层 link layer ,负责在底层网络上发送原始数据包,使用MAC地址来标记网络上的设备,所以也叫MAC层 4、网际层 internet layer,IP协议所在层,在链接层的基础上,用IP地址取代MAC地址,把许多局域/广域网连接成虚拟的巨大网络,在这个网络里找设备时只要把IP地址再翻译成MAC地址就可以 5、传输层 transport layer,TCP、UDP协议所在层,这个层次协议的职责是保证数据在IP地址标记的两点之间可靠地传输。 6、TCP和UDP区别: TCP 有状态 需要先建立连接才能发送数据 保证数据不丢失不重复 数据是连续的字节流,有先后顺序 UDP 无状态 不需要先建立连接也可以发送数据 不保证数据一定会发送到对方 数据是分散的小数据包,顺序发、乱序收 7、应用层 application layer,Telnet、SSH、FTP、SMTP、HTTP 8、MAC层的传输单位是帧(frame),IP层的传输单位是包(packet),TCP层的传输单位是段(segment),HTTP的传输单位是消息或报文(message)。统称为数据包 9、OSI网络分层模型 1.第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线器等等; 2.第二层:数据链路层,它基本相当于TCP/IP的链接层; 3.第三层:网络层,相当于TCP/IP里的网际层; 4.第四层:传输层,相当于TCP/IP里的传输层; 5.第五层:会话层,维护网络中的连接状态,即保持会话和同步; 6.第六层:表示层,把数据转换为合适、可理解的语法和语义; 7.第七层:应用层,面向具体的应用传输数据。 10、TCP/IP四层模型和OSI七层网络模型的映射关系 1.第一层:物理层,TCP/IP里无对应; 2.第二层:数据链路层,对应TCP/IP的链接层; 3.第三层:网络层,对应TCP/IP的网际层; 4.第四层:传输层,对应TCP/IP的传输层; 5.第五、六、七层:统一对应到TCP/IP的应用层。 11、*四层负载均衡:工作在传输层上,基于TCP/IP协议的特性,例如Ip地址,端口号等实现对后端服务器的负载均衡 12、*七层负载均衡:工作在应用层上,看到的是HTTP协议,解析HTTP报文里的URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器展开
作者回复: 总结的非常全面,amazing!
共 3 条评论95 - wheat72019-06-09疑问:按照tcp/ip详解 tcp/ip模型为五层,老师所说为4层 另外,最后一个常见的层层打包说法,我认为是一个误导,因为每一层MTU都不同,这种说法忽略了每一层对上一层数据的分片,造成了”http”报文加TCP头再加IP头就变成了网络层数据的误导,其实IPV4 MTU为64k,而HTTP和TCP层并没有限制,一帧以太网帧MTU为1500b,同理 此外,每一层数据都可以统称为包,这个说法也存在误导,包含义表示有边界,而如Tcp是面向流的,没有边界展开
作者回复: 关于tcp/ip的层次,有说4层,也有说5层的,我说的是最普遍的一种说法,可以参见wiki。 第二个,这只是在应用层的视角做的一个比喻,正文里也说了,省略了很多细节,如果要深究的话可能篇幅不够。 第三个,tcp/ip里都是要切分成数据包来发的,比如tcp的segment,“包”只是为了说起来方便。 看得出来对tcp/ip很精通,有叙述不严谨的地方还请多谅解指正,大家共同进步。
52 - 钱2020-03-241:你能用自己的话解释一下“二层转发”“三层路由”吗? 不能,😂 二层转发、三层路由,貌似第一次听说这两个概念,确实不知道是啥意思。不过拆开的话,到可以说一下自己的理解,首先,说一下自己对二层、三层的理解,网络通信协议非常复杂,如果让我来设计一个网络通信协议我真不知道从哪里着手,假设世界上就只有两台电脑,要这两台电脑通信,或者说聊天,我去这咋办到?能办到的可以称得上是神人,真的!我感觉很神奇,两台机器可以聊天,想想都好神奇,不过事实上他们确实可以。这是怎么做到呢? 首先,电脑只认识0或1,0或1其实可以认为是一种对立统一的矛盾体,简单的把世界一分为二。那在计算机的世界中0或1是什么呢?或者说是怎么体现的呢?核心在于对立统一,比如:用光盘上的ao点表示0那tu就是1,用磁盘上细磁针的北极表示0那南极就是1,用交流电的某个区间表示0那其他区间就是1,用直流电的低电平表示0那高电平就是1,理解了0或1在计算机的世界里是怎么表示的再加上计算机只认识0或1,那使两台计算机谈恋爱就是有可能的啦!只要从一台机器上往另一台机器上发送能表示0或1的东西,再加上约定好发送多少个0或1的组合表示什么意思,那两台计算机就能聊天了,剩下的就是怎么发生0或1的组合?以及约定各种0或1的组合是什么意思?怎么接受0或1的组合?目前世界上仅有两台电脑不用什么DNS、IP、CDN等等,如果世界有100亿台电脑呢?那怎么知道该给谁发信息?怎么表示这么多地址?怎么记住这么多地址?太复杂了,必须采用分而治之的思想,而且要灵活互不影响,所以,网络通信协议就被分成了多层每一层只关心自己的事情,上层依赖下层的接口或数据但是不关心她是怎么实现的,于是就有了链路层、网际层、传输层、应用层。机器毕竟是机器,想谈恋爱的是人类,所以,越靠上对人类越友好,如果仅仅是为了让机器能交流有些层是没有存在的理由的。OK,我觉得我把网络协议的分层结构给说明白了,那二层转发、三层路由是什么呢?二层、三层代表网络协议栈的层次,转发是倒腾数据,路由是倒腾该往哪去。每一层都有许多网络设备,目前不清楚都是啥?工作原理是啥?所以,具体怎么倒腾的细节就不清楚了,这个需要继续学习。 2:你认为上一讲中的 DNS 协议位于哪一层呢? 简化人类的记忆,对人友好靠上,应用层 3:你认为 CDN 工作在那一层呢? 加速人类获取信息的速度,对人友好靠上,应用层展开
作者回复: 学习态度认真,awesome!!
共 5 条评论21 - Young2019-06-071. 二层转发,工作在二层的设备(i.e交换机)只认识MAC地址,所以建立MAC地址和端口的映射关系,来决定往哪个端口转发。 2.三层路由,工作在三层的设备(i.e路由器)利用ip地址和port,根据路由表选择最佳路径来转发包。 3.dns属于应用层 4.cdn应该工作在应用层展开
作者回复: 说的很对
共 2 条评论16 - 蚂蚁内推+v2019-06-09首先感谢老师,之前不太理解七层与四层的对应关系,因此很难去记忆,看了之后恍然大悟。但有点疑惑的是, 最后说的两个凡是中的第一个是说「四层或四层以下」指的是传输层及以下是由操作系统负责的吗?而「七层」指的是应用层到会话层是应用程序负责的吗? 课后作业: 1. 第一次听说这两个概念,查了下资料。请老师帮忙过目、检查,首先这里的二层和三层指的都是 OSI 中的对应的层级;二层转发就意味着是在数据链路层(Data Link Layer)做的转发,基于 MAC 地址,通常指的是交换机;三层路由意味着是在网络层(Network Layer)做的转发,通常指的是路由器(当然也有路由功能的交换机);当数据传输到网络层,路由器会检查目的 IP 是否与自己处于同一网段,是则进行二层转发即请求目的主机的 MAC 地址,否则进行三层转发即进入路由的递归查找。 2. DNS 属于应用层,其本身并不负责传输、网际的实际操作,只是将域名解析为 IP,方便下一层的使用; 3. CDN 也应当属于应用层,类似于 DNS 他们都是针对传输后的数据内容的操作,而非实际去处理传输等操作。展开
作者回复: 你理解的很对。 当然,“两个凡是”也不是绝对的,比如dpdk就把tcp协议栈都拿到了操作系统外实现,但大多数情况下传输层以下都由操作系统负责。
13 - xing.org1^2019-06-12传输层这里,tcp和udp也可以用不同公司快递员送货来理解吧,tcp就像一些负责人的公司的快递员,送货时会提前打电话联系问你在不在家,可以保证把你的货物送到手上。udp则像另一种情况,直接拿着东西到你家门口,也不管你家有没有人,如果有就刚好送到你手上,没有在家就给你扔门口走了,他不保证会把快递送到你手上。
作者回复: 这个比喻不错。
7 - 业余爱好者2019-06-07基础太差,第一题不太懂。 第二题应该是应用层吧。dns域名解析是需要请求dns服务器的,而服务器本质是一个软件(应用),不是操作系统处理,由"两个凡是"定理推出,dns为应用层协议。 第三题不太清楚,个人猜想也是应用层。cdn与dns一样,并非是通信过程必须的一种机制,而只是一个满足特定场景下某种需求的一个"应用",所以应该也是应用层。展开
作者回复: 对的,可以参考其他同学的回答。
7 - HeGuang2019-06-07老师慢慢写,太难的话看不懂了
作者回复: 多谢支持。
4 - 镜花.水月2022-01-221.你能用自己的话解释一下“二层转发”“三层路由”吗? 二层转发:交换机二层的转化设计到两个关健的线程:地址学习线程和报文转发线程 地址学习线程: 1.交换机接收到网段上所有的数据帧,利用数据帧中的源MAC地址建立MAC地址表 2. 端口移动机制:交换机如果发现一个报文的入端口和报文中源MAC地址的所在端不同,就产生端口移动,将MAC地址重新学习到新的端口 3.交换机老化机制:交换机在很长一段时间之内没有接到某主机发出的报文。在该对应主机的MAC地址将会被删除,等下次报文来的时候会重新学习 报文转发线程: 1.交换机在MAC地址表中查找数据帧的目的MAC地址, 如果存在目的MAC地址,就转发该数据帧到目的MAC地址的相应端口, 如果不存在,就向全部端口发送 2.如果交换机收到的报文MAC地址和目的MAC地址所在的端口是同一个,则丢弃该报文 3.交换机向入端口以外的其它所有端口转发广播报文。 报文转发引入 VLAN (虚拟局域网)的概念管理上得到了很好的帮助。限制了局部的网络流量,在一定程度上提高个网络的处理能力 虚拟的工作组,通过灵活的VLAN 设置,把不同的用户划分到不同的工作组,3.安全性的提高,一个VLAN内的用户和其他VLAN 内的用户不能互通。提高安全性。 而且报文转发线程的三点发送端口的范围也得到了限制,从向全部端口发送数据帧,面向从一个局部虚拟网络发送.很好的控制了广播范围 =======三层交换流程======== 三层交换流程 假设现在有两个VLAN 虚拟局域网 VLAN-1, VLAN-2。VLAN-1下有路由接口A, 路由接口B VLAN-2下有路由接口C, AB之间通讯(A向B发起ping请求为例)。 1.A 检查B路由接口的IP地址,发现属于同一个网段。 2.A ---> B ARP请求报文,该报文在VLAN-1内广播。 ARP (Address Resolution Protocol 地址解析协议) 3.B---> A ARP回应报文; 4. A----> B icmp request; 5. B ----> A icmp reply ; ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。 AC之间通讯(A向C发起ping请求) 1.A 检查C路由接口的IP地址,发现不属于同一个网段。 2.A ----> switch (int vlan-1) ARP报文请求,该报文在VLAN-1局域网内广播。 3.网关 ------> A ARP回应报文; 4.A -----> switch icmp request (目的MAC是int vlan-1的MAC, 源MAC是A的MAC, 目的IP是C, 源IP是A) 5.switch收到报文后判断出是三层的报文,检查报文的目的IP地址,发现是在自己直连网段; 6.switch (int vlan-2) ----> C ARP请求报文,该报文在VLAN-2局域网内广播; 7.C------> switch(int vlan-2) ARP 回应报文 8.switch (int vlan2) -----> C icmp request 9C -------> A icmp reply; 从A到B的报文由于在同一个VLAN内部,报文的目的MAC地址将是主机B的MAC地址,而从A到C的报文,要跨越VLAN,报文的目的MAC地址是设备虚接口VLAN1上的MAC地址。因此交换机区分二三层报文的标准就是看报文的目的MAC地址是否等于交换机虚接口上的MAC地址。 2.你认为上一讲中的 DNS 协议位于哪一层呢? DNS (Domain name System 域名系统)是基于UDP,UDP是属于传输层,DNS在传输层之上,所以是在应用层 3.你认为 CDN 工作在那一层呢? CND (Content Delivery Network 内容分发网络) 是基于TCP,也是属于传输层,CDN也是属于应用层展开
作者回复: great
3 - Leolee2021-04-04作业: 本文中说只有OSI有写一层二层三层等,一开始把作业想复杂了,看完了评论才明白了一点; 二层转发:指的应该是模型中的第二层是数据经过第二层时检查帧的头信息(即各层加的专有头,例如mac头、ip头、http头),“翻译后”拿到mac地址,进行本地转发和广播; 三层路由:第三层的功能就是路由寻址,数据经过第三层时,设备就会分析报文中的头信息,拿到ip地址进行路由寻址(选择本地转发或选择下一个网关)。 DNS:全称是Domain Name System,作用是把IP地址和域名互相转换,工作在应用层,它不需要管数据具体怎么传输,只需要转换IP地址和域名。 CDM:工作在应用层 TCP/IP网络分层模型: TCP/IP协议总共四层,每一层都需要上层的支撑并支撑着上层,层次顺序是从下往上数,最底层就是第一层;核心是二层的IP和三层的TCP,HTTP在第四层;类比搭积木: 第一层:链接层(link layer),也叫MAC层,负责在以太网、wifi这写底层网络上发送原始数据包,工作在网卡这个层次,使用MAC(Media Access Control Address 局域网地址 可以唯一地标识一个网卡与其所属设备)地址标记网络上的设备。 第二层:网际层(internet layer),也叫网络互联层,Internet Protocol(IP)协议就在这一层,因为IP协议定义了“IP地址的概念”,所以就可以在“链接层”的基础上以IP地址取代MAC地址,把众多局域网、广域网连接成一个虚拟的巨大网络,在这个网络里找设备室只要把IP地址再“翻译”成MAC地址即可。 第三层:传输层(transport layer),此层协议的智者是保证数据在IP地址标记的两点之间“可靠”地传输,是TCP协议工作的层次,TCP协议就叫Transmission Contorl Protocol 数据传输控制协议,把这层记作TCP层也行。TCP还有一个”小伙伴“UDP工作在这一层; TCP是一个有状态的协议,需要与对方先有连接然后才能发送数据,并且保证数据可靠不丢失。TCP的数据是连续的“字节流”,有先后顺序。 UDP(User Datagram Protocol 用户数据报协议)的特点就与TCP相反了,它是无连接、不可靠、快速传输的。UDP的数据是分散的小数据包,是顺序发、乱序收。 TCP就像顺丰、京东的快递员,送货前需要先取货(顺序发),送到你手之前一定打电话与你联系(建立连接),确认你在家再送到你手或者放在你指定的地点(传输数据);UDP就像百世/圆通的快递员,送货前快递员也需要先取货(顺序发),送货之前未必会打电话(无需连接/无连接),直接丢到你门口或者门卫处,你收不收得到在当下它可不管。所以是顺序发,乱序收。 第四层:应用层(application layer),由于下面三层把基础打得非常好,这一层就“百花齐放”了,各种面向具体应用的协议有很多,例如:Telnet、SSH、FTP、SMTP、HTTP等。 TCP/IP协议栈每层的传输单位叫法都不同,但无本质区分,统称数据包: 第一层 MAC层: 帧(frame) 第二层 IP层: 包(packet) 第三层 TCP层: 段(segment) 第四层 HTTP层:报文(message) TCP/IP协议栈的工作方式 我可以把HTTP利用TCP/IP协议栈传输数据想象/类比成一个收发快递的过程: 假设我把毛公仔寄快递给朋友,需要先拿胶袋套一下,这个毛公仔就下大雨HTTP协议里要传输的内容,比如HTML,然后HTTP协议为它加上一个HTTP专用附加数据(胶袋); 我把毛公仔交给快递小哥,为了保护货物,他又加了层包装袋并贴了个标签,相当于在TCP层给数据再次打包,加上TCP头(快递标签纸); 快递小哥收件后运回集散点,然后装上更大的卡车里(从我到朋友这一条路就相当于IP协议链接起来的路),相当于在IP层、MAC层对TCP数据包加上了IP头、MAC头; 毛公仔经过运输到达了朋友的城市→当地的快递小哥再把毛公仔送到了朋友的家门口,撕掉了快递标签纸(TCP头)→朋友拆掉快递包装袋(HTTP头)→朋友拿到了毛公仔。 HTTP协议的传输过程就是通过协议栈逐层向下,每一层都加上本层的专有数据,层层打包,然后通过下层发送出去; 接收数据则是相反操作,从下往上逐层拆包,每层去掉本层的专有头,上层就会拿到自己的数据; 下层的传输过程对于上层是完全透明的,上层也不需要关心下层的具体实现细节,所以就HTTP层次来看,它不管下层是不是TCP/IP协议,看到的只是一个可靠的传输链路,只要把数据加上自己的专有头,对方就能原样收到。展开
作者回复: 总结的非常好,awsome。
共 2 条评论3 - 飞翔的葱油饼2021-03-301.二层转发,指的是在数据链路层的转发。这一层是交换机做的,根据mac地址转发到局域网中的某台机器;三层路由,指的是在网际层的根据ip的路由,是路由器做的,根据数据包的目的ip地址,转发到下一跳。 2.DNS是做域名到ip的转换,猜测应该工作在网际层之上,应该是在传输层? 3.CDN做内容分发,反向代理等,猜测是工作在传输层?
作者回复: 1回答正确。 2、3不对,它们都是在应用层,dns基于udp,而cdn通常基于tcp,所以是在传输层之上。 只要关心的是具体的应用内容,涉及业务,而不是单纯的从A到B的数据搬运,就是应用层。
共 2 条评论3 - 不矫情不做作那是我2019-06-10老师,我看有的书上面说TCP/IP 模型早期是四层,现在划分成五层了
作者回复: 我觉得大家不用纠结这些细节,自己理解了就好。 有兴趣可以参考RFC1180。
2 - Carson2019-06-101. 二层转发:指的是OSI中数据链路层设备(交换机)通过MAC地址来决定转发到哪个端口;三层路由:指的是OSI中网络层设备(路由器)通过Ip地址来决定路由到哪个网络 2. 应用层 3. 应用层
作者回复: √
2 - bywuu2019-06-07二层转发:设备工作在链接层,获取了数据报的头部信息之后,根据目标的MAC地址,进行本地转发和广播 三层路由:设备工作在IP层,通过分析数据报的头部信息,得到IP地址,根据网段范围,进行本地转发或选择下一个网关 dns和cdn都在应用层
作者回复: ✔️
2 - 波塞冬2020-03-29快递的比喻真是形象啊
作者回复: 其实所有的协议都是这样,一层层加包装。
1 - Geek_wannaBgeek2020-03-16今日打卡,不但老师讲得好,看评论也能学到知识
作者回复: keep studying
1 - Geek_0cca902019-07-13老师,nginx是不是做的四层负载均衡,那七层负载均衡有什么软件实现了吗
作者回复: Nginx的http子系统工作在应用层,也就是7层,stream子系统工作在传输层(tcp、udp),也就是4层。 所以Nginx支持的是四层和七层负载均衡。
1 - 啦啦啦2019-07-02看到现在,这节课收获最大,知道了四层七层的区别
作者回复: 继续努力,后面还有很多知识点。
1 - 二楞子2019-06-11老师我想问下dns是解析ip地址的吗?ip在二层 为什么dns是在应用层呢?
作者回复: dns使用udp,在传输层之上,所以是应用层。
共 2 条评论1