学习HTTP之我见

一.HTTP什么?

          字面上的意思就是HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,请注意这这是字面上的意思!

二.HTTP用在哪里?

       http协议最常用的地方就是在我们的浏览器中,你可能会说?谁说的http在浏览器中,我怎么没看见。
       其实,http协议最常用的也就是浏览器与服务器之间的通信啦!在哪里呢?就在我们的浏览器地址栏中,因为浏览器最常用的协议就是http,只不过它被我们的浏览器隐藏了。
       自从http1.1版本发布之后,还有一个用得多的地方就是我们的多线程下载,你可能听说过IDM下载软件,它就是一个典型的http多线程下载软件

三.当我们输入URL之后,这其中的过程是怎样的?

        首先,当我们输入URL之后,浏览器会先查找我们本地的hosts文件,如果是windows系统,则是C:\Windows\System32\drivers\hosts,如果是linux系统,则是在/etc/hosts中。当浏览器发现我们的域名存在hosts中时,就会指向我们hosts中相对于的IP,这种用法常常用于在本地调试。
        当我们的域名不存在hosts中的时候,我们的浏览器就会根据我们计算机的网络配置,通过DNS地址,去查询相应的IP,查询成功后,域名服务器就会返回我们需要的IP。
        得到IP之后,浏览器会根据我们默认的端口号去查找到对应的主机。http默认端口号为80端口,浏览器也将其省略了!
       地址组成

        (http://)hostname(:80)/URL

             OSI七层模型和TCP/IP五层模型

            


3.1客户端是如何找到服务器主机的?

           首先,http协议是一个应用层的协议,其他的应用层协议还有smtp,ftp,telnet等等。http会被封装成TCP报文,会被添加上源端口和目的端口,然后进一步被封装成IP报文,加上目的IP地址,然后会被数据链路成封装成帧,并加上相应的序号,进一步到物理层,物理层会将帧编程字节流,这样,就能够在物理线路中传播了。当我们所以的帧到达目的网络后。通过由下到上的解包。注意,这里不是主机,而是目的网络,然后会根据我们的ARP协议,结合主机的MAC地址找到相应的主机。

3.2客户端和服务器之间的具体过程是怎样的?

            首先,浏览器会发送http请求。http请求内容由三部分组成:
1,请求行;一般包含有请求的方法,请求的URL地址以及HTTP协议版本号。常用的请求方法有,POST,GET,DELETE,HEAD,PUT,这5个是我们平时使用的最常用的,POST用于增加数据,GET用于请求获取数据,DELETE用于删除数据,PUT用于更新数据。
2.请求头,也叫消息报头,请求头一般会包含需要告知服务器我客户端的状态等等,比如客户端能够解析的文件类型Accept能够解析的字符编码Accept-Charset,支持的语言Accept-Language,以及是否支持压缩等等。
3,请求正文,通常请求正文为一个空白行。
            之后,通过3.1中提到的寻找服务器的方法找到服务器的位置。
            服务器通常也由好几个部分组成:负载均衡,LVS(Linux虚拟服务器),反向代理服务器,WEB服务器。
1.负载均衡的作用是将到达服务器的请求进行合理的分配,将他们分别转到不同的服务器上,以减轻服务器的压力。
2.LVS则是一个服务器集群,由于每一种服务器能够处理的请求有限,所以我们要使用集群来解决访问量过大的问题,比如国内的百度,新浪,网易等门户网站都使用了LVS。
 3.反向代理,则是在服务器端建立一个代理服务器,由代理服务器去WEB服务器上代替我们寻找资源,然后将资源返回给我们。常常用于防攻击策略、放抓取、SSL、gzip、自动性能优化以及高速缓存等。

 4.WEB服务器则是我们网站的实际存在位置,web服务器将我们的网站部署,向请求的浏览器提供请求的。常用的又Apache,Tomcat以及nodejs。
资源。
          当我们的WEB服务器监听到我们的HTTP请求时,会对http请求的信息进行解析,得到相应的URL路径和请求的方法。因为我最近在使用nodejs做开发,这里就使用nodejs来举例
nodejs实际上是一个javascript的运行环境,node通过http模块来提供http服务。nodejs有一个名叫路由控制器的中间件,当URL地址和方法传到node的时候,路由控制器会进行解读,
将得到的URL地址和index.js路由文件进行匹配,当匹配到相同的路径是,就会调用模板引擎对静态文件,模型进行加工,得到需要返回的数据。
         这时候,WEB服务器就会对返回的信息按照http协议进行封装。
        消息响应,即返回给浏览器的数据,通常也有三部分组成:状态行,消息报头,响应正文。
1.状态行。状态行中主要包含了HTTP协议版本,以及返回的状态码。常用的状态码有2XX,3XX,4XX。点击这里查看具体
2.消息报头。主要包含有返回的数据类型,内容长度等信息
3.响应正文,这里就包含我们服务器返回的正文数据。
        当响应体到达浏览器的时候,浏览器引擎会对响应内容进行渲染,渲染成功后,就可以在浏览器中显示了!
  
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值