网络七层协议的通俗理解

网络七层协议的通俗理解

这里写图片描述

OSI七层模式简单通俗理解

这个模型学了好多次,总是记不住。今天又看了一遍,发现用历史推演的角度去看问题会更有逻辑,更好记。本文不一定严谨,可能有错漏,主要是抛砖引玉,帮助记性不好的人。总体来说,OSI模型是从底层往上层发展出来的。

这个模型推出的最开始,是是因为美国人有两台机器之间进行通信的需求。

需求1:

科学家要解决的第一个问题是,两个硬件之间怎么通信。具体就是一台发些比特流,然后另一台能收到。

于是,科学家发明了物理层

主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。


需求2:

现在通过电线我能发数据流了,但是,我还希望通过无线电波,通过其它介质来传输。然后我还要保证传输过去的比特流是正确的,要有纠错功能。

于是,发明了数据链路层

定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
在该层中,数据以为单位传输。在帧中,有收信地址(Source, SRC)和送信地址(Destination, DST),还有能够探测错误的校验序列(Frame Check Sequence)。当然,帧中最重要的最重要是所要传输的数据 (payload)。

以太网(Ethernet)WiFi是现在最常见的连接层协议。通过连接层协议,我们可以建立局域的以太网或者WiFi局域网,并让位于同一局域网络中的两台计算机通信。


需求3:

现在我能发正确的发比特流数据到另一台计算机了,但是当我发大量数据时候,可能需要好长时间,例如一个视频格式的,网络会中断好多次(事实上,即使有了物理层和数据链路层,网络还是经常中断,只是中断的时间是毫秒级别的)。

那么,我还须要保证传输大量文件时的准确性。于是,我要对发出去的数据进行封装。就像发快递一样,一个个地发。

于是,先发明了传输层(传输层在OSI模型中,是在网络层上面)

例如TCP,是用于发大量数据的,我发了1万个包出去,另一台电脑就要告诉我是否接受到了1万个包,如果缺了3个包,就告诉我是第1001,234,8888个包丢了,那我再发一次。这样,就能保证对方把这个视频完整接收了。

例如UDP,是用于发送少量数据的。我发20个包出去,一般不会丢包,所以,我不管你收到多少个。在多人互动游戏,也经常用UDP协议,因为一般都是简单的信息,而且有广播的需求。如果用TCP,效率就很低,因为它会不停地告诉主机我收到了20个包,或者我收到了18个包,再发我两个!如果同时有1万台计算机都这样做,那么用TCP反而会降低效率,还不如用UDP,主机发出去就算了,丢几个包你就卡一下,算了,下次再发包你再更新。

TCP协议是会绑定IP和端口的协议,下面会介绍IP协议。


需求4:

传输层只是解决了打包的问题。但是如果我有多台计算机,怎么找到我要发的那台?或者,A要给F发信息,中间要经过B,C,D,E,但是中间还有好多节点如K.J.Z.Y。我怎么选择最佳路径?这就是路由要做的事。

于是,发明了网络层。即路由器,交换价那些具有寻址功能的设备所实现的功能。这一层定义的是IP地址,通过IP地址寻址。所以产生了IP协议。
通过路由实现不同局域网间的通信。


需求5:

现在我们已经保证给正确的计算机,发送正确的封装过后的信息了。但是用户级别的体验好不好?难道我每次都要调用TCP去打包,然后调用IP协议去找路由,自己去发?当然不行,所以我们要建立一个自动收发包,自动寻址的功能。

于是,发明了会话层。会话层的作用就是建立和管理应用程序之间的通信。


需求6:

现在我能保证应用程序自动收发包和寻址了。但是我要用Linux给window发包,两个系统语法不一致,就像安装包一样,exe是不能在linux下用的,shell在window下也是不能直接运行的。于是需要表示层(presentation),帮我们解决不同系统之间的通信语法问题。


需求7:

OK,现在所有必要条件都准备好了,我们可以写个android程序,web程序去实现需求把。


Socket:

这不是一个协议,而是一个通信模型。其实它最初是伯克利加州分校软件研究所,简称BSD发明的,主要用来一台电脑的两个进程间通信,然后把它用到了两台电脑的进程间通信。所以,可以把它简单理解为进程间通信,不是什么高级的东西。主要做的事情不就是:

A发包:发请求包给某个已经绑定的端口(所以我们经常会访问这样的地址182.13.15.16:1235,1235就是端口);收到B的允许;然后正式发送;发送完了,告诉B要断开链接;收到断开允许,马上断开,然后发送已经断开信息给B。

B收包:绑定端口和IP;然后在这个端口监听;接收到A的请求,发允许给A,并做好接收准备,主要就是清理缓存等待接收新数据;然后正式接收;接受到断开请求,允许断开;确认断开后,继续监听其它请求。

可见,Socket其实就是I/O操作。Socket并不仅限于网络通信。在网络通信中,它涵盖了网络层、传输层、会话层、表示层、应用层——其实这都不需要记,因为Socket通信时候用到了IP和端口,仅这两个就表明了它用到了网络层和传输层;而且它无视多台电脑通信的系统差别,所以它涉及了表示层;一般Socket都是基于一个应用程序的,所以会涉及到会话层和应用层。

### OSI七模型的通俗解释 OSI(Open Systems Interconnection)七模型是一种理论上的网络通信框架,用于描述计算机之间如何通过网络进行通信。以下是每的功能及其作用: #### 1. **物理** 该负责定义硬件设备之间的物理连接方式,例如电缆、光纤等介质以及信号的电平标准。它关注的是比特流的实际传输过程[^2]。 ```plaintext 例子:网线插头的标准(RJ-45),光缆中的激光脉冲。 ``` #### 2. **数据链路** 此的主要职责是在相邻节点间可靠地传递数据帧,并检测可能发生的错误。常见的技术有以太网(Ethernet)。 ```plaintext 实例:MAC地址用来唯一标识局域网上的一台机器。 ``` #### 3. **网络** 这一的任务是决定数据包从源到目的地的最佳路径,涉及逻辑寻址(IPv4/v6) 和路由选择算法[^3]。 ```plaintext 样例:路由器依据目标IP地址转发数据包至下一跳。 ``` #### 4. **传输** 确保端到端的数据交付完整性和顺序性。TCP(Transmission Control Protocol) 提供面向连接的服务, 而 UDP(User Datagram Protocol) 则是非可靠的无状态服务[^4]。 ```plaintext 对比:下载文件时如果丢失部分数据,TCP可以重新请求缺失片段;但是视频直播更倾向于使用UDP因为延迟更重要而非绝对准确性. ``` #### 5. **会话** 管理不同主机间的对话控制,比如建立、维护和终止会话关系。还包括同步点设置以便于恢复中断的操作。 ```plaintext 场景:远程登录SSH session创建销毁流程。 ``` #### 6. **表示** 处理用户信息的表现形式转换工作,如加密解密、压缩解压等功能都在这里实现。 ```plaintext 应用案例:图片JPEG编码前后的变换操作属于此类范畴。 ``` #### 7. **应用** 直接面对最终用户的各类软件接口和服务程序所在之处,像HTTP、FTP都是典型代表[^2]。 ```plaintext 实际运用:浏览器访问网页即是调用了HTTP协议的应用表现。 ``` 以上是对OSI七模型较为简洁明了的阐述,希望可以帮助理解其基本概念与各次的作用范围。 --- ### 关于TCP/IP模型的区别说明 相比复杂的OSI架构,TCP/IP采用更为简化实用的设计思路——仅分为四个主要面:链路(Link Layer), 网络(Internet Layer), 传输(Transport Layer) 及 应用(Application Layer) 。尽管如此,在很多情况下两者存在对应映射关系[^1]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值