HTTP(S)协议基础

基础知识

URL:统一资源定位符,表明所请求资源的位置和请求方法
格式:schema://host[:port#]/path/.../[?query-string][#anchor]
含义:底层协议://服务器域名或IP[:端口#]/路径/.../[发送给服务器的数据][锚]
其中域名结构为:[子域名].[域名].[根域名]

Web通信基本流程

  1. 建立连接。在浏览器打开www.baidu.com,本机会把这个url发给DNS服务器,如果能够解析到域名对应的ip则返回其ip,否则该DNS将继续将该解析请求发送给上级DNS服务器,整个DNS可以看做是一个树状结构,该请求将一直发送到根域名服务器直到得到结果。DNS服务器通过域名找到服务器ip地址后,建立一个socket连接。socket是通过ip和端口建立的,如果url里不包含端口号,则会使用该协议的默认端口号。http默认端口号为80,https为443
  2. Web浏览器发送请求
  3. Web服务器做出响应, 语言解释器执行脚本,从数据库调取相应的数据返回给服务器,服务器组装成HTML页面再返回给客户端
  4. 关闭连接

Web服务端组成

  1. 操作系统
  2. Web服务器
  3. 语言解释器
  4. 数据库

流行的Web服务端架构:操作系统+WEB服务+解释执行环境+数据库服务

  1. .NET:Windows+IIS+ASP(.NET) +MSSQL
  2. LAMP:Linux +Apache+PHP+MySQL
  3. LNMP:Linux +Nginx+PHP+MySQL
  4. J2EE:UNIX/Windows +Tomcat +JSP +Oracle

HTTP:超文本传输协议,基于请求和响应模式,是一种是无状态的应用层协议,下一次请求与上一次请求无关
HTTP请求报文组成:请求行(请求方法)、请求头(消息报头)、请求正文。请求头后面以空白行代表请求头结束
HTTP响应报文组成:响应行、响应头、响应正文。响应头后面以空白行代表响应头结束
请求报文的第一行为请求行,格式通常为:请求方法/所请求资源的路径/HTTP协议版本

如:GE/index.php HTTP/1.1

HTTP请求方法

GET(直接在url显示):请求获取由Request-URL所标识的资源
POST(登录时较多):在Request-URL所标识的资源后附加新的数据
HEAD:请求获取由Request-URL所标识的资源的响应消息报头
OPTIONS:请求查询服务器的性能,或查询与资源相关的选项和需求
PUT:请求服务器存储一个资源,并用Request-URL作为其标识
DELETE:请求服务器删除由Request-URL所标识的资源
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT:要求用隧道协议连接代理

日常绝大多数请求方法为GET或POST,但是对其他请求方法也要了解
请求行和空白行之间的全部属于请求头的内容,请求头的参数在不同场景不尽相同,我们抓个完整的数据包分析

HTTP请求报文

POST /dvwa/login.php HTTP/1.1
Host: 192.168.3.113
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Content-Type: application/x-www-form-urlencoded
Content-Length: 88
Referer: http://192.168.3.113/dvwa/login.php
Cookie: security=low; PHPSESSID=9uh9403hnaesaomusm5l0d1673
Connection: close

username=admin&password=password&Login=Login&user_token=0405b0cd775307c0bd91e28779c2db94

请求头参数含义

Host:指定请求的主机地址和端口号
User-Agent:用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及 版本、浏览器渲染引擎、浏览器语言、浏览器插件等
Accept:代表客户端希望接受的数据类型
Accept-Language:指定一种客户端希望接受的自然语言
Content-Type:向接受端表明发送的介质类型
Content-Length:用于描述HTTP消息实体的传输长度
Referer:包含一个URL,告诉服务器该请求的来源,可用来判断来源的合法性,防止盗链和CSRF
Cookie:一段文本,表示请求者身份。Cookie 重要字段:名称[name]值[value]所属域名[domain]所属相对根路径[path]过期时间[expires][http-only][secure]。若没设置cookie过期时间则为内存Cookie :浏览器关闭而消失;本地Cookie :保存在本地;部分cookie具有httponly属性,目的是阻止客户端脚本访问Cookie,防止XSS攻击
Connection:当前链接是否保持

初此之外还有其他重要参数
X-Forward-for:XFF头,代表请求端的IP,可以有多个,以逗号隔开,用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段

HTTP响应头报文

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 30 Jul 2017 09:22:41 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
Vary: Accept-Encoding
X-Powered-By: PHP/7.0.7
Link: <http://www.hzwang.top/wp-json/>; rel="https://api.w.org/"
Content-Length: 40228

第一行为响应行,表明了HTTP协议版本和服务器响应状态
状态码第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可能取5个不同的值:
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求

server:包含了服务器用来处理请求的软件信息及其版本
Set-Cookie:向本地保存cookie

下面使用telnet模拟http
先编写请求报文
GET(POST或HEAD) / HTTP/1.1
HOST:www.baidu.com

DOS命令窗口执行:telnet www.baidu.com 80
按下ctrl + ]
然后回车
粘贴我们编写好的请求报文
连续两次回车

可以看到成功获取到了响应报文信息,还可以将GET方法改为POST或HEAD,这里不再赘述,大家自行尝试

HTTPS协议是比HTTP更为安全的一种协议,这种关系可以比喻为telnet和ssh,HTTP和telnet的数据都是明文进行传输的,例如我们上面抓取的登录DVWA的数据包,用户名和密码都是明文的,而HTTPS和ssh都是加密传输的。HTTPS是在传输层和应用层之间加了一层SSL,所有的信息都会进行加密传输,并且在数据开始传输之前要互相进行身份认证。SSL是通过证书来验证服务器的身份的,因此HTTPS需要申请CA证书,一般是需要付费的

SSL协议提供的安全通道有以下三个特性

机密性:SSL协议使用密钥加密通信数据
可靠性:服务器和客户都会被认证,客户的认证是可选的
完整性:SSL协议会对传送的数据进行完整性检查

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容