HTTP学习笔记

HTTP学习笔记

1、 什么是HTTP?

HTTP(超文本传输协议是一个客户端和服务器通信的标准协议,是TCP/IP 协议族的一个子集,处于应用层。

2、 TCP/IP 协议族层次结构及功能

TCP/IP 协议族可分为4层:应用层、传输层、网络层和数据链路层。

应用层:向用户提供服务,管理提供应用服务时的数据和通信活动。

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

网络层:在多条路径中选择一条路径将网络中流动的数据包传输到指定用户。

链路层(网络接口层)用来处理连接网络的硬件部分

3、 客户端与服务器通信的数据流向

 

4、 访问链接URL的构成

schema://host[:port#]/path/.../[?query-string][#anchor]

Scheme:指定低层使用的协议(例如:http, https, ftp)

片段标识符(RFC:使用片段标识符通常可标记出已获取资源中的子资源(文档内的某个位置)

 

5、 HTTP请求报文(用于 HTTP 协议交互的信息)

HTTP 报文本身是由多行数据构成的字符串文本,分为首部、空行和主体三部分,通常情况下不一定有报文主体

 

请求报文结构

 

请求行:包含用于请求的方法,请求 URI 和 HTTP 版本。

在相同的IP地址下,可能存在多个不同的主机名和域名,因此在发送HTTP请求时,必须Host首部完整指出要访问的主机名或域名的URI

6、 http响应协议

 

响应报文结构

 

状态行:包含表明响应结果的状态码,原因短语和 HTTP 版本。

首部字段:包含表示请求和响应的各种条件和属性的各类首部。

7、 HTTP为无状态传输协议,为了保持持久化链接保持状态,http使用了cookie和session技术。

1) Cookie技术通过在请求和响应报文中加入Cookie信息来控制客户端的状态,客服端根据服务器端发送的响应报文中的Set-Cookie字段保留Cookie信息,当再次请求服务器时会携带此信息。服务器接到Cookie信息后,检查本地的记录,确定请求的来源.Cookie只能用于HTTPS指定HttpOnly 属性的 Cookie 的方法可以防止跨站脚本攻击(XSS

 

8、 HTTP访问方式

1) GET 获取已被URI识别的资源

2) POST:传输实体主体

3) PUT:传输文件,将文件保存在指定的资源定位符下

4) HEAD:获得报文首部,用于确定资源的有效性以及资源是否更新

5) DELETE:删除文件,将指定位置的文件清除

6) OPTIONS:询问支持的方法,查询指定URI支持的访问方式

7) TRACE:追踪路径,Web 服务器端将之前的请求通信环回给客户端的方法。发送请求前,设置Max-Forwards字段的数值,每经过一个服务端数值减一,当数值减为0时,此时的服务器将会返回状态码为200的响应。

8) CONNECT:要求用隧道协议连接代理,主要使用ssl和tls协议把通信内容加密后经网络隧道传输。

9、 报文和实体的差异

1) 报文:是 HTTP 通信中的基本单位,由 8 位组字节流组成,通过 HTTP 通信传输。

2) 实体:作为请求或响应的有效载荷数据(补充项)被传输,其内容由实

10、 状态码表示HTTP请求的结果状态

 

常见状态码:

1)200:正确处理,返回结果

2)204 No Content:正确处理但没有实体返回

3)206 Partial Content:部分请求成功

4301、302、303:表示资源存在其他的uri(一般改为get请求即可)

5304:附带条件请求服务器,服务器允许请求,但未找到满足条件的资源

6400:报文中存在语法错误

7401:用户认证有问题,第一次会弹出认证对话框,第二次直接认证失败

8403:服务器拒绝访问

9404:访问的资源不存在

10500:临时错误,也可能bug引起的临时错误(大部分为程序的bug引起的)

11503:服务器忙

11、 通信数据转发程序:代理、网关和隧道

1) 代理:承担中间人的角色,对请求直接转发不做修改直接传输。代理服务器可以在本地缓存请求的结果,当客户端再次请求相同的资源且在资源没有过期的情况下,可以直接返回。

2) 网关:可以向请求自己的资源一样处理客户端的请求,网关可以直接与数据库等进行交互

3) 隧道:实现长距离传输,常用于SSL传输

12、 首部关键字段

1) 通用首部字段

 

2) 请求首部字段

 

3) 响应首部

 

4) 实体首部

 

13、 HTTPSSSLHTTP的组合,HTTP 加上加密处理和认证以及完整性保护后就是HTTPS

 

14、 https通信流程

1) 步骤 1: 客户端通过发送 Client Hello 报文开始 SSL 通信。报文中包含客户端支持的 SSL 的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。 

2) 步骤 2: 服务器可进行 SSL 通信时,会以 Server Hello 报文作为应答。和客户端一样,在报文中包含 SSL 版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。

3) 步骤 3: 之后服务器发送 Certificate 报文。报文中包含公开密钥证书。

4) 步骤 4: 最后服务器发送 Server Hello Done 报文通知客户端,最初阶段的 SSL 握手协商部分结束。

5) 步骤 5: SSL 第一次握手结束之后,客户端以 Client Key Exchange 报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-mastersecret 的随机密码串。该报文已用步骤 3 中的公开密钥进行加密。

6) 步骤 6: 接着客户端继续发送 Change Cipher Spec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。

7) 步骤 7: 客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。

8) 步骤 8: 服务器同样发送 Change Cipher Spec 报文。

9) 步骤 9: 服务器同样发送 Finished 报文。

10) 步骤 10: 服务器和客户端的 Finished 报文交换完毕之后,SSL 连接就算建立完成。当然,通信会受到 SSL 的保护。从此处开始进行应用层协议的通信,即发送 HTTP 请求。

11) 步骤 11: 应用层协议通信,即发送 HTTP 响应。

12) 步骤 12: 最后由客户端断开连接。断开连接时,发送 close_notify 报文。上图做了一些省略,这步之后再发送 TCP FIN 报文来关闭与 TCP的通信。

15、 HTTP通信流程 

客户端请求的连接首先经过DNS域名解析器查到要访问的源服务器的IP地址,然后发送http请求报文;http请求报文到达TCP层对http请求报文进行拆分,每一块加入TCP标识符,最后一块标识符为0然后TCP层的数据包传输到IP层,IP层加入源服务器的MAC地址;IP层的数据传输到数据链路层,加入以太网信息传输到源服务器,源服务器接到请求则按照客服端发送请求的反顺序解析,处理好 的结果按照发起HTTP的请求过程将结果返回。

16、 Request请求

浏览器发送request请求到服务器获取资源,Request 消息分为3部分,第一部分叫Request line, 第二部分叫Request header, 第三部分是body. headerbody之间有个空行。请求行包括请求方式、URIhttp版本,当使用的是GET请求时,请求体为空。

17、 Response响应

返回客户端的请求结果,response响应的结构与request的结构相同,包括响应行、响应首部和响应体,响应首部和响应体有空行隔开。响应行包括协议版本号、响应状态码和原因原语。

18、 Getpost的区别

1) GET一般用于获取/查询资源信息,而POST一般用于更新资源信息

2) GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连, POST方法是把提交的数据放在HTTP包的Body

3) GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制

4) GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值

5) GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码

6) Get在网页回退时无内容,post会再次提交请求

7) Get请求的url可以被标记而post请求不可以

8) Get请求的结果会被浏览器主动缓存,post请求不会。相比于get请求post请求不仅支持url编码

9) Get请求会被浏览器记住而post不会。Get请求只支持ASCII字符,post没有限制。

10) Get请求产生一个数据包而post产生两个数据包;Get请求将首部和请求体放在一个数据包中传输。Post请求则是先发送头部,当收到服务器返回100的状态码后再传送请求体。(与浏览器有关

19、常见协议名称列表

1)DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的协议。它提供域名到 IP 地址之间的解析服务。

2)IP 协议的作用是把各种数据包传送给对方。IP 地址可以和 MAC 地址进行配对。IP 地址可变换,但 MAC地址基本上不会更改。IP 间的通信依赖 MAC 地址。

3)Web 使用一种名为 HTTP(HyperText Transfer Protocol,超文本传输协议 1)的协议作为规范,完成从客户端到服务器端等一系列运作流程,根据 Web 浏览器地址栏中指定的URL,Web 浏览器从 Web 服务器端获取文件资源(resource)等信息,从而显示出 Web 页面。

3)SGML(Standard Generalized Markup Language,标准通用标记语言)

4)HTML(HyperText Markup Language,超文本标记语言)

5)URL(Uniform Resource Locator,统一资源定位符)。

6)FTP(File Transfer Protocol,文件传输协议)

7)DNS(Domain Name System,域名系统)

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

9)UDP(User Data Protocol,用户数据报协议)、

10)NIC(Network Interface Card,网络适配器,即网卡)

11)CGI(Common Gateway Interface,通用网关接口)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值