图解http

本文详细介绍了HTTP协议,包括其诞生、工作原理、主要特点如无状态性、持久连接、内容编码、范围请求等,以及与之密切相关的TCP/IP、DNS、Cookie等技术。文章深入浅出地讲解了HTTP报文的结构、请求方法、状态码,以及各种首部字段的作用,还涉及了HTTPS协议确保Web安全的重要性。
摘要由CSDN通过智能技术生成

第一章——了解web及网络基础

1.1 使用HTTP协议访问Web

在浏览器的地址栏输入URL时,可以看到web页面,即使你不了解其运作原理,也能看到web页面。

 发送请求获取服务器资源的web浏览器,称之为客户端。

 web使用一种名为HTTP(超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。

1.2 HTTP的诞生

1.2.1 为知识共享而规划web

WWW: 万维网world wide web

HTML:超文本标记语言hypertext markup language

URL :统一资源定位符uniform resource locator 

SGML:标准通用标记语言 standard generalized markup language

1.2.2 web 成长时代

1.2.3 驻足不前的HTTP

HTTP/0.9   HTTP/1.0  HTTP/1.1

1.3 网络基础TCP/IP

1.3.1 TCP/IP协议族

协议(Protocol):不同的硬件,操作系统之间的通信,所用的这一切都需要一种规则,这种规则称为协议。

 与互联网相关联的协议集合起来总称为TCP/IP。

1.3.2 TCP/IP的分层管理

TCP/IP协议族里最重要的一点就是分层。

TCP/IP分为四层:应用层、传输层、网络层、数据链路层

应用层:向用户提供应用服务时通信的活动。

HTTP协议就在这一层。

传输层:提供处于网络连接中的两台计算机之间的数据传输。

这一层的协议有: TCP(Transmission Control Protocol,传输控制协议)、UDP(User Data Protocol,用户数据报协议),DNS(Domain name system域名系统)

网络层:IP协议在这一层。

用来处理在网络层上流动的数据包。数据包是网络传输的最小数据单位。

数据链路层:用来处理网络的硬件部分。物理设备

1.3.3 ——TCP/IP通信传输流

 利用TCP/IP进行网络通信时,会通过分层顺序与对方进行通信。

发送端(客户端):从应用层往下走,

接收端(服务器):从应用层往上走。

接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。

 封装:把数据信息包装起来的做法称为封装

1.4 与HTTP关系密切的协议:IP、 TCP和DNS

1.4.1 负责传输的IP协议

IP位于网络层,所有使用网络的系统都会用到IP协议。

IP和IP地址:
IP其实是一种协议的名称。

IP协议:就是把数据包传送给对方,而要保证确实传送到对方那里,两个重要的条件是IP地址和MAC(媒体访问控制地址)。

IP地址:指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本不会改变。

利用ARP(地址解析协议address resolution protocol)协议凭借MAC地址进行通信

IP间的通信依赖MAC地址。

ARP协议是一种解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。

在到达通信目标前的中转过程中,那些计算机和路由器等网络设备只能获得很粗略的传输路线。

这种机制称为路由选择。

无论那台计算机,那台网络设备,他们都无法掌握互联网中的细节。

 1.4.2 确保可靠性的TCP协议

按层次分,TCP位于传输层,提供可靠的字节流服务(byte stream service)。

字节流服务:为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。

可靠的传输服务是把数据准确可靠地传给对方。

TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。

确保数据能到达目标(TCP协议的三次握手three-way handshaking)

用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,一定会向对方确认是否成功送达。

握手过程中使用了TCP的标志—— SYN(synchronize异步)和ACK(确认acknowledgement) 

1.  首先,发送端会发送给接收端一个带有SYN标志的数据包

2.然后,接收端收到来自发送端发送的SYN标志后,会发送给发送端带有SYN/ACK标志的数据包

3.最后,发送端确认接收端已经收到了,会发送给接收端带有ACK标志的数据包。

 1.5 负责域名解析的DNS(domain name system)服务

DNS是和HTTP协议位于同一层的协议。

它提供了域名到IP地址之间的解析服务。

用户经常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问。

计算机既可以被赋予IP地址,也可以被赋予主机名和域名。

DNS协议通过域名查找IP地址,或者逆向从IP地址反查域名的服务。

1.6 各种协议与HTTP协议的关系 

 

1.7 URI和URL 

URI(Uniform Resource Identifier统一资源标识符)和URL(Uniform Resource Locator统一资源定位符)。其实相比于前者我们更熟悉后者。

1.7.1 URI(了解)

 URL是URI的子集。

统一资源标识符(URI)通用语法”中列举了几种 URI 例 子,如下所示。

ftp://ftp.is.co.za/rfc/rfc1808.txt 
http://www.ietf.org/rfc/rfc2396.txt 
ldap://[2001:db8::7]/c=GB?objectClass?one 
mailto:John.Doe@example.com 
news:comp.infosystems.www.servers.unix 
tel:+1-816-555-1212
telnet://192.0.2.16:80/ 
urn:oasis:names:specification:docbook:dtd:xml:4.1.2

1.7.2 URI格式


 第二章 简单的HTTP协议

2.1 HTTP协议用于客户端和服务器端之间的通信

客户端: 请求访问文本或图像等资源的一端

服务器端:提供资源相应的一端

2.2 通过请求和响应的交换达成通信 

HTTP协议规定,请求从客户端发出,最后服务器端响应应该请求并返回。

客户端发送给某个http服务器端的请求报文中的内容。 

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

 

HTTP/1.1 200 OK
Date: Tue, 10 Jul 2012 06:50:15 GMT Content-Length: 362
Content-Type: text/html
<html> ......

HTTP/1.1 表示服务器对应的HTTP版本。

200 OK 表示请求处理的状态码(status code)和原因短语。

下面的几行表示创建响应的日期时间,

 

响应报文由:协议版本、状态码、原因短语、响应首部字段、主体组成。

2.3 HTTP是不保存状态的协议 (无状态协议stateless)

 

 使用HTTP协议,每当发送新的请求时,就会有新的响应产生。 

HTTP协议本身不具有保留之前请求或响应报文的信息。这样可以更快的处理大量的事务。

但是在后面的实际需求中会发现,我们需要保留自己曾经登录过的信息,这就出现了cookie技术。

cookie可以管理状态,可以实现保持的登录状态。

2.4 请求 URI定位资源

 

2.5 告知服务器意图的HTTP方法 

 GET:获取资源

GET方法用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。

如果访问的是文本,那就保持原样返回;

如果是CGI(commom getway interface),那就返回执行后的输出结果。

 

POST :传输实体主体

POST方法用来传输实体的主体。

 

PUT:传输文件 (了解即可)

put 方法用来传输文件。要求在请求报文的主体中包含文件的内容,然后保存到请求URI指定的位置。HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,所以会存在安全性问题,因此一般的web网站不使用此方法。

HEAD获得报文首部 

 HEAD方法和GET方法一样,只是不返回报文的主体部分。

 

DELETE:删除文件 (了解即可)

 按照 URI删除指定的资源。

 DELETE方法和PUT方法使用一样不带验证机制,因此一般的web网站不使用此方法。

OPTIONS(选项):询问支持的方法 

 options用来查询针对请求URI指定资源支持的方法。

 

 TRACE:跟踪路径(了解就行了)

trace方法是让web服务器端之间的请求通信环回给客户端的方法。(这句话理解起来比较抽象,因此往下看吧。)

 

发送请求,在Max-Forwards首部字段中填入数值,每经过一个代理服务器就将该数字减1,当数值刚好减到0时,就停止继续传输。最后接收到请求的服务器则返回状态码200 OK的响应。

 

CONNECT :要求用隧道协议连接代理(重要)

 connect方法要求在与 代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。

主要使用 SSL和TLS协议(这两个协议可以称之为HTTPS协议)把通信内容加密后经网络隧道传输。

 connect方法的格式如下:

connect 代理服务器名:端口号 HTTP版本

2.6 使用方法下达命令 

 请求URL指定的资源发送请求报文时,采用称为方法的命令。

这里最常用的方法就是 GET POST HEAD 其次是 OPTIONS CONNECT,然后DELETE PUT TRACE了解一下即可。

 

2.7 持久连接节省通信量 

 在初始的HTTP协议中,每进行一次HTTP通信就要断开一次TCP连接。

这种情况只适用于数据访问量较少的情况,文本数量很小的传输,传输起来没有问题的。

但是对于现在来说,或者随着HTTP的普及,数据量和文件量以及访问请求较大的情况下,上面的就不再适用了。

如果在采用之前初始的HTTP协议会出现这样一个问题,每次的请求会造成无谓的TCP连接建立和断开,增加通信量的开销。

2.7.1 持久连接 

这里就提出了一个持久化连接的方法,也称为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值