梳理一遍五层计网中比较重要的点

春招自闭,照着PPT梳理了一下五层网络模型中比较重要的地方(我会不断的完善啦~)

一、物理层(不太重要)

知道他是为了统一规范,屏蔽底层差异,使得比特流能够在物理线路上正常传输即可了。
比如正电压多少多少代表1,负电压多少多少代表0;

二、数据链路层(一般)

数据链路层作用:对于物联层传递过来的协议做一个检测和封装,检测看他有没有差错,有差错就丢掉,等他传递新的过来(上层协议有超时重传机制),封装则是为了传递

所有数据链路层都要解决三个问题:
如何封装成帧、如何解决透明传输、怎样差错控制
(1)封装成帧
在这里插入图片描述
在帧首部和帧的尾部我们使用帧界定符号来区分帧的首尾和帧数据之间的差异

(2)透明控制
这时会出现另一个问题:如果帧的数据部分有界定符怎么办?
解决办法:给数据中的界定符加一个转义符号,当要交给上场时去掉转移符号即可(会同时帧首和帧尾部都会被去掉),此方法专业名称为:字节填充

(3)差错控制
传递过来的比特流有可能出现1变0,0变1的情况,此时我们就需要差错控制
检错技术:循环冗余检测CRC
原理:在发送端的数据链路层对数据做个CRC计算,将得到的冗余码添加到帧中,接收端的数据链路层接受到了这个帧,进行检验,检验通过就接收。

数据链路层的一些体现:如网卡,他是一种适配器,网卡中的协议等等能实现数据链路层的作用
在这里插入图片描述
典型协议:PPP(3P协议)
3P协议就是一种典型的数据链路层协议,他是一种点对点协议,比如我们以前拨号上网进行通信时用的就是PPP协议

CSMA/CD协议:载波监听多点接入 / 碰撞检测 (这个问的很少很少 大概知道干撒的就行)

三、网络层(重要!)

1.ARP协议
含义:地址解析协议
作用:在局域网中我们有了
原理过程:我们知道了目的地址的IP地址,这时我们要把数据报发送过去,我们还需要目的主机的MAC地址。这时发送端会首先去寻找他的ARP缓存,看看能不能找到MAC地址和IP地址的映射。如果找不到,就会发送一个ARP广播,广播中带有目的IP地址,其他主机收到这个ARP请求分组,则会查找自己的ARP缓存,如果自己有的话就会回应这个ARP请求分组,将地址映射发给请求主机。这样请求主机就拿到了映射,写入自己的ARP缓存,然后就可以愉快的发射他的数据报啦~

注意:如果所要找的主机不在当前局域网怎么办?
那么就要通过ARP找到本局域网上的一个路由器,然后把分组发给路由器,路由器通过路由表去找寻…最后找到目的主机发送成功~
其实这里是有安全风险的,如果在一个大型局域网中,可能会有专门的ARP服务器,这时如果黑客把他的ARP服务器接入,那么你得到就是黑客所提供的MAC地址,那你的数据包怕是有点危险
在这里插入图片描述
2.IP
IP可以说是网络层最为重要的一环、IP其实是一个逻辑地址,用于屏蔽不同设备网络之间的差异化,比较重要的内容:划分子网超网,分类IP地址 但这些面试的时候问的很少

片偏移:8个字节为一个单位,用来IP数据报的分断
首部长度:
最小长度:20字节
最大长度:60字节
生存时间:报文的最大生存时间,这个由他可以穿越的路由器数量决定
目的地址、原地址
首部校验和:只检验数据报的首部(不采用CRC)
协议:要交给上层,其中记录着上层要用到的协议

3.ICMP协议(注意是网络层哦)
作用:
(1)主要用来查看网络链路是否是通的,看他的时延高不高等,就是我们平时使用的ping命令
(2)还可以发送探测报文,来获取链路地址信息
ICMP有五种差错报文和两种查询报文

四、运输层(重要!)

运输层作用:抽象的给应用层提供信息,应用层的协议基本都基于传输层

TCP协议:
(1)面向连接
(2)点对点通信
(3)面向字节流:这里的字节流是TCP把应用程序传下来的数据仅仅看成一连串无结构的字节流,但发送还是以数据报的形式发送
(4)拥塞控制:网络情况不好情况下出现的
a、慢开始:开始已翻倍的形式增加拥塞窗口,当达到阈值时启动拥塞避免算法缓慢增加拥塞窗口
b、快速重传:当连续发生三次ACK的重复传送时,意识到丢包,就会立即重传这个包
c、选择性重传:当连续发送三次重复的ACK时,若在ACK报文中添加SACK这个属性,则只会重传丢掉的那个包
d、拥塞窗口:发送端对于发送窗口的大小 min(公告窗口,拥塞窗口值)
(5)流量控制:接受端处理不过来进行控制
a、可变的滑动窗口
这个滑动窗口是动态,在TCP建立连接时。回传给发送端的ACK会携带接受端的可用窗口有多少,发送端就会发送<=接收端可用窗口,每次接收端收到以后返回的ACK就会告诉发送端我目前的接受窗口还有多少空余
总共有四个滑动窗口,发送端有一个发送窗口和接受窗口,接受端有一个发送窗口和接受窗口
(6)TCP连接的端点:是个很抽象的套节字
IP地址:端口号
(7)全双工通信
UDP协议:
(1)尽最大努力交付
(2)面向报文(传下来一个发一个报文)
(3)可以一对一,一对多,多对多

五、应用层(重要)

1、域名系统DNS
域名解析为IP地址,当你输入url时,浏览器会去搜索本地的DNS缓存,如果没有去地方的DNS服务器查询,如果地方DNS服务器没有,就去根DNS服务器去迭代查询。最终查询到返给用户。
2、FTP文件传送协议
FTP屏蔽了各种细节,因此合适在异构网络中的任意计算机传递文件
3、HTTP
HTTP1.0是无状态的
HTTP协议本身也是无连接的
HTTP/1.1使用持续连接
a、HTTP1.0和HTTP1.1有什么区别?
(1)缓存处理:
HTTP1.0:主要使用header里的If-Modified-Since(协商缓存),Expires(强缓存)来做为缓存判断的标准
HTTP1.1:引入了Etag的缓存,Etag是一种文件哈希值用在浏览器的协商缓存中
(2)长连接:
HTTP1.0:无长连接,每次Http请求都要建立连接
HTTP1.1:支持长连接和请求的流水线(也称管线机制)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容
但可能出现Http队头阻塞:因为服务器响应的必须是按照顺序的,因此如果前头有一个http迟迟没有处理完毕,导致后面的响应也无法被传送,因此就出现了Http对头阻塞,这个问题在HTTP2.0被解决
(3)Host头域:
HTTP1.0:无HOST头域
HTTP1.1:必须带上HOST头域,不然报错400,这个用来解决虚拟机问题
(4)更多的错误状态码

	**b、HTTP2.0与HTTP1.0有撒区别:**
	(1)HTTP2.0进行了header压缩,比如建立长连接后 header里很多信息都不用再带
	
	(2)服务端推送
		HTTP1.1:必须自己请求
		HTTP2.0:服务端会主动自己推送客户端可能要用到的文件
		
	(3)多路复用:为了解决1.0出现的队头阻塞,HTTP2.0提出了多路复用,即连接共享,一个TCP连接中可以有多个请求,即多个请求复用同一个TCP链接。
	
	为什么这样就可以解决队头阻塞呢?
	一个request有一个,有了id我们就知道这个请求是哪个服务器发过来的哪个请求,这样即使乱序了,我也能把他排好
	
	(4)新的二进制格式:
	HTTP1.0(文本传输):基于文本协议格式进行解析
	HTTP2.0(而进制分帧):采用二进制格式进行解析,他性能增加的核心就在于这个二进制分帧
发布了20 篇原创文章 · 获赞 9 · 访问量 3520

猜你喜欢

转载自blog.csdn.net/weixin_44956861/article/details/105019153