一、URL解析与构造

我们在互联网输入www.baidu.com
这个简短的信息其实全称是http://www.baidu.com:80/search?q=test&safe=strict
其中http为协议
www.baidu.com为域名/IP地址
80为端口
search为路径
q=test&safe=strict为参数
通过这些浏览器才能知道我们要干什么。

二、DNS解析

计算机识别二进制数字串,因此IP地址的格式像192.168.111.111的形式,但是用户无法记住这么多种数组串,而且这对数字串也很难记忆,于是浏览器采用域名的方式给予用户记忆。
但是计算机却只识别IP地址,所以必然要进行转换如下:
www.google.com->172.217.161.164
那么又如何解析这个域名呢?
首先其实完整的域名为www.google.com.root
但因为root是所有域名的统一样式,所以普遍不写出。

域名层级

image.png
如图所示,域名的层级通过根域名、顶级域名、次级域名、主机名的方式实现了索引结构,当需要查找的时候可以通过这种递进的方式快速查找。

三、DNS查询方式

递归查询

image.png

迭代查询

image.png

总结

其中,不管是迭代查询还是递归查询,都会在域名服务器中存储缓存,方便下一次查询。

四、网络模型

参考模型

在计算机网络中,有好几种参考模型,不过这里我们只讨论实际应用的参考模型,如下:
image.png

每层解释

应用层

用户所接触到的应用,对于不同类型的数据处理方法和格式。

传输层

端口到端口的连接、数据传输

网络层

主机到主机的联系

链路层

网卡和网卡的信息传输

实体层

物理连接

为什么要分层

因为经过分层后,上一层只需要依赖于下一层,不需要跨层考虑,层层之间的影响降低。

每一层的例子

应用层

HTTP FTP(文件传输) SMTP

传输层

TCP UDP

网络层

IP

链路层

Ethernet

实体层

电信号

连接一切

实体层

实现物理连接,传播01的电信号

链路层

传播网卡与网卡之间的连接(MAC地址),不过MAC地址要通过广播方式传播给子网中的所有网卡,如果MAC地址匹配才收下信息,显然这个方式如果当数量增多的时候,将会大幅度降低效率。

网络层

不同于MAC地址传播,IP地址更为机智,它会识别IP地址来自于哪个子网路、哪个位置

传输层:

主机中会有好多端口,会通过TCP、UDP来匹配端口

应用层:

通过协议传递数据。

五、网络各个层的数据包格式

如图
image.png

链路层

链路层将应用层的电信号组成不同的数据包,每一个数据包即一帧(最大1518个字节)。
一帧由一个Ethernet标头和Ethernet数据组成。
标头主要包含MAC地址,即要传送到哪张网卡中,标头占18个字节。
因此,数据不能超过1500个字节。

网络层

网络层依赖于链路层,因此我们不能更改链路层的标头,所以我们只能把IP地址存储到Ethernet数据中,因此Ethernet数据又被分为IP标头和IP数据。
IP地址包含目的IP地址和数据长度。

传输层

同样,传输层不能改变网络层、链路层标头,我们只能在IP数据中再划分,因此我们将IP数据划分为TCP/UDP标头和TCP/UDP数据。
UDP标头:端口信息
TCP标头:端口信息+其他数据

应用层

同理,不能修改前几层标头,由于协议较多,故暂不做拆分。

一个帧不够怎么办

可以把一个数据分为好几个帧/数据包传输出去。