`
minchina91
  • 浏览: 9873 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

学习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.响应正文,这里就包含我们服务器返回的正文数据。
        当响应体到达浏览器的时候,浏览器引擎会对响应内容进行渲染,渲染成功后,就可以在浏览器中显示了!

分享到:
评论

相关推荐

    j2ee学习方法之我见。

    ### J2EE学习方法概述 本文旨在探讨J2EE的学习方法与策略,主要面向希望通过学习J2EE进行企业级应用开发的学习者。对于那些致力于技术研发、开源项目等领域的专业人士而言,本文提供的方法或许不太适用。 ### 什么...

    ServiceMix学习之我见

    ServiceMix 是一个开源的...对于初学者来说,了解这些基础概念是掌握 ServiceMix 的第一步,进一步的学习可能涉及配置、部署、监控和管理 ServiceMix 实例,以及如何利用其提供的各种组件和服务来实现具体业务需求。

    机器学习(一):一维线性回归模型.rar

    STANFORD公开课,Andrew Ng机器学习第1、2讲算法。 附件中包含待拟合的数据,还有MATLAB实现的三种拟合算法:最小二乘法、批梯度... 详情见我的配套博客:http://blog.csdn.net/hujingshuang/article/details/46124607

    技术我之见----struts

    1. 请求分发:当用户发起HTTP请求时,Struts框架通过FilterDispatcher(在Struts2中变为StrutsPrepareAndExecuteFilter)拦截请求,根据配置的Action Mapping将请求转发到相应的Action。 2. Action:Action是业务...

    Machine-Learning-on-CSIC-2010:数据集HTTP CSIC 2010上的机器学习

    在本项目中,我们关注的是在HTTP CSIC 2010数据集上进行机器学习。这个数据集是由Computer Science Institute of Castilla y León (CSIC)在2010年发布的一个用于评估网页分类算法性能的标准资源。在本文中,我们将...

    php实用手册,我见过的最好的

    总之,《PHP实用手册》是一份集大成之作,它将帮助你从零开始学习PHP,逐步精通各种开发技巧,并提供了解决常见问题的策略。无论你是PHP的新手还是有经验的开发者,这份手册都是你值得拥有的宝贵资源。通过深入学习...

    Qt for android打开原生系统相机和相册

    由于java包的依赖,废了我相当长时间去解决,所以资源分相对高点,但学习的价值很高,对于搞qt开发安卓的是一个晋级性的demo,详情细见我的博客http://blog.csdn.net/clinuxf/article/details/78720374

    akkaTrader:我博客的一部分 - 见 http

    这个项目是作者博客的一部分,通过GitHub分享,允许开发者学习并参与到这个项目的构建中来。在深入探讨AkkaTrader之前,我们需要先理解几个关键概念: 1. **Akka框架**:Akka是用Scala语言开发的一个开源工具,用于...

    ACM学习资源和资料收集.docx

    - 出版社: 我所见过的最好的算法教材 - 介绍: 数据结构与算法基础知识。 5. **《信息学奥林匹克竞赛指导——1997-1998竞赛试题解析》** - 作者: 吴文虎、王建德 - 出版社: 清华大学出版社 - 介绍: 分析历年...

    网易云uniapp社区交友,最全注释. 我估计官方视频里的源码都没我注释全面,结构目录每一个模块全部在md文件中

    我估计官方视频里的源码都没我注释全面,结构目录每一个模块全部在md文件中,遍不出来了,反正就是很不错,可以下载代码,打开绝对是你们见过最全面的注释,不过聊天池是真的难,封装好了一直学不会。

    rar文件MFC 图像处理之图像增强 图像平滑、高斯平滑、中值滤波、拉普拉斯锐化、Sobel锐化(源码)

    该资源主要参考我的博客【【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解,博客地址http://blog.csdn.net/eastmount/article/details/46378783 主要讲述基于VC++6.0 ...

    Python关于爬虫(主要)及一些Python基础的学习.rar

    入门python爬虫,10分钟就够了,这可能是我见过最简单的基础教学 1发起请求 使用http库向目标站点发起请求,即发送一个Request Request包含:请求头、请求体等 Request模块缺陷:不能执行JS 和CSS 代码 2获取...

    android应用开发MVC框架(二)

    很多时候都在找适合自己应用的一种框架,便于应用的更为合理开发,也易于应用功能的扩展,但其实并没有说哪一种架构就是对所有应用都是适应的,所以我们只能在学习摸索之中找到适合我们自己应用的架构,在这里我就写...

    motecraft:见http

    6. **反射机制**:允许在运行时动态创建对象和调用方法,是Java强大的特性之一,常用于插件化、框架开发等领域。 7. **网络编程**:Java的Socket编程,理解TCP/IP协议,能编写网络客户端和服务端程序。 8. **设计...

    日语N2学习资料N2考试复习资料大全日语N2模拟试题含答案资料合集.zip

    日语写作易见错误[1].doc 日语报刊useful文选词语.rtf 日语报刊复习资料.doc 日语报刊复习资料二——词语_词组.txt 日语报刊文选.doc 日语新闻视听核心词汇(政治_经济_教育_天气方面)-----.doc 日语日常用语一.doc ...

    C语言资料大全.rar

    适合所有层次的C语言学习者。本资料大全免费下载,如您手头也有C语言相关资料,敬请分享,另外如您对本资料大全有任何建议或者意见希望能告诉我,以便以后继续改进。本人联系方式见下: Email: yaoz@163.com QQ:...

    MFC 图像处理之几何运算 图像平移旋转缩放镜像(源码)

    该资源主要参考我的博客【数字图像处理】六.MFC空间几何变换之图像平移、镜像、旋转、缩放详解,博客地址http://blog.csdn.net/eastmount/article/details/46345299 主要讲述基于VC++6.0 MFC图像处理的应用知识,要...

    蜘蛛侠论坛2.0 源代码

    而我之所以不断和大家分享我的这个论坛是因为我觉得它很适合初学者学习,它非常干净,我估计可能是你见过的中国最干净的论坛。它提供了以下一些你可能感兴趣的设计供你学习参考: 1)配置简单,使用更简单的ROM框架...

Global site tag (gtag.js) - Google Analytics