在浏览器中输入一个地址,会发生什么呢?(DNS、TCP、SSL/TLS、HTTP)


1、在浏览器输入一个地址,并回车。

  • 解析url
  • 检查缓存,如果缓存有,则直接读取缓存,缓存没有则进行DNS解析
  • 进行DNS域名解析
  • 浏览器发起TCP三次握手
  • 握手成功后如果有TLS/SSL,则进行SSL握手
  • 握手成功后发送HTTP请求
  • 返回HTTP响应
  • 浏览器解码响应,如果响应可以缓存,则存入缓存
  • 浏览器发送请求获取HTML中的资源(html、css、图片、音乐等)
  • 浏览器发送一异步请求
  • 页面渲染结束

 DNS解析:

DNS是将域名转换为IP地址。而我们DNS的服务器IP地址与我们域名对应的IP地址可能不是一个。通过nslookup我们可以查询对应的DNS服务器的IP地址是多少(每个机器使用的DNS服务器可能不一样)

 这个时候,也就是我们是通过114.114.114.114这个dns resolver服务器去进行域名解析的。而域名解析的过程又是递归查询的(通过root根域名查询是generic domains【.com;.edu;.net等】还是country domains【.de;.fr;.ch等】;再根据二级域名再进行查询)

如图:通过wireshark抓包显示DNS数据,我们也可以看到dns是通过114.114.114.114这个地址进行解析的,而110.242.68.3/110.242.68.4才是百度对应的服务器

 

 

 

DNS是基于UDP报文进行传输的

 

 

 

 TCP建连

使用TCP前,必须建立连接。三次握手的目的是同步Sequence序列号(ISN)、交换TCP通讯参数

SYN是同步帧、ACK是确认帧

第一次握手:SYN为1,ACK为0

第二次握手:SYN为1,ACK为1

第三次握手:SYN为0,ACK为1

 

 

 三次握手中的状态包含CLOSED、LISTEN、SYN-SENT、SYN-RECEIVED、ESTABLISHED(状态可以通过netstat命令查看)

 

最开始TCP的状态都是CLOSED,由于server要进行监听所以会有一个LISEN状态,三次握手完成后会进入ESTABLISHED状态

 

TLS/SSL握手

tcl和ssl的作用都有认证、数据加密、安全等功能。https就相当于是http协议与tls/ssl协议的组合

一般来说tls/ssl握手主要client hello、server  hello,server发送公钥证书、server秘钥交换

SSL是一个介于HTTP协议与TCP之间的一个可选层

 HTTP

 HTTP主要分为请求和响应两个部分,在wireshark中我们可以查看请求对应的响应信息。

 

 

 

 

TCP拆连(四次挥手)

TCP四次挥手是为了防止数据丢失、与应用层进行交互

FIN:结束、ACK:确认

 

 

 

 

 

 

参考资料:

https://time.geekbang.org/course/intro/100026801

https://zhuanlan.zhihu.com/p/102392474?utm_source=wechat_session&utm_medium=social&s_r=0

https://blog.csdn.net/sarafina527/article/details/89333536

https://segmentfault.com/a/1190000002554673

https://www.cnblogs.com/mq0036/p/11187138.html

https://blog.csdn.net/daaikuaichuan/article/details/83475809?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.no_search_link&spm=1001.2101.3001.4242.1

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM