发什么什么了
那就抓包看看啦
使用环境以及工具
- WIN10
- WIN环境开启了 Telent客户端
- 服务器 :Open resty
- 抓包工具:WireShark
使用IP地址访问WEB服务器的抓包数据
捕获.PNG三次握手,建立TCP链接
TCP建立连接三次握手.png对应上述抓包红线下面的三个包,经过SYN、SYN/ACK、ACK三个包之后,浏览器与服务器的TCP连接就建立起来了;
HTTP协议工作,传输数据
HTTP传输数据.png此次工作对应的抓包,时建立TCP连接之后的4个抓包
-
首先发出GET请求
-
服务器给个回应,说收到你的GET请求
-
服务器查询请求的数据,返回结果给浏览器
-
浏览器给服务器个回应说我收到你发来的数据;
TCP的四次挥手,关闭连接
TCP四次挥手,关闭连接.png-
浏览器发出一个FIN的包,告诉服务器我要关闭TCP连接;
-
服务器给了个回应,告知浏览器我收到你发来的关闭TCP连接请求,发了一个ACK包,告知浏览器;
-
同时服务器说我要关闭TCP连接了,发出了FIN包给到浏览器;
-
浏览器收到服务器发来的TCP关闭连接请求后,给了个回应说我知道了;
使用域名访问WEB服务器
HTTP协议工作前提是建立在TCP/IP协议之上,我们上述是直接使用IP地址访问WEB服务器,就没有体现出IP协议的寻址和路由,下面是我们使用域名访问WEB服务器的抓包截图
域名访问WEB服务器.PNG从抓包截图中可以看出来和IP地址直接访问没有什么区别
其实域名访问中间多了个域名解析的过程
域名解析
这里就不展开说域名解析过程,就把上述浏览器反问WEB服务器的过程描述下
-
从浏览器中查找缓存,就是域名对应的IP地址,拿到就直接使用
-
浏览器缓存中没有,就从本地DNS中查找 就是对应的hosts文件中查找
-
没有的话就从DNS服务器中查找(根DNS --> 顶级DNS --> 权威DNS 层层解析)
-
当从DNS查找到对应的IP地址后,可能CDN会从中间差一脚(CDN会缓存几分钟内访问到的资源数据,就不用千里迢迢从目标服务器中拿数据了)
-
当CDN中有数据就直接把数据返回,有些动态资源数据CDN还不能缓存,只能继续从目标服务器中获取到返回给浏览器
害
最近工作中有好多跨团队合作的需求,都是互相依赖,难以想象一个【端能力】能确认两个小时;
生活中都是问题叠加问题的,安抚好心情,积极乐观、晴天时修修屋子;
当了一年好几个月的螺丝钉,没有想象中那么简单,还是非常非常复杂;大家各司其职,各有各自的优势;
无论怎么样,眼下都是暂时,大家加油干、加油干;
后面会更新HTTP相关知识了。
网友评论