信号的传输总要符合一定的协议(protocol)。计算机之间的通信也要遵循不同层次的协议,来实现计算机的通信。
物理层:是指光纤、电缆或者电磁波等真实存在的物理媒介。物理层只负责正确地1和发送比特,并不关心这些比特的具体含义。
作用:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。尽可能屏蔽掉具体传输介质和物理设备的差异。
物理层协议(规程):对与基本物理信号传输有关的机械、电气等功能进行描述。这些媒介可以传送物理信号(比如亮度、电压或者振幅)
,也可传送数字信号(高电压表示1,低电压表示0)
,构成简单的物理层协议。
(1)机械特性:指明接口所用接线器的形状和尺寸、引脚的数目和排列、固定和锁定装置等。平时常见的各种规格的接插件都有严格的标准化的规定。
(2) 电器特性:指明在接口电缆的各条线上出现的电压范围。
(3) 功能特性:指明某条线上出现的某一电平的电压表示何种意义。
(4) 规程特性:指明对于不同功能的各种可能事件出现的顺序。
若生产相互连接的两个设备的两个厂商都遵循相同物理层规范(RS-232、RS-449、V.35、RJ-45),则二者必定能被连接在一起,并能接收对方发来的电、光或其他的物理信号,而且能正确地将这些物理信号理解为二进制的0和1序列。
OSI第二层,通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
在连接层,信息以帧(frame)
为单位传输。所谓的帧,是一段有限的0/1序列
。
帧的内容:标志主要是标识了帧的开始和结束。
字段包括有收信地址(Source, SRC)和送信地址(Destination, DST),控制字段,数据,还有能够探测错误的校验序列(Frame Check Sequence)
数据链路层的具体工作是
连接层协议的功能就是识别0/1序列中所包含的帧
。连接层协议不关心数据中到底包含什么。帧就像是一个信封,把数据包裹起来。
以太网(Ethernet)和WiFi是现在最常见的连接层协议。通过连接层协议,我们可以建立局域的以太网或者WiFi局域网,并让位于同一局域网络中的两台计算机通信。
数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。、
网络层 具体工作:将数据链路层提供的帧组成数据包
,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
在实现网络层功能时,需要解决的主要问题如下:
寻址
:数据链路层中使用的物理地址(如MAC地址
)仅解决网络内部的寻址问题。由于各子网使用的物理技术可能不同,物理地址并不唯一。因此在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一个唯一的地址,这个地址应当是逻辑地址(如IP地址
)。
流程:
网络地址为A,物理地址为10的计算机需要向网络地址为P,物理地址为95的计算机发送一个分组。这里我们用字母表示逻辑地址,用数字表示物理地址。
网络层
将数据封装在一个数据包中,并加入两个逻辑地址(A和P)。网络层咨询它的路由表,并找出下一跳(路由器1)的逻辑地址是F。利用地址解析协议(ARP)的协议,找出与该逻辑地址相对应的是路由器1的物理地址(20)。数据链路层
以物理目的地址20和物理源地址10来封装这个包然后发出。所有设备
都会收到这个帧,除了路由器1
之外,其它路由器都会选择丢弃该帧(因为只有路由器1发现该帧中的物理地址与自己的物理地址是相匹配的。)解封
后得到帧,并读出其逻辑目的地址是P。由于这个逻辑目的地址与路由器1的逻辑地址不匹配,路由器1就知道还需要继续转发
这个分组。交换
:规定不同的信息交换方式。常见的交换技术有:线路交换技术和存储转发技术,后者又包括报文交换技术和分组交换技术。
路由算法
:当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端。
连接服务
:与数据链路层流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点间的流量。其目的在于防止阻塞,并进行差错检测。
网络层协议的代表包括:IP
、IPX、RIP、OSPF等。
上面的三层协议让不同的计算机
之间可以通信。但计算机中实际上有许多个进程
,每个进程
都可能有通信的需求
。
每一所房子(计算机)会配备一个管理员(传输层协议)。管理员从邮差(链路层)手中接过信,会根据“收信人”,将信送给房子中的某个人(进程)。
第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段 (segments)
而UDP协议的数据单元称为数据报(datagrams)
。
作为通信子网和资源子网的接口和桥梁,是整个网络体系结构中最关键的部分。
传输层协议,比如TCP和UDP,使用端口号(port number)
来识别收信人(某个进程)。在写信的时候,我们写上目的地的端口。当信到达目的地的管理员手中,他会根据传输层协议,识别端口号,将信送给不同的人。
通过上面的几层协议,我们已经可以在任意两个人(进程)之间进行通信。然而每个人实际上从事的是不同的行业
。应用层协议是对信件内容进一步的用语规范。应用层的协议包括用于Web浏览的HTTP协议
,用于传输文件的FTP协议
,用于Email的IMAP
等等。
总过网络分层,我们从原始的0/1序列抽象出
本地地址(邮差)、邮编(邮局)、收信人(管理员)、收信人行业(用语规范)
这些概念。这些概念最终允许互联网上的分布于两台计算机的两个进程相互通信。
写信人必须按照各层的协议,封装好整个信封 (encapsulation);而收信人则按照相反的顺序,来拆开这个信封。整个过程是可读信息 -> 二进制 -> 可读信息
。计算机只能理解和传输0/1序列,而计算机的用户则总是输入和输出可读信息。网络协议保证了可读信息在整个转换和传输过程中的完整性。
ref
http://blog.chinaunix.net/uid-9525959-id-3326047.html (WIFI)
https://blog.csdn.net/jeffleo/article/details/53932693(数据链路层)