前言
我们用了那么久的浏览器,但是我们知道在输入一个网址到界面响应这背后的到底发生了什么吗?为什么我们输入www.baidu.com,它就知道我们找的是百度的地址呢?我们都知道我们按下回车之后触发的是http请求,但是http请求到底是什么,为什么它就能够请求到我们的数据呢?作为一名程序猿,探索和了解下我们的所处的网络世界,我觉得还是很有
由于篇幅有限,不可能把所有细节都理清楚,因此尽可能抓我们平时都会接触到的内容来做解析,一些不太需要了解的,就简单说明一下了。同时针对每个人获取信息的目的不同,我将先简要的概括Http请求的整个流程,然后再进行具体的分析和阐述。各位看官根据自己的时间和目的来是否需要全篇看完,如果对你有用,记得一键三连哟~
概述
从我们输入网址或者点击某个链接开始,到最终接受到web服务器返回的消息并展示大致分为下面几个过程。
- 解析HTTP请求;
- 创建HTTP连接;
- 请求的发送和应答。
- 断开连接。
下面我们来开始具体的阐述每个过程发生的事情,本篇文章重点分析1、2步骤,3、4步骤放到下篇文章。
在讲解之前,我先来讲个我们身边例子。
我们想要给某个人寄信,我们需要做什么呢,首先我们肯定需要知道寄到哪,寄给谁吧,这是最基本的问题了,但是这其实也是存在问题的,这个地址我们怎么确定才能够保证所有的人都知道这是哪呢?那就肯定需要一个规范的地址,比如XXX省XXX市XXX区XXX号等,但是如果我们只知道某个宏观上的地点呢?比如XXX公司,但是不知道具体的门牌号怎么办呢?那我们在寄信的时候,要么就是我们自己百度下,明确具体的街道门牌号,然后写上,要么就是邮局工作人员帮我们输入地址的时候会自动查出是在哪个街道哪一号。明确了地点、收件人,我们可以写好信的内容,然后用信封来装好,最后递交给邮局。到这里,我们就寄信完成了,只需等待回信即可。
说了这么多,可能大家会有点迷糊,这个和我们的网络请求发送又有什么联系吗?且听我慢慢道来。
一、解析HTTP请求
写文章之前,我看了很多的文章在描述http请求的时候,第一步都是建立TCP连接。但是其实都忽略了一个原则性问题,我们想要修一条路,我们总得知道,我们这条路是修到哪的吧?也就是明确我们的目的地。所以,一个Http请求发生后最开始做的事应该是去解析这个请求链接,然后分析出我们的目的信息,如ip地址、访问的文件路径、服务端的端口等。
Http请求链接解析
开始讲解之前,不妨先了解下我们每天都在接触的网络链接到底是啥样的,下面用一个http链接来举例:
http://www