一、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是所有域名的统一样式,所以普遍不写出。
域名层级
如图所示,域名的层级通过根域名、顶级域名、次级域名、主机名的方式实现了索引结构,当需要查找的时候可以通过这种递进的方式快速查找。
三、DNS查询方式
递归查询
迭代查询
总结
其中,不管是迭代查询还是递归查询,都会在域名服务器中存储缓存,方便下一次查询。
四、网络模型
参考模型
在计算机网络中,有好几种参考模型,不过这里我们只讨论实际应用的参考模型,如下:
每层解释
应用层
传输层
网络层
链路层
实体层
为什么要分层
因为经过分层后,上一层只需要依赖于下一层,不需要跨层考虑,层层之间的影响降低。
每一层的例子
应用层
传输层
网络层
链路层
实体层
连接一切
实体层
链路层
传播网卡与网卡之间的连接(MAC地址),不过MAC地址要通过广播方式传播给子网中的所有网卡,如果MAC地址匹配才收下信息,显然这个方式如果当数量增多的时候,将会大幅度降低效率。
网络层
不同于MAC地址传播,IP地址更为机智,它会识别IP地址来自于哪个子网路、哪个位置
传输层:
应用层:
五、网络各个层的数据包格式
链路层
链路层将应用层的电信号组成不同的数据包,每一个数据包即一帧(最大1518个字节)。
一帧由一个Ethernet标头和Ethernet数据组成。
标头主要包含MAC地址,即要传送到哪张网卡中,标头占18个字节。
因此,数据不能超过1500个字节。
网络层
网络层依赖于链路层,因此我们不能更改链路层的标头,所以我们只能把IP地址存储到Ethernet数据中,因此Ethernet数据又被分为IP标头和IP数据。
IP地址包含目的IP地址和数据长度。
传输层
同样,传输层不能改变网络层、链路层标头,我们只能在IP数据中再划分,因此我们将IP数据划分为TCP/UDP标头和TCP/UDP数据。
UDP标头:端口信息
TCP标头:端口信息+其他数据
应用层
一个帧不够怎么办
可以把一个数据分为好几个帧/数据包传输出去。