一、何为协议,为什么要有协议
举个栗子:
现在假设有三个人:小明、小美和David。小明只会使用普通话这一种语言,David只会使用英语这一种语言,小美会使用普通话和英语两种语言。那么,很显然,小明可以和小美对话,David可以和小美对话,而小明和David无法对话,无法交流。
现在,我们来假设,他们三个分别是三台计算机(假设大胆点),那么对话的这个行为就是通信,对话所相互传递的信息就是数据,而语言其实就是协议。由于小明和David使用的是不同的协议,所以他们两个无法互相传递数据,无法进行通信。事实上,小明和小美用同一语言进行对话,就算小明给小美说话时漏掉几个字,小美也很可能可以根据语境理解到小明所要表达的信息。但是计算机不同于人,计算机容不得半点差池。因此,在设计计算机程序和硬件时,要充分考虑到各种可能出现的异常以及对异常的处理。
在计算机通信中,事先达成一个详细的约定,并且遵循这一约定进行处理是尤为重要的,这种约定就是协议。
协议的定义:
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
网络协议由三个要素组成:
语法:即数据与控制信息的结构或格式
语义:即需要发出何种控制信息,完成何种动作以及做出何种相应
语序:即事件实现顺序的详细说明
二、为什么要有分层协议
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,促进标准化工作。
三、osi七层协议和top/ip四层协议
在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为网路接口层(主机到网络层)。下面,分别介绍各层的主要功能。
1、网路接口层(主机到网络层)
实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层-网际层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。
2、网际层(网络互连层)
网际层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。
网际层定义了分组格式和协议,即IP协议(Internet Protocol)。
网际层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。除此之外,网络互连层还需要完成拥塞控制的功能。
3、传输层
在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmissioncontrol protocol)和用户数据报协议UDP(user datagram protocol)。
TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。
UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。
4、应用层
TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。
应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),也有基于UDP协议的。