概念:互联网实现过程中大家都需要遵循的准则,我们称之为协议。
前提概要: 我们知道当我们访问互联网是,是在浏览器的导航栏输入一个网址,http://www.baidu.com/ 而一个网址对应的是一个ip地址,所以我们访问网址,那么就很清楚的认识到访问网址,就是访问另外一个ip地址的计算机上储存的网页。那么我们已知的只有计算机的ip,我们就根据这个来了解一下互联网的世界是如何做到的查找到另外的计算机的。
一、 五层模型。
互联网的模型有7层模型, 4层模型的说法,5层模型是结合这两种更加利于理解的一种说法。5层模型从上往下分别是:应用层,传输层,网络层,数据链路层,物理层。(名词可能会有点出入,翻译问题)
1.物理层
物理层就是最底层的电路之间的传输,不同的电脑与电脑之间相互通过网线,WiFi等,构建起了整个互联网的基础。
2.数据链路层
互联网的电脑数不胜数,我们两台电脑之间怎么相互连接,传递数据呢?首先就需要将电脑相互区分——MAC地址,然后传递数据需要单位吧,不然一堆0101传递过去计算机接受了也无法识别那部分属于什么应用程序的,当时不同得企业选择不同的单位,不同的风格,然后渐渐统一,出现了互联网的一个重要协议 ——以太网协议, 规定数据单位为:帧。
2.1 MAC地址
链接网络需要网卡,每台计算机的网卡地址就是MAC地址,每块网卡出厂的MAC地址独一无二。这样每台计算机就有了个独一无二的身份了。
2.2 以太网协议
以太网协议规定了网络数据传输过去的单位是一帧, 两台计算机之间的MAC地址也必须储存在帧中,所以一帧又分为标头(Head)和数据(Data)两部分。 标头(Head)存放两台计算机的MAC地址, 数据部分(Data)存放需要传输的数据。
2.3 广播
现在发送方知道了接收方是谁,也就是网络IP(域名),数据也写成帧的形式,那么怎么确定在众多电脑中哪台是接收方呢?以太网的方式非常简单——广播,给所有的计算机都发送数据,让其他计算机自己判断,其他计算机接受到了数据,判断是不是自己,不对就将其抛弃,对就将自己的MAC地址发送回去。具体的实现——ARP协议(在网络层介绍)
3.网络层
广播技术理论上是能成立的。但是互联网的众多计算机中,用广播的方式给每台计算机发送一个数据包明显不现实。但是我们又需要知道对方计算机的MAC地址传输数据。那么就需要缩小范围,如果是在同一子网中的计算机,用广播的方式就能够实现。所以网络层提出了一个新的概念——IP。
3.1 IP协议
每台计算机分配一个ip地址,目前广泛使用的是第四版,称为IPV4。由32位二进制组成,为了方便理解,我们分为四段十进制数从0.0.0.0到255.255.255.255,假设前24位为网络部分,后8位为主机部分。假设我们有一个ip地址为:192.168.0.123,那么192.168.0.* , 都为同一子网。该子网最多为2^8=256台, 如何确定多少位是网络多少位是主机呢?——子网掩码。
3.2 子网掩码
1&1 = 1, 1&0=0, 0&0 = 0。 假设24位为网络部分,那么子网掩码为:1111 1111. 1111 1111.1111 1111.0000 0000 = 255.255.255.0, ip1 和ip2 两个ip是否在同一子网呢? ip1 & 子网掩码 == ip2& 子网掩码,那么就是在同一子网。192.168.0.123&255.255.225.0 = 192.168.0.0。
3.3 网关(gateway)和ARP协议
我们已知ip地址,那么就会碰到两种情况: 1.不在同一子网: 发送方将数据交给自己的网关,网关再去找到接受方ip的网关,然后就是在同一子网的情况了。 2.在同一子网:根据ARP协议,用广播的方式发送给接收方,接收方回应后得到接收方的MAC地址。 网关:网关实质上是一个网络通向其他网络的IP地址,有兴趣可以去查看一下DHCP服务器的实现原理。给一张百度的图片来理解: ARP协议:地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取MAC地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到该子网的网络上的所有主机,所有主机确认该IP是否是自己本身,不是则抛弃该信息,是的话接收返回自身的MAC地址,以此确定目标的物理地址。
3.4 IP数据包
根据以太网协议,数据包的单位为:帧: head+data, head中存放了MAC地址,但是我们又需要ip地址才能查找到。所以我们将数据部分继续拆分为head+data。head中存放ip地址。所以一帧数据变成了:head+head+data。
4 传输层
我们已经知道ip和mac地址,我们可以准确的找到我们需要发送数据的那台计算机,但是计算机接受了数据怎么判断数据是交给哪个应用的呢?网上听歌和看电影那么传送过来的数据是歌曲应用的还是电影应用的呢? ——端口。
4.1 端口:
计算机可以选择0到65535个端口,正好16个二进制位。0到1023的端口被系统占用,用户程序可以在1024~65535端口之间选择一个。用户计算机端口与服务器计算机端口相连接,然后就可以传输数据了。
4.2 UDP、TCP协议
如你所料,端口号当然也是要保存到数据包中,所以就有了UDP协议和TCP协议。UDP和TCP协议也同样继续将data分为head和data。head中存放端口号信息。 UDP协议:几乎就是简单的将端口号放入head中,数据没有安全保障,也容易丢包,但是传输速度非常快。比较适合语音,视频这类数据传播。 TCP协议:比较安全的将一些信息放入head中,通过协议不会丢包,通过三次握手保证信息的安全。是比较安全的一种协议。但是因为安全所以传输速度较慢。 这时候一帧数据就变成了上面这样。 了解了上面的内容也许就能对ip地址有了一定的了解了,下面的图片应该看得懂了,DNS是将域名转化为IP地址一台服务器计算机。
5.应用层
不同的应用需要的数据都是不同的,向FTP传输数据格式,和邮件传输通过SMTP格式。应用层就是这些数据格式的协议组成的。为用户提供各种服务。
总结:
物理层:构成互联网基础,使得所有计算机能够物理连接在一起。 数据链路层:以太网协议,数据分为帧传递。Head存放计算机的MAC地址 网络层:IP协议,数据再次细分,Head存放计算机的ip地址 传输层:TCP或UDP协议,数据再细分, 确定数据端口。Head存放了端口号。 应用层:处理数据,为应用提供服务,使得用户能够明白和使用。
我的简单理解:
我的IP为192.168.0.111 ——>浏览器访问 http://www.baidu.com/ , 通过域名解析(DNS)为 115.239.211.112, 通过子网掩码255.255.255.0 发现我的IP和百度的IP不在同一子网,所以本机发送一个数据包【(本机MAC地址,不知百度MAC地址),(本机的IP地址, 百度的IP地址)(TCP请求的端口)(请求正文)】的请求提交给网关(gateway),网关去找到115.239.211.112。然后百度的服务器返回一个MAC地址。通过tcp协议三次握手建立连接。 致谢:阮一峰的网络日志 以上内容参考至阮一峰网络日志,需要更加详细了解可以去看看。