SEC-2022版-0000-http/https
http/URL/URI/URN
http连接流程/概念
连接流程:
客户端通过三次握手与服务器建立连接
TCP建立连接后,        向服务器发送http请求
服务器收到http请求后,  向客户端发送http响应
客户端通过tcp四次挥手, 与服务器断开tcp连接
可靠的链接交换信息
无状态的请求/响应协议
无状态协议阐释:
HTTP(超文本传输协议)是一种无状态的请求/响应协议,这意味着服务器不会维护客户端请求的任何状态信息。每个 HTTP 请求都被视为独立的请求,因此在处理一个新请求时,服务器不会考虑前面的请求或上下文。
拓展:两个架构
C/S 客户端-服务器   HTTP TCP/IP FTP
B/S 浏览器-服务器   HTTP HTML   AJAX
http9.0/http1.0 每次连线请求/回应正确后关闭(完成一次关一次)
http1.1         保持连线,一个连接可以多个请求/回应 => 节约握手时间
URL-统一资源定位符
http:// user:pass @ www.example.jp: 80 /dir/index.htm ? uid=1 #ch1  | 
URI与URN
URI : 统一资源标志符, URL<URI
URN :统一资源名称,唯一名称或id标识资源。
客户端请求消息-数据包
http请求组成:(四部分)
请求行
请求头
空行
请求体
请求行
组成 :
Method          请求方法
Request-URL     统一资源标识符
HTTP-Version    HTTP协议版本
CRLF            回车换行
| 请求方法 | 释义 | 
|---|---|
| GET | 请求获取Request-URI所标识的资源 | 
| POsT | 在Request-URI所标识的资源后附加新的数据 | 
| HEAD | 请求获取由Request-URI所标识的资源的响应消息报头 | 
| PUT | 请求服务器存储一个资源,并用Request-URI作为其标识 | 
| DELETE | 请求服务器删除Request-URI所标识的资源 | 
| TRACE | 请求服务器回送收到的请求信息,主要用于测试或诊断 | 
| OPTIONS | 请求查询服务器的性能,或者查询与资源相关的选项和需求 | 
| CONNECT | 保留将来使用,HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 | 
| PATCH | 用于将局部修改应用到资源· (由 RFC 5789 指定的方法) | 
请求头

拓展:
X-Forwarded-For:<client>,<proxy1>,<proxy2>
- 代理,client是客户端地址,proxy是代理地址
 - 作用:让服务端知道客户端请求的来源
 
空行
表示请求头结束,请求体开始。
请求体
通常情况下, post 传输的数据就在请求体当中,而 get 传输的数据在请求行当中。
且get是以 & 作为分隔。post也有使用 & 作为分隔。
服务器响应消息-数据包
http响应组成
- 状态行
 - 消息报头
 - 空行
 - 响应正文
 
和请求最明显不一样的,是状态行,其他没什么大不同
状态行
协议版本 状态码 状态码描述
状态码
状态代码有三位数字组成,第一个数字定义了响应的类别·且有五种可能取值
1xx: 指示信息--请求已被服务器接收·继续处理
2xx: 成功--请求已成功被服务器接收、理解、并接受
3xx: 重定向--需要后续操作才能完成这一请求
4xx: 客户端错误--请求有语法错误或请求无法实现
5xx: 服务端错误--服务器在处理某个正确请求时发生错误
常见状态码
200 OK                    //客户端请求成功
400 Bad Request           //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized          //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden             //服务器收到请求,但是拒绝提供服务
404 Not Found             //请求资源不存在,eg:输了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable    //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
头部消息

POST请求的几种Conten-Type
- application/x-www-form-urlencoded: 最常见的POST提交数据方式·浏览器支持的原生form表单
 - multipart/form-data: 这种方式一般用来上传文件。
 - application/json: 在响应头中很常见,在请求头中用来告诉服务端消息主体是序列化后的son字符串
 
boundary:较长,用于分隔不同的字段
    + –boundary开始
    + –boundary–结束
好紧迫的时间……
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 矢幽武博客!
 评论












