互联网协议入门

742 阅读10分钟

1. 前言

1.1 五层模型

互联网的实现,分为若干层交互,网上有OSI定义的七层模型,但这只是理论上的模型,实际应用中千变万化,而我的理解是分为五层

五层模型
用户接触到的是最上层,应用层(客户端)
越下层,越靠近硬件;越上层,越靠近用户。 今天从最底层模型:实体层开始学习,自下而上

1.2 层与协议

每层都有自己要负责的事,而为了进行层与层之间的交互,需要一个大家都遵守的协议

互联网中每层都有许多协议,可以笼统的成为"互联网协议/Internet Protocol Suite"

2. 实体层

样图
电脑要上网,必须要把电脑连起来,通过用光缆、电缆、双绞线、无线电波等方式。

该层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。

上面的解释可能太过官方,可以理解为实体层通过硬件把你要传输的信息通过二进制(0和1)电信号传输到需要接收的点,至于怎么实现的。。暂时不钻这个牛角尖

3.链接层/链路层

称呼并不重要,知道该层做什么的即可

实体层发送的0和1对于用户,和软件开发者而言没有任何意义,因此必须规定解读的方法,而这就是链接层的功能,确定0和1的分组方式

3.1 以太网

很久以前,每个公司都是以独立的电信号分组方式。后来,“以太网/Ethernet”的协议,占据了主导地位,它是计算机局域网技术,电气电子工程师协会(IEEE)的IEEE 802.3标准制定了以太网的技术标准

3.2 以太网协议数据包规范

一组电信号构成一个数据包,称为"帧/Frame"。每一帧分为标头/Head和数据/Data

在这里插入图片描述
"标头/Head"包含了数据的说明项,比如发送者,接收者,数据类型。 “数据”则是数据包的具体内容、 如果数据过长,会分割为多个帧发送

3.3 MAC地址

Head中的发送者和接收者信息如何定义标识的?

以太网规定:连入网络的设备,必须具有网卡接口。数据包必须是从一块网卡,发送到另一块网卡。

网卡的地址,就是数据包的接收和发送地址,也可以叫做MAC地址。

在网络上的每一个计算机都必须拥有一个独一无二的MAC地址。没有任何两块被生产出来的网卡拥有同样的地址。这是因为IEEE负责为网络接口控制器销售商分配唯一的MAC地址。

已过时的网卡
网卡属于实体层

3.4 广播

"以太网协议"要求,必须知道接收方MAC地址,才能发生数据包(ARP协议解决了如何知道接收方MAC地址)

那么有了MAC地址,”以太网协议“如何发送数据包到对方电脑上?

向本网络内所有计算机发送数据包,让接收到包的计算机根据""标头/Head"里的接收者信息,判断自己是否是接收者,是则接收,否则丢弃

样板图
笔记本需要向2号计算机发送一个数据包,同一个子网络的1号、3号、4号计算机都会收到这个包。它们都会读取这个包的"标头",找到Head中接收方的MAC地址,然后与自身的MAC地址相对比,如果两者相同,就接受这个包,才做进一步处理,否则丢弃这个包。这种发送方式就叫做"广播"

3.5 总结

有了数据包的定义、网卡的MAC地址、广播的发送方式,"链接层"就可以在局域网中进行多台计算机的数据交互了。

4.网络层

首先你要知道Internet是由无数子网络组成的巨型网络

假设上海想通过广播方式发送数据包到纽约的计算机,技术可以实现,但问题是计算机得发多少包,这效率太低,要消耗多少资源,而且两者不会在同一个局域网中。

那么问题不在同一个局域网的计算机要如何交互?

网络层就是为了解决这个问题。

4.1 网络地址

网络层出现后,每台计算机,都有两个地址,MAC地址和网络地址,他们之间没有任何关联!

网络地址帮我们确定计算机所在的局域网,MAC地址则将数据包准确送到子网络中的对应网卡,所以处理顺序是先处理网络地址,再处理MAC地址

4.2 IP协议

IP协议:规定网络地址的协议,定义的地址被称为IP地址

目前广泛采用的是IP协议第四版,称为IPv4,网络地址由32个二进制位组成。

最新的是IPv6,为了解决IPv4地址枯竭问题。。

习惯上,我们用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255。

互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。

4.2.2 子网掩码

子网掩码表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

4.2.3 判断是否属于同一局域网

知道"子网掩码"以后,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND / &运算(两个数位都为1,运算结果为1,否则为0),然后比较结果,相同的话,表明它们在同一个局域网中,否则不是。

4.2.4 IP数据包

根据IP协议发送的数据,就是IP数据包。其中包含IP地址信息。

但是前面说过,以太网数据包只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?

回答是不需要,我们可以把IP数据包直接放进以太网数据包的"数据"部分,因此完全不用修改以太网的规格。这就是互联网分层结构的好处:上层的变动不涉及下层的结构。

具体来说,IP数据包也分为"标头"和"数据"两个部分。

在这里插入图片描述

IP"标头"部分主要包括版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。它放进以太网数据包后,以太网数据包就变成了下面这样,其实这时候以太网的Data应该完全被覆盖了

在这里插入图片描述

4.3 ARP协议(IPv4)

因为IP 的数据包放在以太网的Data包里发送,所以我们必须知道两个地址,接收方IP和MAC地址,我们如何知道对方的MAC地址呢?

ARP协议解决了这个问题:通过解析网络层地址来找寻数据链路层地址的网络传输协议 / 通过IP地址寻找MAC地址

如果两台主机在同一个子网络,发出一个数据包(包含在以太网数据包中),其中包含接收方的IP地址,在接收方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。

如果不在同一个子网络中,那么没办法得到接收方MAC地址。只能把数据包送到两者局域网连接处的"网关",委托“网关”,通过ARP协议获得的不是接收方的MAC地址而是通往局域网外的”网关“的MAC地址

4.4 NDP (IPv6)

在IPv6中邻居发现协议(NDP)用于代替地址解析协议(ARP)。wiki没有对其深入的解析。。我没找到,找到的可以发下链接,谢谢!

5. 传输层

有了IP和MAC地址,我们就可以在互联网上任意两台机器上建立通信

但是我们在同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?

我们需要一个参数,知道数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据

"传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流

5.1 UDP协议

我们需要在数据包中加入端口信息,这就需要新的协议,最简单的实现叫做UDP协议,它的格式几乎就是在数据前面,加上端口号。

缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

5.2 TCP协议

最常见的实现叫做TCP协议,较为复杂,可以认为是有确认机制的UDP协议

每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

缺点是 过程复杂,实现困难,消耗较多资源

TCP数据包同样有 “标头/Head”和"数据/Data"组成

在这里插入图片描述
"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:
在这里插入图片描述

6. 应用层

功能:把数据转换为能与接收者的系统格式兼容并适合传输的格式。

例如TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。

这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。因此,现在的以太网的数据包就变成下面这样。

在这里插入图片描述

自此,自下而上,OSI模型中我理解的互联网五层模型

参考文献

互联网协议入门

wike:以太网

wike:ARP/地址解析协议