Ⅰ.网络五层协议概述
网络的五层协议自下而上分为:物理层(physical layer)、链接层(link layer)、网络层(network layer)、传输层(transport layer)、应用层(application layer)。当然还有七层的分发,就是再应用层下方加入表示层(presentation layer)、会话层(session layer),这里暂只讨论五层协议。

For you,a thousand times over.
Ding, Jack·2019-04-21·1131 次阅读
网络的五层协议自下而上分为:物理层(physical layer)、链接层(link layer)、网络层(network layer)、传输层(transport layer)、应用层(application layer)。当然还有七层的分发,就是再应用层下方加入表示层(presentation layer)、会话层(session layer),这里暂只讨论五层协议。
物理层规定:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性。 定义的确实抽象,实际上就是数据传输的一些工具,比如光缆、电缆、无线信道、双绞线。实现了基础数据传输功能,规范的协议有 RS-232、RS-449、X.21、V.35、ISDN、以及FDDI、IEEE802.3、IEEE802.4、和IEEE802.5等物理层协议。
上面的物理层负责数据的传输,但具体的传输内容没有规范,链路层就规定了数据的传输的方式,保证数据传输的正确性,数据链路层的协议HDLC、PPP、PPTP、L2TP等。
这里主要介绍以太网链路层协议,协议规定数据分为标头(head)和数据(data), "标头"的长度,固定为18字节。"数据"的长度,最短为46字节,最长为1500字节。因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。
怎么确认发送的对象呢?通过mac地址来确定,mac地址是网卡上的一串流水号,全世界唯一的。知道了mac地址了,又是怎么正确的找到拥有这个mac地址的网卡呢?这就需要广播了,所谓广播就是我一个一个的问,问你是不是这个mac地址啊,不是就拒绝,是就接收数据。而这广播的方式也是有局限性的,只能在一个局域网中才能广播,不是一个局域网的话只能通过网关了。
其实还有一个问题是一开始是怎么知道要发送的对象mac地址的。这个就要了解一下ARP协议了。
链路层依靠的是mac地址来确认发送方与接收方的,但是mac地址可能不是已知的,而就算知道了mac地址,而通过上述的广播方式传输数据将是一场灾难,没一次的传输都会都需要询问局域网中的所有计算机,这种效率低下的方式显然不适应,而且这种方式适用于局域网中;如果是不同局域网之间的数据传输就会导致更大的问题,况且mac地址并不能区分发送方与接收方是否在同一局域网内,这就导致根本很难保证数据的传输效率。上面所说的种种问题是mac地址无法解决的,这时需要引入网络地址来判断发送方与接收方是否在同一个局域网,怎么区分呢?
在一个计算机加入一个局域网时,会分配给他一个IP地址、还有子网掩码,网关地址、DNS地址;当发送方发送数据给接收方的时候,把发送方和接收方的IP地址分别和子网掩码进行AND运算,如果得到的结果一致,则是同一个局域网。
IP协议,上面一段所说的就是IP协议相关的,IP协议主要有IPV4、IPV6,现在正是IPV4到IPV6的过渡期,IPV4是由32位的二进制数字组成,而IPV6由128位二进制数字组成,所以IPV4可以由0.0.0.0(这里由十进制表示)到255.255.255.255;而子网掩码是怎么组成的呢?子网掩码由网络部分和主机部分组成,前部分为网络部分,全为1,后部为主机部分,全为0,如子网掩码255.255.255.0,子网掩码是判断两个主机是否在同一局域网中的。说了一大堆,网络层的数据又是怎么传输的呢?在链接层基础上,在链路层数据的数据中放入IP协议的数据,IP协议的数据包括标头和数据。
ARP协议是通过IP来获取mac地址的。ARP协议发出一个数据包,里面包含发送方和接收方 的IP地址、一个发送方mac地址和FF:FF:FF:FF:FF:FF的接收方mac地址,这代表广播地址,每个局域网内的计算机都会接收,然后自行判断IP是不是和自己一样的,得到回应之后就发送mac地址;得到mac地址之后就能发送数据了。如果不是在一个局域网里面呢?这就需要网关来处理了。
有了网络层之后,计算机之间已经可以交流数据了,但是计算机是有不同的程序的,程序之间的数据是如何区分的呢?只能通过另一个协议了,传输层的协议加入了一个叫做端口(port)的概念,不同的程序占用着不同的端口,他们通过这些端口区分哪些数据是它们的,这就有了UDP、TCP等协议了。
"应用层"的作用,就是规定应用程序的数据格式。应用层协议有FTP、HTTP、IMAP、DHCP、DNS等。最终的数据包格式如下图。
总结一下这些基础知识吧,虽然写的零零散散,网上资料很多,但还是想自己去亲自写一遍。
Comments | NOTHING