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
协议方案名 登录信息(认证) 服务器地址 服务器端口号 带层次的文件路径 查询字符串 片段字符串
-------
协议方案名: http/ftp/file/mailto/telnet/ldap……
登录信息(认证):可选, 需要认证再填写此参数
服务器地址: ip地址或者域名(常见)
服务器端口号: 指定服务器连接的端口号,不填则为默认端口号
带层次的文件路径: 获取资源在服务器当中的具体位置
查询字符串: 已指定路径资源,可查询字符串获取想要的参数
片段字符串: 信息片段字符串,标记已获取资源的子资源。

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–结束

好紧迫的时间……