程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

浏览器输入一个url发生的事情

发布于2021-05-29 20:24     阅读(1065)     评论(0)     点赞(27)     收藏(3)


在浏览器输入一个url发生的事情例如输入:https://www.baidu.com/
在这里插入图片描述

主机:

1.当浏览器输入百度的url之后,基于DNS协议将百度服务器的域名转为ip地址,https的默认端口是443
2.封装:

  • <1>:应用层.应用程序(浏览器)将数据封装为https协议格式的数据
  • <2>:传输层:操作系统将应用层传输的数据封装位TCP协议格式的数据,传输层包含端口号
  • <3>:网络层:操作系统封装为IP协议格式的数据:包含ip地址
  • <4>:数据链路层:将传输的数据封装为以太网协议的数据,包含mac地址

3.数据封装完成之后,会先根据子网掩码计算目的主机与本机是否是同一个网段,如果是同一个网关,直接发
送,如果不是,本机无法处理,交给网关,网关(路由器)的本机ARP缓存表,基于网关查找mac地址

路由器1:

将主机发送的数据先分用在封装,路由器1接收到主机发送过来数据的源端口号是主机浏览器的端口,ip是主机的局域网ip,路由器会基于NAT和NAPT技术将ip和端口修改为路由器的公网ip+路由器端口,接下来路由器1会将分用封装完成之后的数据继续发送,如果找不到服务器的mac地址,会将数据继续发送到下一个路由器,此时发送端的源ip和源端口都不发生改变,但是mac地址会由发送端主机mac地址—>路由器的mac,而此时的目的地址就是路由器2的mac地址

路由器2

将路由器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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

27 0
收藏该文
已收藏

评论内容:(最多支持255个字符)