输入网址并按下回车键那一刻起发生了什么?

问题:输入网址并按下回车键那一刻起发生了什么?

一、形象描述

打开网页这个动作本质上就是从对方服务器上获取文档,浏览器在获得这些文档之后在进行解析和渲染呈现给用户。

用户输入网址后,由浏览器发起http请求,并将用户的”需求“通过tcp/ip传输协议传递到服务器端,服务器根据拿到用户需求后根据需求作出处理后,并将”资源“通过tcp/ip传输协议传递给浏览器,浏览器拿到资源后再作出后续逻辑处理。

 中有几个关键词:需求资源tcp/ip拿到

需求、资源其实就是http请求环节中的报文

tcp/ip 则为传输控制协议。

拿到 则是一个动词,对应http中的“报文解析”。

通过上述,我们可以用写信这个例子来形容:

背景:牛郎和织女相隔甚远,又不能经常相聚,怎么办?于是他们开始了写信来寄托思念。

一天,牛郎写了一封信,信的大致内容为“banabana……,总之,我想你了”,于是投递到邮箱,等待喜鹊来取走信件运送给织女,织女收到信件后,阅读了信件内容,并也写了一封信回复牛郎:“阿郎,你的来信已收到,banabana……,我也很想你!”,这样他们就完成了一次http通讯,那么在这一次通讯来回中,牛郎即为“请求方”,织女即为“响应方”,喜鹊即为“tcp/ip”传输控制协议,信件内容即为“报文”,牛栏和织女拆信的过程则为“报文解析”,与之对应的牛郎和织女把信件装进信封则为“报文封装”。

通过以上例子可以总结出:

http的传输过程是一个“请求-响应”的过程。

其包含 请求方(client)发起请求    +    tcp/ip 传输     +     响应方(server)回应请求等环节,在发送前需要对内容进行“包装”,然后通过tcp/ip传输给接收者,接收者收到内容后对内容进行“解析”,进而才能获取到具体内容。

在“包装”和“解析”过程,他们都在做什么呢?“包装”了什么,“解析”了什么?试想,在现实生活中,我们要能够成功的将一封信寄送到亲人手里,需要什么关键信息?答案当然是”收件地址+邮编+收件人姓名“、“寄信人地址+姓名”,这就是报文包装和解析的内容,我要写信给对方,我必须得知道对方的地址和姓名等信息,也要告知对方我的信息,不要玩匿名,邮局是会拒收的,因此不难理解http包装和解析的内容即为client和server的信息,通过http中header表现,以 key - value 形式存在,且为可读性的文本内容。信件对应的真实内容即为http中的body,接下来我们来看看http协议中的报文。

二、原理描述

浏览器本身是一个客户端,当你输入URL的时候,

1.首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP,

2.然后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览器发送完HTTP Request(请求)包后,

3.服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回HTTP Response(响应)包;

4.客户端收到来自服务器的响应后开始渲染这个Response包里的主体(body),等收到全部的内容随后断开与该服务器之间的TCP连接

输入网址并按下回车键那一刻起发生了什么?

Web服务器的工作原理可以简单地归纳为:
        · 客户机通过TCP/IP协议建立到服务器的TCP连接
        · 客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档
        · 服务器向客户机发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,
        那么服务器会调用动态语言的解释引擎负责处理“动态内容”,并将处理得到的数据返回给客户端
        · 客户机与服务器断开。由客户端解释HTML文档,在客户端屏幕上渲染图形结果
        一个简单的HTTP事务就是这样实现的,看起来很复杂,原理其实是挺简单的。需要注意的是客户机与服务器之间的通信是非持久连接的,也就是当服务器发送了应答后就与客户机断开连接,等待下一次请求。

 

TCP三次握手,四次挥手(为确保文件传输稳定):

输入网址并按下回车键那一刻起发生了什么?

 

 

————————————————
版权声明:本文为CSDN博主「丨Andy丨丶」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/QQ243223991/article/details/101106951