闲的很,学tm的!
参考资料:
- https://zhuanlan.zhihu.com/p/552415999
- https://www.runoob.com/w3cnote/summary-of-network.html#_label0
- https://www.freecodecamp.org/chinese/news/osi-model-networking-layers/
OSI七层模型
应用层 |
---|
表示层 |
会话层 |
传输层 |
网络层 |
数据链路层 |
物理层 |
物理
电器元件上的传输,包括所有的硬件设备和接口,以bit为单位进行传输,可以同时收发的节点叫双工
典型的设备有中继器,集线器等
数据链路层
对物理层进行控制的协议,包括通信时间,流量和检查错误,这里的设备使用MAC地址进行身份识别,基于MAC使用LLC进行数据传输
典型的设备有交换机,网桥等
基本单位是frame(帧),使用以太网协议
帧的组成如下
帧头(Frame header):它包含帧的源地址和目的地址。
有效载荷(Payload Field):它包含要传递的数据和信息。
尾部标记(Trailer):它包含错误检测和错误纠正位。
标记(Flag):它标记了帧的开始和结束。
帧一般有一个最大值的限制
这一层确定了节点的通信协议,可以进行通信路线规划流量控制和错误控制
网络层
这里开始可以实现真正的网络通信了,他可以跨网络通信。
最典型的设备是路由器
基本单位是数据包,由一个帧加上ip地址,这一层会处理的事情是把数据包尽可能的发到目的地
ARP协议是根据ip获取物理地址的一个协议,用于减少广播请求主机的MAC地址的次数
ICMP协议,ping和traceroute用的协议,用于检查网络链路
传输层
这里有TCP和UDP协议,实现节点到节点之间的连接控制,并控制数据可靠性。
主要设备是网关
数据单位是报文
TCP协议,面试里最常见的东西,他优先保证了通信可靠性,有三次握手
UDP协议,不保证数据的可靠性,只管扔出去,不管对面收没收到
有一个接口叫套接字(socket)那个天才翻译的,要我就翻译成袜子(,是ip和端口号的组合
会话
会话层已经完成了通信的抽象,关注的是建立,维持和终止会话。
有netbios,rpc协议
表示
用于将传输的数据编码转换成可读数据
这里的功能可以是用户层序实现的
SSL和TLS是在本层的
应用
这一层实现的协议有DNS,SMTP,FTP,HTTP等等,包含了用户使用的程序,包括浏览器等
举个栗子
在浏览器中输入 http://www.baidu.com/ 后执行的全部过程。
现在假设如果我们在客户端(客户端)浏览器中输入 http://www.baidu.com, 而 baidu.com 为要访问的服务器(服务器),下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作:
1)客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
2)在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
3)客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
4)客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址