网络分层协议与模型
Posted 我真的爱敲代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络分层协议与模型相关的知识,希望对你有一定的参考价值。
欢迎学习交流!!!
志愿服务结束啦~~~
又来持续更新了…
网络、通信、协议
网络:网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系。网络也是用物理链路将工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。这里的物理链路不仅仅指的是我们能够看得到的双绞线、光纤,也可能是无线电波。网络具有资源共享、快速传输信息、提高系统可靠性、易于进行分布式处理、综合信息服务的特点。
通信:通信是人与人之间通过某种媒体进行的信息交流与传递。
网络通信:网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。网络通信中最重要的就是网络通信协议。
协议:网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。当今网络协议有很多,局域网中最常用的有三个网络协议:MICROSOFT的NETBEUI、NOVELL的IPX/SPX和TCP/IP协议。应根据需要来选择合适的网络协议。
简单来说,互联网协议就是在互联网上传输数据的规则。当然,协议是非常多的,比如TCP、UDP、IP协议、FTP协议等等。而使用这些协议最基本的要求就是发送方和接收方所使用的协议必须一致。
当我们说几层协议时,一般来说:一台设备上的第X层与另一台设备上的第X层进行通信的规则就是第X层协议。
网络分层模型
网络分层就是将网络节点所要完成的数据的发送或转发、打包或拆包,控制信息的加载或拆出等工作,分别由不同的硬件和软件模块去完成。这样可以将往来通信和网络互连这一复杂的问题变得较为简单。
网络分层与协议、设备
OSI模型共分七层:从上至下依次是 应用层指网络操作系统和具体的应用程序,对应WWW服务器、FTP服务器等应用软件 表示层数据语法的转换、数据的传送等 会话层 建立起两端之间的会话关系,并负责数据的传送 传输层 负责错误的检查与修复,以确保传送的质量,是TCP工作的地方。(报文) 网络层 提供了编址方案,IP协议工作的地方(数据包) 数据链路层将由物理层传来的未经处理的位数据包装成数据帧 物理层 对应网线、网卡、接口等物理设备(位)。
因特网协议栈共有五层:应用层、传输层、网络层、链路层和物理层。
一、物理层
物理层,顾名思义,用物理手段将电脑连接起来,基本上是用双绞线、光纤、无线电波的方式来实现物理层。网络设备连接起来之后,就可以基于它来发送高低电压(电信号)进行通信,高电压对应数字1,低电压对应数字0。0、1信号本身没有任何的现实意义,所有需要用另一层用来规定不同0、1组合的意义。
这一层就是把各个网络设备连接起来,让其可以传输0 1 0 1的电信号。是参考模型的最低层。该层是网络通信的数据传输介质,由连接不同结点的电缆与设备共同构成。
主要功能是:利用传输介质为数据链路层提供物理连接,负责处理数据传输并监控数据出错率,以便数据流的透明传输。
二、数据链路层
主要功能:在物理层提供的服务基础上,在通信的实体间建立数据链路连接,传输以“帧”为单位的数据包,并采用差错控制与流量控制方法,使有差错的物理线路变成无差错的数据链路。
单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思。数据链路层的功能就是通过规定一套协议来定义电信号的分组方式,以及规定不同的组代表什么意思,从而双方计算机都能够进行识别,这个协议就是“以太网协议”。以太网协议规定,一组电信号构成一个数据包,我们把这个数据包称之为帧。每一个桢由包头(Head)和数据(Data)两部分组成。
其中Head包含数据包的一些说明信息,包括发送者、接收者、数据类型;Data则是数据包的具体内容。Head部分包含固定的18个字节:发送者/源地址,6个字节;接收者/目标地址,6个字节;数据类型,6个字节。Data部分的长度,最短为46字节,最长为1500字节。因此,整个”帧”最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。有了数据包的定义,那么计算机是如何标识谁是谁?以及如何知道对方的地址呢?这就涉及到MAC地址和广播。
MAC地址
以太网规定,连入网络的所有设备都必须具有网卡。数据包的发送地址和接收地址指的就是网卡地址,也就是MAC地址。
MAC地址作为网络中计算机设备的唯一标识,从计算机在厂商生产出来就被十六进制的数标识为MAC地址,MAC地址理论上是独一无二的。这也是为什么很多软件校验设备唯一性时,会用到MAC地址。
MAC地址长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)。
有了MAC地址,那么两台机器之间是找到对方进行通信的呢?
广播
有了MAC地址,在同一网络内的两台主机就可以通信了。
在同一个子网中,计算机1要向计算机4发送一个数据包,数据包中包含接收方的MAC地址。计算机1向本网络内所有计算机都发送(以广播的方式),这时同一子网中的每台计算机 (包括2、3)都会收到这个数据包的。然后每台计算机都会把数据包的MAC地址取出来,与自身的MAC地址进行对比,如果两者相同,则接受这个数据包,否则就丢弃这个数据包。计算机4发现包含自己的MAC地址,于是就进行响应。
三、网络层
主要功能是:为数据在结点之间传输创建逻辑链路,通过路由选择算法为分组(packet, 也称数据包)通过通信子网选择最适当的路径,以及实现拥塞控制、网络互联等功能。
以太网通过广播这种很原始的形式,解决了两台计算机之间的通信问题。但很明显,它不是把数据包准确的送达接收方,而是向网络中所有的计算机发送数据包。
而我们所处的网络是由无数个子网络构成的。即便忽略掉子网的存在,如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,整个网络是会崩溃的。
而实现的网络又是由无数个子网络构成的,以太网采用广播方式发送数据包,效率低且发送的数据只能局限在发送者所在的子网络。
此时就需要另想办法,如果是同一个子网络,就采用广播方式发送,如果不是在同一个子网 , 那就通过网关和路由向不同广播域/子网分发数据包。所以就有了网络层,它是处理分组在网络中的活动,比如分组的选路。
网络层引入一套新的协议用来区分不同的广播域/子网,于是就有了IP 协议。
IP协议
网络地址协议,叫做IP协议。相对于上面讲到的MAC地址, IP 地址可以理解成逻辑地址,也就是说 MAC 地址是物理上的地址,是固定的。IP 地址是动态分配的,是不固定的。现在广泛采用的IPv4地址,同时IPv6也在不断的发展壮大。
通过IP协议发送的数据,就叫做IP数据包,也分为“包头”和“数据”两个部分:“包头”部分主要包括版本、长度、IP地址等信息;“数据”部分则是IP数据包的具体内容。IP数据包的”包头”部分的长度为20到60字节,整个数据包的总长度最大为65535字节。
IPv4地址是由32位的二进制数组成,一般把它分成4段的十进制表示,地址范围为0.0.0.0~255.255.255.255。
IP地址分成两部分:网络部分(标识子网)和主机部分(标识主机)。网络部分和主机部分所占用的二进制位数是不固定的。
IP地址段只是标识了IP地址的种类,从网络部分或主机部分都无法辨识一个IP所处的子网。如果两个IP的网络部分相同,则说明它们处于同一个子网中。例如192.168.33.1和192.168.33.2,如果它们的网络部分为24位,主机部分为8位,网络部分都为 192.168.33,处于同一个子网中。
但如果像192.16.10.1与192.16.10.2,并不知道网络部分和主机部分各几位,就不能确定是否处于同一子网。于是就有了子网掩码。
子网掩码
子网掩码就是用来标识同一局域网中的 IP 地址的信息的。子网掩码也是由 32 个二进制位组成的,但是只能用 0 或 1 来表示,如11111111.11111111.11111111.00000000。
子网掩码的网络部分全部为1,主机部分全部为0。两台计算机的 IP 地址分别和子网掩码进行一种AND 运算(两个数位都为1,运算结果为1,否则为0),如果结果相同,两台计算机就在同一局域网中,否则就不在同一局域网中。
比如IP地址为192.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
假设192.168.33.1和192.168.33.2的子码掩码都为255.255.255.0,把IP与子码掩码相与,结果都为192.168.33.0,那么它们说明处于同一个子网中。
ARP协议
ARP协议有了IP协议,可以判断计算机属于哪个子网了。在链路层时我们通过MAC地址进行通信的,现在只有目标的IP地址,如何才能拿到它的MAC地址呢?这就又要用到ARP协议。
ARP协议可以通过广播的方式发送数据包,获取目标主机的MAC地址。具体实现为:发送端主机通过广播的方式发送数据包,所有主机接收后拆开包,如果发现目标IP为自己就响应,返回MAC地址。
数据包格式:(发送端的MAC地址,目标MAC地址,发送端IP地址,目标IP地址,数据)。
四、传输层
主要功能:是向用户提供可靠的端到端(End-to-End)服务,处理数据包错误、数据包次序,以及其他一些关键传输问题。传输层向高层屏蔽了下层数据通信的细节,因此,它是计算机通信体系结构中关键的一层。
经过数据链路层和网络层的支持,我们已经可以正常在两台计算机之间进行通讯了,但是计算机会同时运行着许多程序,比如同时开着QQ与WX,那么怎么区分消息是QQ的还是WX的呢?
通常我们会看到计算机上运行的不同程序都会分配不同的端口,而传输层的功能就是建立端口到端口的通信,使得数据能够正确的传送给不同的应用程序。
端口是每一个使用网卡的程序的编号,每一个端口号标志一个可执行程序。端口号是0到65535之间的一个整数,正好16个二进制位,0-1023为系统占用端口,其他应用程序只能选用大于1023的端口。
至此,用IP + 端口,已经能实现唯一确定互联网上一个程序,进而实现网络间的程序通信了。
传输层最常见的两大协议是 TCP(Transmission Control Protocol,传输控制协议) 协议和 UDP(User Data Protocol,用户数据报协议) 协议。
UDP协议就是在数据前面加上端口号,“包头”部分主要定义了发出端口和接收端口,一共只有8个字节。“数据”部分就是具体的内容。总长度不超过65,535字节,正好放进一个IP数据包。
UDP协议简单且容易实现,这是它的优点。但同样也有缺点,就是进行通信时不知道对方是否接收到数据了。此时需要再定义一套规则,让其可以和对方进行确认,那么TCP出现了。
TCP数据包没有长度限制,理论上可以无限长,可是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,也就是小于65,535字节,这也确保单个TCP数据包不必再分割。像我们通常说 TCP 三次握手和四次挥手,就是传输层完成的。关于TCP实现部分的内容比较多,我们这里就不再拓展了。
TCP的优点是能够确保数据不会遗失,安全可靠的传输。缺点是过程复杂、实现困难、消耗较多的资源。
五、会话层
主要功能是:负责维护两个结点之间的传输链接,以便确保点到点传输不中断,以及管理数据交换等功能。
六、表示层
主要功能是:用于处理在两个通信系统中交换信息的表示方式,主要包括数据格式变换、数据加密与解密、数据压缩与恢复等功能。
七、应用层
主要功能是:为应用软件提供了很多服务,例如文件服务器、数据库服务、电子邮件与其他网络软件服务。
应用层算是我们最经常看到的一层了。应用层的功能就是规定了应用程序的数据格式。我们经常用的电子邮件、HTTP协议以及FTP数据的格式,就是在应用层定义的。
应用层的主要协议有:FTP(文件传送协议、21端口)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议、25端口),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol、80端口)。
总结
以上是关于网络分层协议与模型的主要内容,如果未能解决你的问题,请参考以下文章
计算机网络体系结构-第二节体系结构与参考模型1:分层结构协议接口和服务
计算机网络理解网络传输基本流程 ( OSI七层模型 与 TCP/IP五/四层模型 ) 网络分层中的封装和分用
Java网络编程-第一节2:网络编程必备网络知识2之网络协议分层