摘自阮一峰老师的 互联网协议入门
1. 概述
互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。
用户接触到的,只是最上面的一层,根本没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。
如何分层有不同的模型,有的模型分七层,有的分四层。我觉得,把互联网分成五层,比较容易解释。分别是,实体层、链路层、网络层、传输层、应用层。
2. 实体层
实体层偏硬件设施
包含用光缆、电缆、双绞线、无线电波等方式把N台电脑连接起来的物理手段
负责传输0和1的电信号。
3. 链路层
链路层的主要功能是确定了0和1传播时的组合方式
3.1 以太网协议
作为链路层协议,以太网协议规定了每一帧数据由标头Head和数据Data组成
标头包含了发送者的信息,接受者的信息,数据类型等待
标头固定18个字节,数据46-1500字节,数据过长时便存入下一帧,多帧发送
3.2 MAC地址
然后,信息的发送是建立在MAC地址之上的,MAC地址是每台电脑的独一无二的标识符,也叫做网卡地址,发送者通过接受者的网卡信息正确地发送信息
3.3 广播
以太网协议采用广播的方式,向本网络内的所有主机发送数据报,每台主机通过数据报中的MAC地址判断自己是否为接收方
4. 网络层
网络层主要用于区分不同的计算机是否属于同一个子网络,若不属于同一个子网络,则需要通过网关转发的形式来发送数据
4.1 IP协议
IP协议规定
每台计算机都有一个属于自己的网络地址,也叫ip地址,由32个2进制位组成,或4段十进制位,如192.168.1.101
4.2 子网掩码
IP地址的前面不确定个代表了此主机所在的网络,省下的代表主机名,为了确定该主机所在的网络,引入了子网掩码,子网掩码对应IP地址,网络部分全为1,主机部分为0,通过IP地址与子网掩码的与操作之后是否相同,进而判断多台主机是否处于同一个网络之中。
4.3 ARP协议
为了解决以太网协议传输效率低的缺点,IP协议还引入了IP数据报
IP数据报是放在以太网数据包内发送的,所以理论上它应当知道两个地址。
一个是对方的MAC地址,一个是对方的IP地址
对方的IP地址是已知的,怎么得到对方的MAC地址呢?
ARP协议可以处理在同一网络下的两个主机,通过ARP协议获取MAC地址,ARP协议发出一个数据包,每个主机接收到这个数据包之后从中取出IP地址,与自身的IP地址进行比较,若相同则做出回复向对方报告自己的MAC地址,否则丢弃这个包。
5. 传输层
5.1 传输层作用
传输层提供了端到端通信方式,提供一个参数port,表示这个数据包到底来供计算机上的哪个程序来使用。
端口0-1023被系统占用,用户只能使用大于1023的端口,应用程序会随机选用一个端口,然后与服务器响应端口进行联系。
5.2 UDP协议与TCP协议
UDP协议,是专属传输层的协议为了插入端口参数,出现UDP数据报
端口信息储存在以太网数据报下的Data下的IP数据报中的Data中
TCP协议可以理解为有确认机制的UDP协议,可以确保数据包的发送,不丢失,缺点是过程复杂,实现困难
6. 应用层
应用层规定了应用程序的数据结构
如TCP协议可以为各种程序传递数据源,如Email、www、FTP等待,那么就必须有不同的应用层协议来规定电子邮件,网页,FTP这些应用程序的格式。
补充
1,DNS协议
发送数据报必须知道对方的ip地址,而像直接给出一个域名,如www.YouTube.com,DNS可以帮助我们将网址转为IP地址,也称为域名解析。
于是我们先向DNS服务器发送一个DNS数据包,然后DNS服务器做出响应,把数据包中的域名解析为IP地址并返回。之后通过子网掩码和IP地址相与,若不在同一个网络下,则通过多个网关转发之后,YouTube的服务器终于接受到了我们发送的以太网数据包,根据IP标头的序号,YouTube将多个包拼起来,取出完整的TCP数据报,然后读出其中的HTTP请求,做出HTTP响应,再用TCP协议发还回我们所需要的网页的数据。本机收到HTTP相应后,将收到的网页资源解析渲染,完成一次网络通信。
2,DHCP协议
DHCP用于动态分配IP地址
一台主机管理本地网络下的所有IP地址,每有一台新机器开机,便向主机发送一个DHCP数据包,申请IP地址和相关的网路参数。
虽然平时不怎么用到,但是了解掌握底层的原理,有助于我们看清这个世界
陈小源 2017/10/16