在通过网络实现互相通信过程,协议起了至关重要的作用。
但是在我们平时通信的时候,比如,发微信,发邮件的过程察觉不到协议的作用;但是在配置计算机网络连接、修改网络的时候才可能涉及到协议。
简单来说,协议就是计算机与计算机之间通过网络实现通信时的约定。两台计算机之间必须能够支持相同的协议,并遵循相同的协议进行处理,这样才能实现通信。
互联网中常用的具有代表性的协议有IP、TCP、HTTP等。“计算机网络体系结构”将这些网络协议进行了系统的归纳。
网络体系结构中将OSI参考模型(开放式互联参考模型)作为通信协议设计指标。
在这一模型中,每个分层都接收由他下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做“接口”。同一层之间的交互做遵循的约定叫做“协议”。
关于分层:
就举个打电话的例子:
A(说汉语)打电话给B(说汉语)。
这个过程拆开看就是:
A把要说的话先交给A手上的电话,A手上的电话将话转化成电子信号传给B手上的电话;B手上的电话再将电子信号转化成声音传给B。
此时,就讲这个过程分为了两个层面;
一个就是用户层:A、B两个人;
一个就是电话层:A手上的电话、B手上的电话;
A、B是因为都是用了同种协议(说汉语),才能相互交流;
A手上的电话、B手上的电话是因为有相同的频率,才能实现电子信号的传输。
这就是分层的简单说明,但实际网络通信的分层是很复杂的:
OSI模型是七层:
1.TCP/IP分层
TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.
TCP/IP通讯协议采⽤用了5层的层级结构,每一层都呼叫它的下⼀层所提供的网络来完成自己的需求.
1.1.应用层
应用程序间的沟通层,如web浏览器(HTTP)、电子邮件(SMTP)、文件传输(FTP)、远程登陆(TELNET与SSH)。
1.2.传输层
提供节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包中加入传输数据并把它传输到下一层,并确定数据被送达并接收。
1.3.互联网层
负责提供基本的数据包传送功能,让每一块数据包都能到达主机,如网际协议(IP)。
1.4.数据链路层
对实际的网络的管理,定义如何使用实际网络来传送数据
1.5.物理层
负责传输数据的硬件。相当于以太网或电话线等物理层设备。
2.数据包封装和分用
不同的协议层对数据包有不同的称谓:
帧用于表示数据链路层中包的单位;
数据包是UDP和IP等网络层以上的分层中包的单位;
段表示TCP数据流中的消息;
消息是应用层协议中数据单位。
2.1发送数据包
网络中传输的数据包由两部分组成:一部分是由协议所要用到的首部,一部分是上层传过来的数据。
首部的结构有协议的具体规范详细定义,在数据包的首部明确表明了协议应该如何读取数据。反过来,看到首部,也就能够了解该协议必要的信息以及所要处理的内容。
每个包首部中至少都会包含两个信息:一是发送端和接收端地址;二是上一层协议类型。
经过每个协议分层时,都必须识别包含发送端和接收端的信息。
以太网会用MAC地址(由设备的制造厂商争对每块网卡进行分别指定,在局域网内唯一识别一台主机),IP会用IP地址(用来识别网络上的主机和路由器,在广义网上唯一识别一台主机),而TCP/UDP会用端口号(标识某一台主机上的进程)作为识别两端主机的地址。
主机接收到以太网包后,如果不是自己的就丢弃;如果是自己的就查找以太网包首部中的类型域从而确定以太网协议所传过来的数据类型(上图是IP&