发布于2021-05-29 20:24 阅读(1065) 评论(0) 点赞(27) 收藏(3)
在浏览器输入一个url发生的事情例如输入:https://www.baidu.com/
1.当浏览器输入百度的url之后,基于DNS协议将百度服务器的域名转为ip地址,https的默认端口是443
2.封装:
3.数据封装完成之后,会先根据子网掩码计算目的主机与本机是否是同一个网段,如果是同一个网关,直接发
送,如果不是,本机无法处理,交给网关,网关(路由器)的本机ARP缓存表,基于网关查找mac地址
将主机发送的数据先分用在封装,路由器1接收到主机发送过来数据的源端口号是主机浏览器的端口,ip是主机的局域网ip,路由器会基于NAT和NAPT技术将ip和端口修改为路由器的公网ip+路由器端口,接下来路由器1会将分用封装完成之后的数据继续发送,如果找不到服务器的mac地址,会将数据继续发送到下一个路由器,此时发送端的源ip和源端口都不发生改变,但是mac地址会由发送端主机mac地址—>路由器的mac,而此时的目的地址就是路由器2的mac地址
将路由器1发送的数据进行分用和封装,继续修改发送端和接收端的mac地址(假设下一跳的地址就是服务器)
源mac:路由器1的mac地址---->路由器2的mac地址目的mac:路由器2的mac地址---->百度服务器的地址
服务器接收到数据之后,将数据进行从下到上,数据链路层—>应用层的分用,判断目的ip与本机ip是否一致,一致的话接收数据交给对应端口进程,再有web服务器处理https协议格式的数据,
web服务器分用https协议的数据格式,根据服务路径和应用上下文路径,处理数据,如果是静态资源,直接返回;如果是动态资源,调用servlet的service方法,最终调用的是doXXX一些方法,对请求进行处理,处理完成之后,web服务器将数据封装位https协议的数据,
从上到下依次封装数据,应用层---->数据链路层
响应发送的数据报的传输流程和之前类似,最终到达路由器1,路由器1接收到响应的数据之后,基于NAT和NAPT技术将ip和端口转为局域网主机的ip和端口,在发送到对应的主机
原文链接:https://blog.csdn.net/supermanman_/article/details/117329245
作者:我爱编程
链接:http://www.javaheidong.com/blog/article/207263/3b58f0360dcc7c30c623/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!