输入地址后如何访问上一个网页?
先介绍几个基本的知识点:
DNS:
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS是典型的应用层协议,端口号53,独特的地方在于在传输层,可以使用TCP和UDP发送数据!
为什么DNS既可以使用tcp也可以使用udp?
可以从2方面来理解
其中,两个字节的标志部分具体如下:
QR(1比特):查询/响应的标志位,1为响应,0为查询。
opcode(4比特):定义查询或响应的类型(若为0则表示是标准的,若为1则是反向的,若为2则 是服务器状态请求)。
AA(1比特):授权回答的标志位。该位在响应报文中有效,1表示名字服务器是权限服务器
TC(1比特):截断标志位。1表示响应已超过512字节并已被截断
RD(1比特):该位为1表示客户端希望得到递归回答
RA(1比特):只能在响应报文中置为1,表示可以得到递归响应。
zero(3比特):不说也知道都是0了,保留字段。
rcode(4比特):返回码,表示响应的差错状态,通常为0和3,各取值含义如下:
TC标志,仅当DNS报文使用UDP服务时使用。因为UDP数据报有长度限制,所以过长的DNS报文将被截断。1表示DNS报文超过512字节,并被截断。
也就是说当使用udp的时候,如果DNS数据报超过了512B ,那么后面的部分就被截断了。由于TC位是仅在使用UDP协议的时候用,对于TCP没有影响
原因之二:
DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。
也就是说在主DNS服务器与辅助DNS服务器进行同步的时候,需要用TCP协议,为什么呢?个人理解是因为TCP是可靠的面向连接的,DNS服务器存储中的数据 不能出错。这也是使用TCP的原因。
DNS使用TCP 或者UDP 的场合?
通俗地讲,就是DNS服务器之间传输时使用TCP,而客户端与DNS服务器之间传输时用的是UDP。
2 ARP(地址解析协议)
只知道了ip地址是不行的,ip地址能告诉我们将要访问的主机地址,能够使得ip数据包完整,但是当从ip层向下提交给数据链路层的时候,就需要MAC地址,如何得知MAC地址呢?就需要ARP协议啦!
ARP:是根据IP地址获取物理地址的一个TCP/IP协议。这一部分的详细内容会近期在另一篇文章中说。
好了,有了前面的知识铺垫,下面来进行访问网页的过程:
先介绍几个基本的知识点:
DNS:
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS是典型的应用层协议,端口号53,独特的地方在于在传输层,可以使用TCP和UDP发送数据!
为什么DNS既可以使用tcp也可以使用udp?
可以从2方面来理解
原因之一:当DNS协议使用udp报文大小受限制,udp最多一次发送512B,而tcp可以发送512B甚至更多。为什么呢?通过DNS报头我们可以看到:
其中,两个字节的标志部分具体如下:
QR(1比特):查询/响应的标志位,1为响应,0为查询。
opcode(4比特):定义查询或响应的类型(若为0则表示是标准的,若为1则是反向的,若为2则 是服务器状态请求)。
AA(1比特):授权回答的标志位。该位在响应报文中有效,1表示名字服务器是权限服务器
TC(1比特):截断标志位。1表示响应已超过512字节并已被截断
RD(1比特):该位为1表示客户端希望得到递归回答
RA(1比特):只能在响应报文中置为1,表示可以得到递归响应。
zero(3比特):不说也知道都是0了,保留字段。
rcode(4比特):返回码,表示响应的差错状态,通常为0和3,各取值含义如下:
TC标志,仅当DNS报文使用UDP服务时使用。因为UDP数据报有长度限制,所以过长的DNS报文将被截断。1表示DNS报文超过512字节,并被截断。
也就是说当使用udp的时候,如果DNS数据报超过了512B ,那么后面的部分就被截断了。由于TC位是仅在使用UDP协议的时候用,对于TCP没有影响
原因之二:
DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。
也就是说在主DNS服务器与辅助DNS服务器进行同步的时候,需要用TCP协议,为什么呢?个人理解是因为TCP是可靠的面向连接的,DNS服务器存储中的数据 不能出错。这也是使用TCP的原因。
DNS使用TCP 或者UDP 的场合?
通俗地讲,就是DNS服务器之间传输时使用TCP,而客户端与DNS服务器之间传输时用的是UDP。
2 ARP(地址解析协议)
只知道了ip地址是不行的,ip地址能告诉我们将要访问的主机地址,能够使得ip数据包完整,但是当从ip层向下提交给数据链路层的时候,就需要MAC地址,如何得知MAC地址呢?就需要ARP协议啦!
ARP:是根据IP地址获取物理地址的一个TCP/IP协议。这一部分的详细内容会近期在另一篇文章中说。
好了,有了前面的知识铺垫,下面来进行访问网页的过程:
DNS的过程: