http协议组成
摘要
本文主要内容介绍什么是http协议
了解http协议之前我们先了解一下当我们输入一个url到页面渲染出来,这个过程发什么了什么呢~
网络开启线程开始解析url
DNS解析域名,查询IP
建立TCP/IP链接
然后发送请求
什么是HTTP协议:
HTTP即超文本传输协议,作为网络协议中的应用层的协议,它是一种文明的协议,传输过程中传输内容对外是可见的。
HTTP的特点:
HTTP协议是基于TCP/IP通信以协议来传递数据的,数据类型可以是JSON、表单、HTML、图片等等
HTTP默认端口号为80
HTTP是协议是无状态的,每一次的请求与响应彼此没有任何关系(这也是为什么产生Session、Cookie、Token的原因)
HTTP请求组成部分
请求行
请求行有请求方法、URL字段、HTTP协议版本号三部分组成
HTTP请求方式:POST GET PUT DELETE OPTIONS等等
在这里需要了解到,HTTP请求也分为简单请求跟复杂请求
那么一个HTTP请求如何满足是简单请求:
1HTTP请求类型为:HEAD、GET、POST
2HTTP头包含:Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type
Content-Type仅能是application/x-www-form-urlencoded、multipart/form-data、text/plain之一
复杂请求:
如果不满足简单请求的条件便是复杂请求,一个复杂请求的通信,不仅包含通信内容的请求,而且还包含一个预请求。
简单请求与复杂请求对比:
简单请求
复杂请求
其中预请求的请求类型为OPTIONS
请求头
用来向客户端解释请求信息
请求报头常见属性(这里重点解释常用的):
Accept:可接受响应类型(application/json、text/plain等)
Accept-Charest:可接收的字符集(utf-8等)
Accept-Encoding:可接受的相应内容的编码方式(gzip、deflate等)
Accept-Language:可接受的响应内容语言列表(en-US、zh-CN等)
Authorization:http认证信息(oauth认证)
Cache-Control:缓存机制控制(on-cache、on-store、max-age、public、private)
Connection:客户端优先使用的链接类型(keep-alive、upgrade)
User-Agent:浏览器的身份标识字符串
Origin:发起一个针对跨域资源共享的请求
If-Modified-Since:上一次响应的Last-Modified的值回当做If-Modified-Since的值发送给服务器
If-None-Match:上一次响应的ETag的值会当做If-None-Match的值发送给服务器
Referer:表示跳转到当期那页面的之前页面
消息主题:前台向后台发送的数据
HTTP响应
我们用抓包工具抓取一个响应如图
响应行
响应行由HTTP协议版本号、状态码,以及状态描述三部分组成(例如途中:HTTP/1.1 200 OK)
响应头组成部分
Cache-Control:no-store no-cache max-age等等
Date:响应时间
Expires:新鲜度,通知浏览器过期前可以使用副本
Content-Length:响应内容大小
Content-Type:响应类型
ETag:校验值,校验从服务器端获取内容是否发生改变
响应正文:服务器发送给客户端的内容
http协议组成的更多相关文章
- HTTP协议系列(1)
一.为什么学习Http协议 首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- 协议森林17 我和你的悄悄话 (SSL/TLS协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...
- 协议森林16 小美的桌号(DHCP协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...
- 简约之美Jodd-http--深入源码理解http协议
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...
- 【JavaScript】javascript中伪协议(javascript:)使用探讨
javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...
- SNMP简单网络管理协议
声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...
- 海鑫智圣:物联网漫谈之MQTT协议
什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...
- linux-图形化远程管理协议
远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...
- RTP与RTCP协议介绍(转载)
RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...
随机推荐
- share point 下载语言包
可以选择对应语言 日文: https://www.microsoft.com/ja-JP/download/details.aspx?id=42546 中文: https://www.microsof ...
- scipy.sparse 稀疏矩阵
from 博客园(华夏35度)http://www.cnblogs.com/zhangchaoyang 作者:Orisun 本文主要围绕scipy中的稀疏矩阵展开,也会介绍几种scipy之外的稀疏矩阵 ...
- TF-epoch、 iteration和batchsize区别(转载)
from http://www.cnblogs.com/qggg/p/6876942.html 转自 http://blog.csdn.net/sinat_30071459/article/detai ...
- git的clone和github的fork
git的clone是从github上下载下来,clone到项目里面,fork是在本地修改后再提交到github上,在github上用request来进行提交,经作者确认后可以合同到mast分支上
- SPOJ D-query && HDU 3333 Turing Tree (线段树 && 区间不相同数个数or和 && 离线处理)
题意 : 给出一段n个数的序列,接下来给出m个询问,询问的内容SPOJ是(L, R)这个区间内不同的数的个数,HDU是不同数的和 分析 : 一个经典的问题,思路是将所有问询区间存起来,然后按右端点排序 ...
- 【BZOJ3876】 [Ahoi2014]支线剧情
Description [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往往 都有很多的支线剧情,现 ...
- 序列式容器————vector
目录 介绍 1 创建 2 容量和大小 size() capacity() 3 resize() 4 reverse() 5 获取元素 front() back() 6 迭代器(待补充) 7 push_ ...
- RPN
训练: 特征图是51x39x256,对该图像的每点考虑9个窗口:三种候选面积(128,256,512) x 三种尺度(1:1,1:2,2:1).这些候选窗口称为anchors.如下图: 如果图片尺寸w ...
- 不属于java语言鲁棒性特点的是
A:java能检查程序在编译和运行时的错误 B:java能运行虚拟机实现跨平台 C:java自己操纵内存减少了内存出错的可能性 D:java还实现了真数组,避免了覆盖数据的可能 鲁棒性(Robus ...
- Java并发编程的艺术笔记(三)——Thread.join()
t.join()方法只会使主线程进入等待池并等待t线程执行完毕后才会被唤醒.并不影响同一时刻处在运行状态的其他线程.它能够使得t.join()中的t优先执行,当t执行完后才会执行其他线程.能够使得线程 ...