OSI七层模型详解
OSI七层模型详解
典型协议
传输层 常见协议有TCP/UDP
协议。
应用层 常见的协议有HTTP
协议,FTP
协议。
网络层 常见协议有IP
协议、ICMP
协议、IGMP
协议。
网络接口层 常见协议有ARP
协议、RARP
协议。TCP
传输控制协议(Transmission Control Protocol
)是一种面向连接的、可靠的、基于字节流的传输层通信协议。UDP
用户数据报协议(User Datagram Protocol
)是OSI
参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。HTTP
超文本传输协议(Hyper Text Transfer Protocol
)是互联网上应用最为广泛的一种网络协议。FTP
文件传输协议(File Transfer Protocol
)IP
协议是因特网互联协议(Internet Protocol
)ICMP
协议是Internet
控制报文协议(Internet Control Message Protocol
)它是TCP/IP
协议族的一个子协议,用于在IP
主机、路由器之间传递控制消息。即ping
命令所使用的协议。IGMP
协议是 Internet
组管理协议(Internet Group Management Protocol
),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。ARP
协议是正向地址解析协议(Address Resolution Protocol
),通过已知的IP
,寻找对应主机的MAC
地址。RARP
是反向地址转换协议,通过MAC
地址确定IP
地址。socket
位于网络层和应用层。
路由器位于网路层。
交换机位于数据链路层。
分层模型
OSI七层模型
- 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
- 数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。如:串口通信中使用到的115200、8、N、1
- 网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
- 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
- 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
- 表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
- 应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
TCP/IP四层模型
TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示:
通信过程
两台计算机通过TCP/IP
协议通讯的过程如下所示:
上图对应两台计算机在同一网段中的情况,如果两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器,如下图所示:
链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步(即从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。交换机是工作在链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。
网络层的IP协议是构成Internet的基础。Internet上的主机通过IP地址来标识,Inter-net上有大量路由器负责根据IP地址选择合适的路径转发数据包,数据包从Internet上的源主机到目的主机往往要经过十多个路由器。路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。IP协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。
网络层负责点到点(ptop,point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到端(etoe,end-to-end)的传输(这里的“端”指源主机和目的主机)。传输层可选择TCP或UDP协议。
TCP是一种面向连接的、可靠的协议,有点像打电话,双方拿起电话互通身份之后就建立了连接,然后说话就行了,这边说的话那边保证听得到,并且是按说话的顺序听到的,说完话挂机断开连接。也就是说TCP传输的双方需要首先建立连接,之后由TCP协议保证数据收发的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠的数据流,通讯之后关闭连接。
UDP是无连接的传输协议,不保证可靠性,有点像寄信,信写好放到邮筒里,既不能保证信件在邮递过程中不会丢失,也不能保证信件寄送顺序。使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。
目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?其过程如下图所示:
以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload
,指除去协议首部之外实际传输的数据)是IP、ARP
还是RARP
协议的数据报,然后交给相应的协议处理。假如是IP
数据报,IP
协议再根据IP
首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP
还是IGMP
,然后交给相应的协议处理。假如是TCP
段或UDP
段,TCP
或UDP
协议再根据TCP
首部或UDP
首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP
地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP
地址和端口号合起来标识网络中唯一的进程。
虽然IP、ARP
和RARP
数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP
和RARP
属于链路层,IP
属于网络层。虽然ICMP、IGMP、TCP、UDP
的数据都需要IP
协议来封装成数据报,但是从功能上划分,ICMP、IGMP
与IP
同属于网络层,TCP
和UDP
属于传输层。