https://blog.csdn.net/insist530/article/details/77094897 OSI七层通信的简易理解-举例说明
两台机器通信过程:
需求一:两个硬件如何通信?一台设备给另外一台设备发比特流--->物理层
定义物理设备标准,网线/光纤/无线电等各种传输介质的接口类型,传输比特流(将0/1转化为电流强弱来传输,目的地转化为1/0,数模转换与模数转换)
需求二:保证传输过去的比特流是正确的,要有纠错功能---->数据链路层
需求三:物理层和数据链路层已经可以发数据了,但发视频等大文件,网络经常中断,数据不准确,就需重新发。于是对文件切割封装,于是先发明了传输层。
TCP:用于发大文件,将文件切割成1万个包,接收方要通知发送方是否完整接受到了1000个包,如果丢了几个包,就得请求发送方重新发送,保证接收方完整接受。
UDP:用于发小文件,将文件切割成20个包,一般不会丢包,也不用管对方是否完全收到。互动游戏中使用UDP,都是简单的信息且要广播,如果使用TCP,会不停告诉主机收到了20个包或者18个,要求再发,效率很低,还不如UDP,主机发出去就算了,丢几个包也就卡一下,算了。
传输层(TCP/UDP)基本上都是网络终端如电脑、服务器等应该实现的。当然工作在三层(IP层)的路由器/L3交换机等设备也带TCP功能,路由器自身的设备维护功能,如Telnet、TFTP、FTP等是要依赖于TCP来实现。
http://ask.zol.com.cn/x/5132240.html 传输层 都有哪些设备?
需求四:
传输层解决了切割打包的问题,但是A给F发,要经过B,C,D,E,F,中间还有其他的若干节点,如何选择最佳路径,于是发明了网络层,路由器,产生了IP协议。
需求五:会话层
已经可以给正确的接收方发送正确的封装过后的信息。但是用户体检不好?每次都要调用TCP打包,调用IP去找路由,自己去发?所以建立一个自动收发打包,自动寻址的功能,发明了会话层,建立和管理应用程序之间的通信。会话层(SESSION LAYER)允许不同机器上的用户之间建立会话关系。SQL工作在会话层。
会话层只需要调用其它层的接口即可,具体功能不用关心。
会话连接和传输连接之间有三种关系:一对一关系,即一个会话连接对应一个传输连接;一对多关系,一个会话连接对应多个传输连接;多对一关系,多个会话连接对应一个传输关系,好比打电话,一个人讲完后可以换另一个人讲话,而不必让电信局知道换了人讲话。会话过程中,会话层需要决定到底使用全双工通信还是半双工通信。如果采用全双工通信,则会话层在对话管理中要做的工作就很少;如果采用半双工通信,会话层则通过一计算机网络技术2个数据令牌来协调会话,保证每次只有一个用户能够传输数据。当会话层建立一个会话时,先让一个用户得到令牌。只有获得令牌的用户才有权进行发送。如果接收方想要发送数据,可以请求获得令牌。由发送方决定何时放弃。一旦得到令牌,接收方就转变为发送方。当我们进行大量的数据传输时,例如你正在下载一个100M 的文件,当下载到95M 时,网络断线了,这时怎么办?是否需要重头再传?为了解决这个问题,会话层提供了同步服务,通过在数据流中定义检查点(Checkpoint)来把会话分割成明显的会话单元。当网络故障出现时,从最后一个检查点开始重传数据。常见的会话层协议有:结构化查询语言(SQL);远程进程呼叫(RPC);X-windows 系统;
https://www.cnblogs.com/attilax/p/6209631.html 会话层和表示层的异同
需求六:表示层
现在能保证应用程序间自动收发包和寻址了,但是Linux给windows发包,系统语法不一致。发明表示层,解决不同系统之间的通信语法问题。
数据的压缩、解压、加密、解密都在该层完成。你的账户数据在发送前被加密,在网络的另一端,表示层将对接收到的数据解密。除此之外,表示层协议还对图片和文件格式信息进行解码和编码。
表示层是处理所有与数据表示及运输有关的问题,包括转换、加密和压缩。定义的是数据格式。
表示层协议:ASCII,MPEG,JPEG等。
需求七:
所有条件准备好,写个应用程序吧。
https://www.toutiao.com/i6712324597796045316/ 网络七层协议的通俗理解
https://www.cnblogs.com/softidea/p/6189204.html RPC、SQL、NFS属于OSI的哪一层