HTTP协议基础

1.协议基础

通讯协议规定了网络设备进行网络通讯时必须遵守的一系列规则,以便使用同一规则进行信息传输。

1.1 HTTP协议

HTTP (HyperText Transfer Protocol),超文本传输协议,当前主流协议版本为HTTP/1.1,属于TCP/IP的一个子集。HTTP协议是一种不保存状态(无状态)的协议,协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求和响应都不做持久化处理,因此引入了Cookie技术。

1.2 TCP/IP协议

TCP (Transmission Control Protocol),传输控制协议

TCP提供可靠的数据传输服务。为了方便传输,将大块数据分割成以报文段为单位的数据包(字节流服务,Byte Stream Service)进行管理。为了保证可靠性传输,将数据准确无误地送达目标,TCP协议采用三次握手策略,通过SYN (synchronize) 和ACK (acknowledgement)作为标记。首先发送一个带SYN标记的数据包给对方,对方收到后,回传一个带SYN/ACK标记的数据包以示信息传达确认,最后再回传一个带ACK标记的数据包,代表握手结束。

IP (Internet Protocol),网际协议。
TCP/IP协议定义了电子设备如何连接互联网以及数据如果在设备之间进行传输的标准。
TCP/IP协议族按照层次划分从上至下依次为,应用层,传输层,网络层,数据链路层。

1.3 DNS

DNS (Domain Name System,域名解析服务),位于应用层,提供域名到IP地址之间的解析服务。可通过域名查找IP地址,也可逆向反查域名。

1. 应用层

应用层决定了向用户提供应用服务时通信的活动。TCP/IP协议族内预存了各种通用的应用服务,如FTP (File Transfer Protocol),文件传输协议,DNS (Domain Name System),域名系统。HTTP协议也处于该层。

2. 传输层

传输层提供了网络连接中的两台计算机之间的数据传输。有两个性质不同的协议,TCP (Transmission Control Protocol,传输控制协议),UDP (User Data Protocol,用户数据报协议)。

3. 网络层

网络层用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位。该层规定了如何通过传输线路到达指定计算机,并把数据包传送给对方。IP协议位于该层。作用是把各种数据包传送给对方,两个重要条件是IP地址和MAC地址 (Media Access Control Address)。MAC地址是网卡的固定地址,IP地址使用ARP (Address Resolution Protocol,地址解析协议)凭借MAC地址进行通信。

4. 数据链路层

用来处理连接网络的硬件部分。

2.HTTP通信

2.1 HTTP报文

用于HTTP协议交互的信息被称为HTTP报文,分为请求报文(客户端)和响应报文(服务器)。报文本身是由多行(用CR+LF作换行符)数据构成的字符串文本。

HTTP报文可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分,报文出体并不一定存在。

请求报文由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成。


MessageMG1.jpeg

响应报文由协议版本号、状态码、用以解释状态码的原因的短语、可选的响应首部字段和实体构成。


ResponseMessage.jpeg

2.2 HTTP/1.1可使用的请求方法

HttpMethod.jpeg

PS:LINK和UNLINK已经被HTTP/1.1废弃

2.3 持久连接

HTTP初始版本中,每进行一次HTTP通信就要断开一次TCP连接,增加了通信开销。为了解决TCP连接问题,HTTP/1.1和一部分HTTP/1.0想出了持久连接 (HTTP Persistent Connections,也称为HTTP Keep-alive或HTTP connection reuse)的方法。持久连接的特点是只要任意一端没有明确提出断开连接,则保持TCP连接状态。

在HTTP/1.1中,所有的连接默认都是持久连接,但在HTTP/1.0内并未标准化。

2.4 状态管理

HTTP是无状态协议,不对之前发生过的请求和响应状态进行管理,于是引入Cookie技术。Cookie会根据从服务器端发送的响应报文内一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。

2.5 传输编码

数据编码可以提升传输速率,但会消耗计算机CPU等资源。

内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并解码。

常用编码:

  • gzip (GNU zip)
  • compress (UNIX系统的标准压缩)
  • deflate (zlib)
  • identity (不进行编码)

2.6 响应状态码

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

推荐阅读更多精彩内容