【计算机网络基础 七】输入URL到浏览器发生了什么

简介: 【计算机网络基础 七】输入URL到浏览器发生了什么

这篇blog实际上就是对整个计算机网络学习内容的的一个总结和归纳,这里举个实际的例子,来尽可能的覆盖全学习到的一些知识,把这些知识都串联起来。首先描述下背景:

之前我在京东商城看中一个戴森吹风机想要在一周年的时候送给女朋友小郭,但是当时看的价格比较高,想要在20分钟后秒杀的时候再买于是
就把它放入到了购物车,然后在到时间后我登录后点击链接 https://www.jd.com/ 请求数据,发出请求到看到页面的整个过程是什么样的?

网络通信流程

互联网内各网络设备间的通信都遵循TCP/IP协议,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。分层由高到低分别为:应用层、运输层、网络层、数据链路层、物理层。发送端从应用层往下走,接收端从物理层往上走

  • 请求的时候我的浏览器是发送端而京东服务器为接收端
  • 响应的时候我的浏览器是接收端而京东服务器为发送端

接下来分层次的探讨一下这个问题。

应用层

首先我在浏览器客户端发出了请求,请求携带了Cookie信息,而Cookie记录了SessionID,为一个标准的https请求:

那么这一层要做的最重要的事情就是域名解析,用域名服务器将域名解析为对应的标准IP地址。主机向本地域名服务器发起解析请求,本地域名服务器则采用迭代的方式按顺序去询问:根域名服务器【DNS域名服务器】->顶级域名服务器【COM域名服务器】->权限域名服务器【JD.COM域名服务器】,最后权限域名服务器告诉了本地域名服务器站点的IP地址【120.52.30.30】,本地域名服务器返回给了主机。

运输层

在拿到了主机地址【127.0.0.1】京东的服务器的IP地址【120.52.30.30】、运输层的HTTP协议端口【443】以及请求的应用层HTTP数据报文后,运输层的TCP协议将应用层HTTP数据报文按照顺序切割为多个运输层TCP报文段。准备进行可靠连接:

  • TCP使用三次握手将通信双方的机器进行连接,当然数据传输完毕后要使用四次挥手断开连接
  • TCP使用滑动窗口来保证每次传输都是有序可靠的
  • TCP使用拥塞控制来保证发送的传输速率可控,防止接收方扛不住

建立好连接后就要开始进行数据传送了,这里需要做的就是配置好网关

网络层

每个运输层TCP报文段在传送的时候都会被加上IP的首部作为网络层IP数据报来进行传送,那么每个报文段需要被配送到哪个地址呢?这个由分组转发算法来决定,例如我的请求被转发到了华南区,到了华南区某个京东的机房里的一台服务器

而在确定好了下一跳要被转发到哪个路由器或者目的主机后,使用ARP地址解析协议来将逻辑的IP地址转化为实际的物理MAC地址,以上三层实现了虚拟地址到真实物理地址的转化,接下来就是真实物理地址的字节传递,上边部分可以归纳下:

数据链路层

明确了数据要传送到的实际物理地址后,网络层IP数据报被加上首部和尾部组装成了一个数据链路层PPP帧,通过数据链路层的传输,可以实现差错控制的透明传输,通常使用交换机来加快传输速率。

物理层

每一个数据链路层PPP帧在物理层均被解析为物理层二进制位码流,然后通过电信号、光信号或者无线信号来进行传输,这样整个数据就实现了交换。

这样整个流程就实现完成了,请求到达了京东的服务器,并且通过redis拿到了购物车信息,获取到了戴森吹风机,这个时候我下单购买了戴森吹风机,女朋友就很happy!

信件的传递

还想举个例子来聊聊在整个流程中我们传递的内容该怎么理解,举个例子:一个小区里(主机)里住着很多住户(不同的应用进程),各自有门牌号(端口号),现在一个叫万维网的用户要给远方的另一个小区(目标主机)里的万维网亲戚写信:

  1. 把信(HTTP请求报文)放到信封(端口号)里,并且告诉邮局对方的邮编(URL),接下来会有怎样的流程?
  2. 邮局拿到邮编后首先查表(DNS域名服务器)将其解析为对方小区的地址(IP地址),选择好双方的连接方案(运输层传输协议)。然后依据客户要求选择中国邮政EMS(提供TCP可靠分组交付),并且把信的三页纸分装到三个相同的信封包括:信封(TCP数据报)包括:(TCP数据报首部,保存源目的端口地址)+信纸部分(切割的HTTP请求报文段
  3. EMS(TCP协议)承包了该客人的业务,它拿到客户的信后依据之前邮局对照表(路由表)里对应的(IP地址)把这封信放到一个包裹里(IP数据报)包括:包裹外壳(IP数据报首部,保存源目的IP地址)+完整的信(TCP数据报)。然后快递公司站点把包裹投递出去,经过服务站点的层层转发(使用了下三层:数据链路层,物理层)送到对应住户(进程)所在的小区(主机),因为只知道地址(IP地址),而不知道具体怎么过去,但是快递员认路(ARP协议

送到所在小区后,快递员取出包裹,拿出信,对照着信封的格式送到了具体的住户家里,信件的传递也就是上三层的寻址过程。

相关文章
|
11月前
|
人工智能 Java 物联网
JAVA网络编程的未来:URL与URLConnection的无限可能,你准备好了吗?
随着技术的发展和互联网的普及,JAVA网络编程迎来新的机遇。本文通过案例分析,探讨URL与URLConnection在智能API调用和实时数据流处理中的关键作用,展望其未来趋势和潜力。
145 7
|
9月前
|
缓存 网络协议 JavaScript
浏览器输入 URL 后的那些事儿
本文介绍了浏览器输入URL后到页面展示的完整过程,涵盖DNS解析、TCP三次握手、HTTP请求与响应、以及浏览器渲染等关键步骤。首先,浏览器通过DNS解析将域名转换为IP地址;接着,通过TCP三次握手建立连接;随后发送HTTP请求获取网页内容;最后,浏览器解析HTML、CSS并构建渲染树,完成页面渲染。整个过程涉及网络协议和浏览器内部机制的协同工作。
245 13
|
11月前
|
JSON 安全 算法
JAVA网络编程中的URL与URLConnection:那些你不知道的秘密!
在Java网络编程中,URL与URLConnection是连接网络资源的两大基石。本文通过问题解答形式,揭示了它们的深层秘密,包括特殊字符处理、请求头设置、响应体读取、支持的HTTP方法及性能优化技巧,帮助你掌握高效、安全的网络编程技能。
249 9
|
11月前
|
缓存 网络协议 JavaScript
浏览器输入url之后最后网页渲染出来经过了什么
【10月更文挑战第31天】从浏览器输入 URL 到网页渲染出来是一个涉及多个环节和技术的复杂过程,每个环节都对最终的网页显示效果和用户体验有着重要的影响。
116 3
|
11月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
1388 1
|
11月前
|
JSON Java API
JAVA网络编程新纪元:URL与URLConnection的神级运用,你真的会了吗?
本文深入探讨了Java网络编程中URL和URLConnection的高级应用,通过示例代码展示了如何解析URL、发送GET请求并读取响应内容。文章挑战了传统认知,帮助读者更好地理解和运用这两个基础组件,提升网络编程能力。
186 5
|
11月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
10月前
|
缓存 网络协议 JavaScript
第八问:在浏览器中输入URL后发生了什么?
当在浏览器中输入URL并按下回车键时,会经历一系列复杂的过程:1. 用户输入URL;2. DNS解析域名;3. 建立TCP连接;4. 发送HTTP/HTTPS请求;5. 服务器处理请求;6. 浏览器渲染页面;7. 页面展示。每个步骤涉及不同的技术和协议,确保数据的准确传输和页面的正确显示。
383 0
|
11月前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
12月前
|
域名解析 缓存 负载均衡
网络浏览器并输入地址到显示的整个过程
网络浏览器并输入地址到显示的整个过程