1、在浏览器输入一个地址,并回车,我们经历dns解析、tcp建连(三次握手)、ssl握手、http协议交互、tcp拆连(四次挥手)
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