网络系列2 HTTP协议

参考:
HTTP协议详解 https://www.jianshu.com/p/dac7b8bdb682
HTTP请求方法GET和POST http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

一.HTTP(超文本传输)协议

  • TCP/IP协议栈中应用层协议,基于TCP实现,TCP负责可靠的内容传输,HTTP负责识别内容
  • HTTP是无状态协议,每次的内容解析没有关联。TCP是有状态协议,客户端和服务器通过TCP协议通讯时需建立连接
  • HTTP包含客户端向服务器发送请求时发送的请求报文,及服务器响应客户端时发送的响应报文

二.HTTP请求报文

1.请求报文 = 请求行(request) + 请求头(header) + 请求体
  • HTTP请求消息体结构如下
Http请求消息体结构
  • HTTP请求报文实例如下
Http请求报文实例
2.HTTP请求方法
  • 请求方法
序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体
2 HEAD 类似于GET请求,但返回的响应中没有具体内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源建立和/或已有资源的修改
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容
5 DELETE 请求服务器删除指定的页面
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
7 OPTIONS 允许客户端查看服务器的性能
8 TRACE 回显服务器收到的请求,主要用于测试和诊断
  • GET方法和POST方法比较
    1)GET用于客户端向服务器获取信息,是安全的幂等的。安全意味着GET仅用于获取信息而非修改信息;幂等意味着对同一个URL的多个请求返回同样的结果
    2)POST用于客户端向服务器提交信息,提交后可能改变服务器上已有的资源
    3)GET与POST现象层面的区别见下表
序号 内容 GET POST
1 请求数据位置 拼接在URL后 HTTP请求体中
2 请求数据长度限制 浏览器/操作系统限制 无限制
3 安全性 较低(URL明文) 较高
3.请求头参数

见下文

三.HTTP响应报文

1.响应报文=响应行+响应头+响应体
Http响应报文
2.响应行
  • 响应行包含了Http的协议版本和本次请求的状态(状态码)
  • 状态码分类
类别 原因短语
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错
  • 常见状态码
状态码 名称 含义
200 OK 服务器已成功处理请求
204 No Content 服务器已成功处理请求,但返回的响应报文不含且不允许返回任何实体的主体
206 Partial Content 服务器成功执行了客户端发送的范围请求
301 Moved Permanently 永久性重定向 请求的资源已永久被分配了新URI
302 Found 临时性重定向 请求的资源已临时被分配了新URI
303 See Other 由于对应的资源存在另一个URI,所以应使用Get方法定向获取请求的资源
304 Not Modified 客户端发送附带条件的请求时,服务器允许请求访问资源,但未满足附带条件
400 Bad Request 请求报文存在语法错误,需修改请求的内容后再次发送
401 Unauthorized 表示发送的请求需要有通过HTTP认证的认证信息
403 Forbidden 服务器拒绝请求访问服务器资源
404 Not Found 服务器上无法找到请求的资源,也可在服务器拒绝请求且不想说明理由时使用
500 Internal Server Error 服务器在执行请求时发生了错误
503 Service Unavailable 服务器处于超负载或停机维护,暂无法处理请求
  • 响应头参数
    见下文

四.HTTP报文

1.报文实例
报文
2.请求头参数
Header 解释 示例
Accept 指定客户端能够接受的内容类型 Accept:text/plain,text/html
Accept-Charset 浏览器可以接受的字符编码集 Accept-Charset:iso-8859-5
Accept-Encoding 浏览器可以支持的web服务器返回内容压缩编码类型 Accept-Encoding:compress,gzip
Accept-Language 浏览器可以接受的语言 Accept-Language:en,zh
Cache-Control 指定请求和响应遵循的缓存机制 Cache-Control:no-cache
Connection 表示是否需要持久连接 Connection:close
Cookie HTTP发送请求时,会发送保存在该请求域名下的所有cookie值 Cookie:$Version=1;Skin=new;
Content-Length 请求的内容长度 Content-Length:348
Content-Type 请求的与实体对应的MIME信息 Content-Type:application/x-www-form-urlencoded
Date 请求发送的日期和时间 Date:Tue,15 Nov 2018 08:23:53 GMT
Expect 请求的特定服务器行为 Expect: 100-continue
Host 请求的服务器域名和端口号 Host: www.zcmhi.com
Max-Forwards 限制信息通过代理和网关传送的时间 Max-Forwards:10
Range 只请求实体指定范围的一部分 Range:bytes=500-999
Referer 先前网页的地址(当前请求的来路) Referer:https://www.jianshu.com/p/dc28f2172878
User-Agent 发出请求的用户信息 User-Agent: Mozilla/5.0 (Linux; X11)
Warning 关于消息实体的警告信息 Warn: 199 Miscellaneous warning
3.响应头参数
Header 解释 示例
Accept-Ranges 服务器是否支持指定范围请求及哪种类型的范围请求 Accept-Ranges:bytes
Age 从原始服务器到代理缓存形成的估算时间(单位秒,非负) Age:12
Allow 对某网络资源的有效的请求行为,不允许请求则返回405 Allow:Get,HEAD
Cache-Control 告诉所有的缓存机制是否可以缓存及可缓存类型 Cache-Control:no-cache
Content-Encoding web服务器支持的返回内容压缩编码类型 Content-Encoding:gzip
Content-Language 响应体语言 Content-Language:en,zh
Content-Length 响应体长度 Content-Length:348
Content-Location 请求资源可替代的备用地址 Content-Location:/index.htm
Content-MD5 返回资源的MD5校验值 Content-MD5:Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range 整个返回体中本部分的字节位置 Content-Range: bytes 21010-47021/47022
Content-Type 返回内容的MIME类型 Content-Type: text/html; charset=utf-8
Date 原始服务器消息发出时间 Date: Tue, 15 Nov 2018 08:12:31 GMT
Expires 响应过期的日期和时间 Expires: Thu, 01 Dec 2010 16:00:00 GMT
Last-Modified 请求资源的最后修改时间 Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
Location 重定向接收方到非请求URL的位置 Location:https://www.jianshu.com/p/e50f77f8244e
Proxy-Authenticate 确定认证方案和可应用到代理的该URL上的参数 Proxy-Authenticate:Basic
refresh 一定时间后重定向 Refresh: 5; url=https://www.jianshu.com/p/e50f77f8244e
Retry-After 若实体暂时不可取,通知客户端在指定时间后再试 Retry-After:120
Server web服务器软件名称 Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie 设置Cookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Transfer-Encoding 文件传输编码 Transfer-Encoding:chunked
Vary 是使用缓存响应还是从原始服务器请求 Vary: *
Warning 警告实体可能存在的问题 Warning: 199 Miscellaneous warning

细想从来,断肠多处,不与今番同

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