本章主要介绍网络协议,这个协议就叫做OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。我们谈到在任何联网的协议时,就会谈到OSI(网络七层协议模型)
,必须遵循这个协议模型,我们的手机和电脑才可以联网通信,接下来我们就一起来看一下OSI(网络七层协议模型)
七层协议
OSI层 | 功能 | TCP/IP协议 |
---|---|---|
应用层 | 文本传输,电子邮件,文件服务,虚拟终端 | FTP,HTTP,SNMP,DNS等 |
表示层 | 数据格式化,代码转换,数据加密 | 没有协议 |
会话层 | 解除或建立与其他节点的联系 | 没有协议 |
传输层 | 提供端对端的接口 | TCP,UDP |
网络层 | 为数据包选择路由 | IP,ICMP,RIP,OSPF,BGP,IGMP |
数据链路层 | 传输有地址的帧,错误检测功能 | SLIP,CSLIP,PPP,ARP,RARP,MTU |
物理层 | 以二进制数据形式在物理媒体上传输数据 | ISO2110,IEEE802,IEEE802.2 |
以上是七层协议,业界还产生出了一些其他协议模型。例如TCP/IP四层协议以及五层协议。
TCP/IP四层协议模型:
主要包括:
- 应用层
- 传输层
- 网络层
- 物理链路层
五层协议模型
主要包括:
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层
来自网图
通过看上面硬性的概念,可能我们很难理解网络七层协议
到底都是怎么一回事。接下来我会用一个小故事来帮助大家一起来理解记忆这网络七层协议
。
小故事
我们的故事以五层协议为基础,小明表白小红为主线。
小明暗恋小红很久了,可是却羞于当面表达爱意。于是他决定写一份email发给小红,来表白。
万里长城第一步:
小明从商店买了一堆物理线、网线接口、光纤等。一头连自己家,另一头连小红家。小明想到的第一个问题是:怎么才能让这个两个物理硬件之间进行通信呢?
于是小明发明了比特流,通过 1与 0之间转化为电流的强弱进行信号的传输也就人们常说的数模转换与模数转换。这时候已经完成了第一步,两个物理硬件之间的通信。这也就是我们通常所说的物理层
万里长城第二步:
小明想啊:我这两个物理硬件之间已经完成了通信,但是我怎么确保传输的数据是可靠的、安全的呢?因为小明想要求这封信是可靠的,安全的。他不想别人知道他喜欢小红。
因为在我们实际生活当中物理线路往往是不可靠,不安全的。可能会被别人偷听到,网线被别人挖了等等。
于是小明发明了数据链路层。通过数据链路层来确保数据的正确传输。当中就有一个叫数据包的家伙,通过一个个数据包来传输数据。数据包通过奇偶校验的形式或者其他的形式来校验数据是不是正确的。这个时候我们就完成了一个节点到另外一个节点数据包的传递。
万里长城第三步:
小明心想,这时候我已经可以把信发送到小红家了,可是万一小红不在家呢?在学校或者在其他某个地方旅游呢?那岂不是看不到我的信了?
这时候小明发明了网络层,即路由器。这时候小明会先把他的数据包发送给路由器,然后路由器发送给路由器,一路传过去,最后发送到了小红所在的电脑上,这就是网络层。同时,小明为了标识网络层的各个节点,他定义了Ip协议。因此每个节点都会有个IP。
万里长城第四步:
小明心想,这时候在我们数据链路层,能保证数据是否是正确的,但是不能保证我们的数据是不是可靠的。这个时候,我们需要一个能够保证我们数据传输出错后,能够自动重传机制。自动校验数据是否是发对了。
这时候小明发明了传输层。在传输层里面小明又制定了TCP/UDP协议。TCP协议是基于连接的,会在小明和小红电脑之间建立连接,在这个连接上去传输数据。
万里长城第五步:
这时候小明该做的也做了。可是我们的数据是为哪个应用服务的呢?是一个HTTP?还是一个FTP?还是一个Email的协议呢?这个就是小明发明的最后一个协议——应用层协议。
这样小明就完成了从不可靠、不安全的一层到应用层,可靠又安全的五层协议。最后小明如愿的像小红表了白。至于小明有没有和小红在没在一起,那我不知道了。这也就是我们后来所熟知的OSI(网络七层协议模型)在七层协议中会有两层会被淡化,所以我们这里只讨论五层协议。
不可靠
- 丢包,重复包
- 出错(只能通过重传来解决)
- 乱序
不安全
- 容易被窃取信息(在网络层,通过路由打电话,随时都可能被黑客监听)
- 窃取
- 篡改
文末
本章节主要介绍了OSI(网络七层协议模型)
如有不对的地方还望大家在下方留言欢迎关注公众号:Coder编程
获取最新原创技术文章和相关免费学习资料,随时随地学习技术知识!
参考文章:
https://www.cnblogs.com/carlo...
https://blog.csdn.net/taotong...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。