将网络各个层面比喻成一次深情的告白:
应用层: 规定"应用程序"的数据格式. http / ftp /email 等. //纸条上写的是啥?
传输层: 建立"端口"到"端口"之间的通信. UDP/TCP 协议."端口". //我们帮你传纸条
网络层: 确定每一台计算机的位置,建立"主机"到"主机"之间的通信.IPv4协议,"IP地址". // 女孩的位置
数据链路层: 确定1和0的分组方式.以太网协议:一组电信号就是一个数据包."MAC地址"/网卡/广播. // 深情告白
物理层: 将电脑连接入网络,传输电信号1和0. // 一张白纸
互联网分层结构的好处:
上层的变动完全不影响下层的结构.
实体层/物理层:
n “实体层”,就是将电脑连接起来的物理手段. 光缆/电缆/无线电波
n 主要定义了物理设备的标准,如网线/光纤的接口类型,各种传输介质的传输速率等.
n 作用:负责传送‘0’和‘1’的电信号.
链接层/数据链路层:
为了解读 0 和 1,必须规定解读方式;这样就产生了数据链路层.
数据链路层: 位于物理层的上方;主要确定了 0 和 1 的分组方式.
这一层通常还提供错误检测和纠正,以确保数据的可靠传输.
网络层
在网络中,有很多台计算机.我们如何找到特定的一台的计算机给他发送数据呢? 或者说,我们如何通过一条最佳的路径将数据传递给另一台计算机?
为了解决这个问题,我们发明了网络层,在网络层引入了一套地址机制:网络地址.简称网址,又叫做Ip地址.通过Ip地址,可以找到唯一的一台计算机.
我们通过路由器,交换机等具有寻址功能的设备帮助我们找到Ip地址对应的计算机.所以产生了Ip协议.
网络层 建立 主机 到 主机 之间的通信.
传输层
那么,问题又来了!在计算机中,有很多使用网络的应用程序,比如QQ,陌陌,浏览器等等.只要使用网络.他们的信息最终都是通过网卡接收和发出的.我们怎么判断一条信息是发送给哪一个应用程序的呢?
要解决这个问题,我们必须引入一个新的层:传输层.传输层的作用,就是使不同的应用程序能够接收到自己所需要的的数据.
为了区分数据应该发送给哪一个应用程序,在传输层我们给每一个使用网卡的应用程序一个编号.这个编号,就是端口
以后,我们在发送数据的时候,只要附带上端口号,就可以知道这条数据是发送给哪一个应用程序了.
传输层建立的是 端口 到 端口 之间的通信.
会话层
现在我们已经能够找到的正确的计算机,并且发送数据给特定的应用程序了.但是,难道每次我们收发送数据,都要自己手动来实现TCP协议和IP协议嘛?这样的用户体验非常差!
为了实现自动收发数据,自动寻址功能;我们引入了会话层.会话层的作用,就是建立和管理应用程序之间的通信.
表示层
现在我们已经能够实现应用程序的自动收发数据和寻址功能了.但是我要用 Unix 系统给 Windows 系统发送数据,两个系统的语法不一样!(比如 .exe 包不能直接运行在Mac系统下).怎么解决不同系统之间通信的语法问题呢?
于是我们引入了表示层,以解决不同系统之间的通信问题.
应用层
现在我们的通信问题已经基本都能够解决了.但是,不同的应用程序应该传递什么样的数据格式呢?比如,网页,电子邮件,FTP.他们分别传递什么数据格式呢?
为了解决不同应用程序的数据格式问题,我们引入了应用层.应用层规定了不同应用程序的数据格式.
最常见的应用层协议:HTTP协议/超文本传输协议!
信息的传递方式
在同一个子网络内,计算机通过广播的方式发送信息.信息由发送方计算机的网卡进入到接收方计算机的网卡.
在不同的子网络之间,计算机将信息从网卡发出后,首先通过路由的方式找到接收方计算机所在的子网络(局域网),将信息传递给网关,然后再由网关通过广播的方式,将消息送达到接收方计算机的网卡.