网络基础 - 用户访问一个网站的过程的描述

网络基础 - 用户访问一个网站的过程的描述

 

 

 

1.当我们打开浏览器输入网址回车,到看到网页页面.  是一个非常复杂的过程,听我细细道来:

 

DNS解析

 

大家都知道,计算机之间只能通过ip相互通信,因为ip不好记,于是才使用dns服务器把域名解析为相应的额ip,这里以

解析www.baidu.com为例,当我们输入回车之后,浏览器会首先查询浏览器的缓存,这个缓存存活的时间只有一分钟,

如果没有找到,则去查询本地DNS缓存和hosts文件,如果有www.baidu.com对应的Ip,那么直接使用这个ip访问服务器.

else 这时会把请求发送给网卡配置信息里面的DNS服务器,默认有两个.  我们也称网卡配置信息里面的DNS为local DNS

, 这时候local DNS会查看自己的缓存,如果有则返回给用户,else 就会访问根域名服务器,根域名服务器一看是访问

.com的,然后告诉local DNS服务器 .com的顶级域名服务器,然后local DNS去访问.com的顶级域名服务器,.com服务

器一看是寻找 一级域名 baidu.com于是将baidu.com的ip发给local DNS服务器,然后继续往下找,直到找到

www.baidu.com的权威DNS的Address记录或者Cname,这时候local DNS服务器会把目标ip发送给客户端,并记录在缓

存当中,这样的话下次有其他用户访问www.baidu.com这个域名,loacl DNS的缓存就有记录了,客户端收到ip去访问服

务器,并且本地浏览器也会增加缓存.

理解起来就是 浏览器 -> 局部DNS服务器(DNS代理解析服务器)  -> 根域名服务器 -> .xxx的顶级域名服务器 -> 一级域名

的顶级域名服务器  ->  找到域名的权威DNS的Address记录或者Cname.

 

HTTP交互过程

 

目前我们已经获取到IP了,现在封装HTTP协议报头,HTTP主要包括请求行,请求头部,空行,请求主题.

请求行包括为请求方法 资源路径(url) 协议版本,请求方法主要有POST GET HEAD PUT DELETE  MOVE

具体HTTP协议的细节详情在这里:

HTTP协议:https://blog.csdn.net/Dawn_sf/article/details/79364761

HTTP HTTPS:https://blog.csdn.net/Dawn_sf/article/details/79452242

 

TCP交互过程

 

接下来,我们封装TCP报头,根据TCP报头的信息进行填充,这里TCP有很多功能,可以把协议的各个字段讲清楚:

详情请见:

TCP/IP报头:https://blog.csdn.net/Dawn_sf/article/details/74858207

TCP四大定时器:https://blog.csdn.net/Dawn_sf/article/details/75570670

TCP分片:https://blog.csdn.net/Dawn_sf/article/details/79217998

TCP粘包:https://blog.csdn.net/Dawn_sf/article/details/79231085

TCP的流量控制和拥塞控制:https://blog.csdn.net/Dawn_sf/article/details/79528731

TCP滑动窗口:https://www.cnblogs.com/luoquan/p/4886345.html

 

IP交互过程

 

接下来,我们封装IP报头,根据IP报头的信息进行填充,这里IP也有很多功能和特性,可以把协议的各个字段了解清楚:

详情请见:

TCP/IP报头:https://blog.csdn.net/Dawn_sf/article/details/74858207

子网掩码:https://blog.csdn.net/Dawn_sf/article/details/75646414

路由器的原理和作用:https://blog.csdn.net/Dawn_sf/article/details/75670149

 

ARP交互过程

 

接下来,最后一项就是把ip地址转换成一个唯一的MAC的地址,这里有一个ARP协议寻址过程,具体的细节机制:

详情请见:

ARP交互过程:https://blog.csdn.net/dream_1996/article/details/78926710

CRC校验:https://blog.csdn.net/Dawn_sf/article/details/74857406

QPS吞吐量:https://blog.csdn.net/Dawn_sf/article/details/80725020

 

首先发出去的数据包是三次握手的包,三次握手建立成功之后,才会进行常见的数据交互.

接下来一个HTTP请求包就这样发送给你的目标服务器了,服务器接下来会将你的数据包,按照从低至上,从

数据链路层->网络层->运输层->应用层解有效载荷,然后对数据进行处理. 这里把每一层讲清楚,面试官直接就不会

再问你网络了. 最后给完数据就四次挥手.   

每一层处理数据时候,都认为自己跟对面直接通信,但是他们太嫩了,维护他们是一个非常高效 复杂的机制!!!!

你可能感兴趣的:(网络编程)