1、DNS请求
如何查看博客的IP地址?

CMD输入nslookup www.xuemian168.com 查询DNS记录

服务器: UnKnown
Address: 10.10.10.252

非权威应答:
名称: www.xuemian168.com
Address: 115.238.228.9

访问一次博客 经历了什么

我自建的DNS服务器回应了A解析的IP地址

2、TCP会话建立
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
访问一次博客 经历了什么访问一次博客 经历了什么
此时可以看到客户端您正在与服务器建立TCP会话(SYN|SYN+ACK|ACK)

//HTTP是一种无状态协议。既可以TCP也可以UDP,也可以TCP+UDP(我不会),只是一般没人用纯UDP方式,因为UDP的不可靠传输加上HTTP的无记忆应答方式=糟糕的组合。使用TCP就不用考虑数据包乱序,实现起来更简单高效。默认TCP/80。

3、建立HTTP连接
HTTP是一种超文本传输协议 通常是WEB服务器与客户端之间传输信息的协议

理论上,我们使用IP协议连接网络,在IP建立的网络中使用TCP协议建立安全传输,在TCP建立的传输通道中使用HTTP协议传输超文本数据

访问一次博客 经历了什么

您建立一条与服务器的TCP会话后,会发送一个包含“请求方法、URI、版本以及相关的MIME样式”的信息发给服务器,还包含你的UA信息,如图中所示的Mozilla/5.0 巴拉巴拉就是User-Agent信息,这个信息在写网页爬虫时至关重要,用于隐藏自己的甚至UA,甚至可以用来欺骗APP服务器(即使用APP的UA信息,可以通过抓包获取,如我之前开发针对kiinii的爬虫项目 详见github)

HTTP默认是明文传输的,即以未经加密的原始数据传输

4、301重定向
由于我设置了HTTP强制跳转HTTPS,这也是为了保证用户的安全

访问一次博客 经历了什么

服务器向您回复了301重定向请求。

5、建立SSL
SSL协议栈位于TCP和应用层之间。会在TCP三次握手后进行四次握手。

其包含握手协议、记录协议、秘钥更改协议、告警协议。

记录协议:将数据块进行拆分压缩,计算信息验证码、加密、封装头部后进行传输
握手协议:在通信时帮助通信双方协商秘钥

访问一次博客 经历了什么

一不小心还遇到了重传
访问一次博客 经历了什么访问一次博客 经历了什么访问一次博客 经历了什么
访问一次博客 经历了什么

访问一次博客 经历了什么

Chrome上的证书校验

访问一次博客 经历了什么

6、传输数据
访问一次博客 经历了什么

相关文章: