互联网协议入门

141 阅读5分钟

本文参考软一峰 互联网协议入门,作为读后重点总结。围绕五层模型,及相关的协议展开。

实体层

没什么好讲的,就是把电脑连接起来的物理手段,如用光缆、电缆、双绞线、无线电波等方式。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

链接层

在"实体层"的上方,确定了0和1的分组方式。

以太网协议

以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。

"标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。 "标头"的长度,固定为18字节。"数据"的长度,最短为46字节,最长为1500字节。因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。

mac地址

网卡的地址。以太网协议标头的发送者和接收者就是用该地址标记。

总结

以太网采用广播方式发送数据包,效率低,局限在同一个子网络。

网络层

引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址"。网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,可以推断,必定是先处理网络地址,然后再处理MAC地址。

IP协议

规定网络地址的协议。

子网掩码

表示网络特征,确定网络地址中多少位是代表子网络地址(1),多少位是主机地址(0)。

IP数据包

利用IP协议发送的数据包,在以太网"数据"结构中。IP数据包也分为"标头"和"数据"两个部分。"标头"部分主要包括版本、长度、IP地址等信息。

ARP协议

因为IP数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的MAC地址,另一个是对方的IP地址。 通常情况下,对方的IP地址是已知的(后文会解释),但是我们不知道它的MAC地址。(虽然以太网数据包的标头中有发送和接受方的MAC地址,但是不知道该接受方具体是哪台主机。)所以,我们需要一种机制,能够从IP地址得到MAC地址。
如果不在同一个子网络,我们就交给网关处理(此时MAC是网关的)。
如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。它所在子网络的每一台主机,都会收到ARP数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。
所以有了ARP之后就可以主机到主机传播了。(对比,以太网是广播的哦,而且还不能在不同的子网络中传播)

总结

用网络地址确定是不是同一个子网络,不是 同一个子网络就交给网关,是 就用ARP协议利用IP地址对比找到接受主机的MAC,建立"主机"到"主机"的连接。

传输层

就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做"套接字"(socket)。

UDP协议

UDP数据包,也是由"标头"和"数据"两部分组成。

"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分。

UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

TCP协议

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

因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

应用层

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

这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分(没有标头哦)

DHCP协议

它是一种应用层协议,建立在UDP协议之上。为主机分配动态IP地址。

DNS协议

它是一种应用层协议,建立在UDP协议之上。
DNS协议可以帮助我们,帮网址,如"www.google.com" 转换成IP地址。

HTTP协议

浏览网页用的是HTTP协议,建立在TCP协议之上。