HTTP详解(1)-工作原理【转】
转自:http://blog.csdn.net/hguisu/article/details/8680808
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[-]
- 1 HTTP简介
- 2 计算机相互之间的通信
- 3 HTTP协议所在的协议层
- 4 HTTP请求响应模型
- 5 HTTP工作过程
- 6 HTTP协议栈中各层数据流
- 6 HTTPS实现原理
- 7 HTTP各种长度限制
- URL长度限制
- Post数据的长度限制
- Cookie的长度限制
- Html5 LocalStorage
1. HTTP简介
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
在了解HTTP如何工作之前,我们先了解计算机之间的通信。
2. 计算机相互之间的通信
互联网的关键技术就是TCP/IP协议。两台计算机之间的通信是通过TCP/IP协议在因特网上进行的。实际上这个是两个协议:
TCP : Transmission Control Protocol 传输控制协议和IP: Internet Protocol 网际协议。
IP:计算机之间的通信
IP协议是计算机用来相互识别的通信的一种机制,每台计算机都有一个IP.用来在internet上标识这台计算机。 IP 负责在因特网上发送和接收数据包。通过 IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP 负责将每个包路由至它的目的地。
IP协议仅仅是允许计算机相互发消息,但它并不检查消息是否以发送的次序到达而且没有损坏(只检查关键的头数据)。为了提供消息检验功能,直接在IP协议上设计了传输控制协议TCP.
TCP : 应用程序之间的通信
TCP确保数据包以正确的次序到达,并且尝试确认数据包的内容没有改变。TCP在IP地址之上引端口(port),它允许计算机通过网络提供各种服务。一些端口号为不同的服务保留,而且这些端口号是众所周知。
服务或者守护进程:在提供服务的机器上,有程序监听特定端口上的通信流。例如大多数电子邮件通信流出现在端口25上,用于wwww的HTTP通信流出现在80端口上。
当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信,占用两个计算机之间整个的通信线路。TCP 用于从应用程序到网络的数据传输控制。TCP 负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组。
TCP/IP 就是TCP 和 IP 两个协议在一起协同工作,有上下层次的关系。
TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。IP 负责计算机之间的通信。TCP 负责将数据分割并装入 IP 包,IP 负责将包发送至接受者,传输过程要经IP路由器负责根据通信量、网络中的错误或者其他参数来进行正确地寻址,然后在它们到达的时候重新组合它们。
3. HTTP协议所在的协议层
HTTP是基于TCP协议之上的。在TCP/IP协议参考模型的各层对应的协议如下图,其中HTTP是应用层的协议。
4. HTTP请求响应模型
HTTP由请求和响应构成,是一个标准的客户端服务器模型(B/S)。HTTP协议永远都是客户端发起请求,服务器回送响应。见下图:
HTTP是一个无状态的协议。无状态是指客户机(Web浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。客户机(浏览器)向服务器发送请求,服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。
5. HTTP工作过程
一次HTTP操作称为一个事务,其工作整个过程如下:
1 ) 、地址解析,
如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm
从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
协议名:http
主机名:localhost.com
端口:8080
对象路径:/index.htm
在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。
2)、封装HTTP请求数据包
把以上部分结合本机自己的信息,封装成一个HTTP请求数据包
3)封装成TCP包,建立TCP连接(TCP的三次握手)
在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。这里是8080端口
4)客户机发送请求命令
建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。
5)服务器响应
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
6)服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
6. HTTP协议栈中各层数据流
首先我们看看客户端请求的时候,数据在各层协议的数据组织如下图:
而服务器解析客户机请求就是反向操作的过程,如下图:
客户机发起一次请求的时候:
客户机会将请求封装成http数据包-->封装成Tcp数据包-->封装成Ip数据包--->封装成数据帧--->硬件将帧数据转换成bit流(二进制数据)-->最后通过物理硬件(网卡芯片)发送到指定地点。
服务器硬件首先收到bit流....... 然后转换成ip数据包。于是通过ip协议解析Ip数据包,然后又发现里面是tcp数据包,就通过tcp协议解析Tcp数据包,接着发现是http数据包通过http协议再解析http数据包得到数据。
6. HTTPS实现原理
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。其所用的端口号是443。
有两种基本的加解密算法类型:
1)对称加密(symmetrcic encryption):密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES,RC5,3DES等;
对称加密主要问题是共享秘钥,除你的计算机(客户端)知道另外一台计算机(服务器)的私钥秘钥,否则无法对通信流进行加密解密。解决这个问题的方案非对称秘钥。
2)非对称加密:使用两个秘钥:公共秘钥和私有秘钥。私有秘钥由一方密码保存(一般是服务器保存),另一方任何人都可以获得公共秘钥。
这种密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。
下面看一下https的通信过程:
https通信的优点:
1)客户端产生的密钥只有客户端和服务器端能得到;
2)加密的数据只有客户端和服务器端才能得到明文;
3)客户端到服务端的通信是安全的。
7. HTTP各种长度限制
1. URL长度限制
2. Post数据的长度限制
3. Cookie的长度限制
4. Html5 LocalStorage
HTTP详解(1)-工作原理【转】相关推荐
- 【转详解步进电机工作原理】
详解步进电机工作原理[转自知乎gk-auto] 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响, ...
- 详解帧中继工作原理及作用
详解帧中继工作原理及作用 帧中继特点 帧中继工作原理 帧中继的作用 帧中继习题 帧中继(FrameRelay)是一种用于连接计算机系统的面向分组的通信方法.它主要用在公共或专用网上的局域网互联以及广域 ...
- 图文详解开关电源工作原理
一.PC电源知多少 个人PC所采用的电源都是基于一种名为"开关模式"的技术,所以我们经常会将个人PC电源称之为--开关电源 (Switching Mode Power Suppli ...
- 报文如何截取时间_5种报文、8种邻居状态机详解OSPF工作原理
上一章节介绍了OSPF相比RIP具有无环路.路由收敛速度快.可扩展性好的特点.知识卡片 | 链路状态路由协议OSPF凭什么会取代RIP? 我们知道路由协议的最终目的是为了计算最优路由加入路由表来指导I ...
- springmvc工作流程详解_SpringMVC工作原理详解
点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 先来看一下什么是 MVC 模式 MVC 是一种设计模式. MVC 的原理图如下: SpringMV ...
- 详解滤波电路工作原理及相关参数计算
在整流电路输出的电压是单向脉动性电压,不能直接给电子电路使用.所以要对输出的电压进行滤波, 消除电压中的交流成分,成为直流电后给电子电路使用.在滤波电路中,主要使用对交流电有特殊阻抗特性的器件,如:电 ...
- 相关知识|电视天线详解 天线工作原理及作用
关于电视天线大家都不陌生,记得以前老式的黑白电视,是自带天线后来又发展到室外的杆子电视天线.但是到目前为止,电视天线技术又进一步成熟,现在的天线能够大大满足我们的生活需求,但很多人把天线买回家却对天线 ...
- 详解NTPD工作原理
概述 ntpd 是一个操作系统Daemon进程,用于校正本地系统与Internet标准时钟源之间的时间.ntpd 完整的实现了 NTP 协议版本v4,但是同时兼容版本v3(RFC-1305).版本v1 ...
- 详解Spring工作原理
1.spring原理 内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建.调用对象,Spring就是在运 ...
最新文章
- ReactNative ViewPageAndroid组件详解
- python 遍历文件夹写入excel_python:创建文件夹:写入文本1:读取txt:读取Excel文件遍历文件夹:...
- android 相机和相册,[转载][转载] android调用相机和相册
- Hadoop配置完善
- 接口 DataInput
- 前端学习(381):CSS3 的视口单位vw、vh实现自适应(带有px,em,rem的简单介绍)
- Linux服务之SSH
- day7 地址 名片管理系统
- 选择FreeBSD的理由?欢迎新人观看^_^
- 代理应用好文两篇(1)
- matlab经验正交eof,经验正交函数分解(EOF).pdf
- 安装zabbix及部署
- Vue-element tab选项卡二级页面返回缓存选中页签
- Mybatis注解-注解方式的动态SQL语句
- 昆仑万维:如涵在纳斯达克挂牌 公司持有其3.91%股权
- 如何进入机械革命官网 下载驱动
- cssK中的常用单词之相对,绝对
- 2019款苹果一体机/笔记本安装/恢复macOS Catalina图文详解
- 黑莓开发学习入门系列,自己动手实现一个日历软件(六)
- 用vue开发微信公众号H5移动端页面
热门文章
- 视频检测分割--Deep Feature Flow for Video Recognition
- 【windwos bat】批量把windows下的wav文件转为raw文件
- mybatis mysql方言_MyBatis 方言支持 - Mysql to 华为高斯数据库(gaussdb)
- liunx上安装nacos
- MySQL为Null导致莫名其妙的5大坑
- 网络安全模型_基于TCM的网络安全访问模型
- java final修饰符_java final修饰符详解,final修饰方法
- java 文件 缓冲区大小_Java web 中文件下载遇到的缓冲大小问题
- Docker网络详解——原理篇
- 单片机机器周期怎么计算公式_什么是晶振,对于单片机来说它有什么重要作用?...