随笔 - 44  文章 - 0  评论 - 2  阅读 - 53295 

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

 

posted on   木木-林  阅读(1298)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示