美文网首页
http相关

http相关

作者: 雷霸龙 | 来源:发表于2021-03-24 22:17 被阅读0次

    1、HTTP协议简介

    HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。

    2、什么是Http协议无状态协议? 怎么解决Http协议无状态协议?

    • 无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,也就是说,当客户端一次HTTP请求完成以后,客户端再发送一次HTTP请求,HTTP并不知道当前客户端是一个”老用户“。
    • 可以使用Cookie来解决无状态的问题,Cookie就相当于一个通行证,第一次访问的时候给客户端发送一个Cookie,当客户端再次来的时候,拿着Cookie(通行证),那么服务器就知道这个是”老用户“。

    3、URL构成

    image.png

    4、请求报文与响应报文格式

    image.png
    请求报文
    image.png
    POST /somedir/page.html HTTP/1.1    
    //以上是请求行:方法字段、URL字段和HTTP版本字段
    Host: www.user.com
    Content-Type: application/x-www-form-urlencoded
    Connection: Keep-Alive
    User-agent: Mozilla/5.0.    
    Accept-lauguage: fr  
    //以上是首部行
    (此处必须有一空行)  //空行分割header和请求内容 
    name=world   请求体
    
    • Host:指明了该对象所在的主机
    • Connection:Keep-Alive首部行用来表明该浏览器告诉服务器使用持续连接
    • Content-Type: x-www-form-urlencoded首部行用来表明 HTTP会将请求参数用key1=val1&key2=val2的方式进行组织,并放到请求实体里面
    • User-agent:首部行用来指明用户代理,即向服务器发送请求的浏览器类型
    • Accept-lauguage:首部行表示用户想得到该对象的语法版本(如果服务器中有这样的对象的话),否则,服务器应发送它的默认版本
    响应报文
    image.png
    HTTP/1.1 200 OK    
    //以上是状态行:协议版本字段、状态码、相应状态信息
    Connection:close
    Server:Apache/2.2.3(CentOS)
    Date: Sat, 31 Dec 2005 23:59:59 GMT
    Content-Type: text/html
    Content-Length: 122
    //以上是首部行
    (此处必须有一空行)  //空行分割header和实体主体
    (data data data data)//响应实体主体
    
    • Connection:close首部行告诉客户,发送完报文后将关闭TCP连接。
    • Date:指的不是对象创建或最后修改的时间,而是服务器从文件系统中检索到该对象,插入到响应报文,并发送该响应报文的时间。
    • Server: 首部行指示该报文是由一台Apache Web服务器产生的,类似于HTTP请求报文里的User-agent
    • Content-Length:首部行指示了被发送对象中的字节数
    • Content-Type:首部行指示了实体体中的对象是HTML文本

    5、常见的首部

    1. 通用首部字段(请求报文与响应报文都会使用的首部字段)
    • Date:创建报文时间
    • Connection:连接的管理
    • Cache-Control:缓存的控制
    • Transfer-Encoding:报文主体的传输编码方式
    1. 请求首部字段(请求报文会使用的首部字段)
    • Host:请求资源所在服务器
    • Accept:可处理的媒体类型
    • Accept-Charset:可接收的字符集
    • Accept-Encoding:可接受的内容编码
    • Accept-Language:可接受的自然语言
    1. 响应首部字段(响应报文会使用的首部字段)
    • Accept-Ranges:可接受的字节范围
    • Location:令客户端重新定向到的URI
    • Server:HTTP服务器的安装信息
    1. 实体首部字段(请求报文与响应报文的的实体部分使用的首部字段)
    • Allow:资源可支持的HTTP方法
    • Content-Type:实体主类的类型
    • Content-Encoding:实体主体适用的编码方式
    • Content-Language:实体主体的自然语言
    • Content-Length:实体主体的的字节数
    • Content-Range:实体主体的位置范围,一般用于发出部分请求时使用

    6、URI和URL的区别

    URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。

    Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的
    URI一般由三部组成:

    • 访问资源的命名机制
    • 存放资源的主机名
    • 资源自身的名称,由路径表示,着重强调于资源。
    URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

    URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。
    采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
    URL一般由三部组成:

    • 协议(或称为服务方式)
    • 存有该资源的主机IP地址(有时也包括端口号)
    • 主机资源的具体地址。如目录和文件名等
    URN,uniform resource name,统一资源命名,是通过名字来标识资源。

    URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。

    7、常用的HTTP方法有哪些?

    • GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
    • POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
    • PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
    • HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
    • DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
    • OPTIONS:查询相应URI支持的HTTP方法。

    8、一次完整的HTTP请求所经历的7个步骤

    HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:

    1. 建立TCP连接
      在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建 Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则, 只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。

    2. Web浏览器向Web服务器发送请求行
      一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET /sample/hello.jsp HTTP/1.1。

    3. Web浏览器发送请求头
      浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

    4. Web服务器应答
      客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。

    5. Web服务器发送应答头
      正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。

    6. Web服务器向浏览器发送数据
      Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。

    7. Web服务器关闭TCP连接
      一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive

    TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

    建立TCP连接->发送请求行->发送请求头->(到达服务器)发送状态行->发送响应头->发送响应数据->断TCP连接

    9、HTTP状态码及其作用

    HTTP状态码:当用户访问一个网页时,浏览器会向网页所在的服务器出请求,当浏览器接收并显示网页前,此网页所在服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求,HTTP状态码用于描述服务器对请求的处理结果。

    HTTP状态码分类:

    • 1**:信息,服务器收到请求,需要请求者继续执行操作
    • 2**:成功,操作被成功接收并处理
    • 3**:重定向,需要进一步的操作以完成请求
    • 4**:客户端错误,请求包含语法错误或者无法完成请求
    • 5**:服务器错误,服务器在处理请求的过程中发生了错误

    常见的HTTP状态码:

    • 200——OK,请求成功
    • 301——Moved Permanently,资源(网页等)被永久转移到其他URL
    • 302——Found,307——Temporary Redirect,临时重定向,请求的文档被临时移动到别处
    • 304——Not Modified,未修改,表示客户端缓存的版本是最近的
    • 401——Unauthorized,请求要求用户的身份认证
    • 403——Forbidden,禁止,服务器理解客户端请求,但是拒绝处理此请求,通常是权限设置所致
    • 404——Not Found,请求的资源(网页等)不存在
    • 500——Internal Server Error——内部服务器错误
    • 502——Bad Gateway,充当网关或代理的服务器从远端服务器接收到了一个无效的请求
    • 504——Gateway Time-out,充当网关或代理的服务器,未及时从远端服务器获取请求

    10、HTTP1.1版本新特性

    1. 默认持久连接节省通信量,只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连接,可以发送多次HTTP请求
    2. 管线化,客户端可以同时发出多个HTTP请求,而不用一个个等待响应
    3. 断点续传
      实际上就是利用HTTP消息头使用分块传输编码,将实体主体分块传输。

    11、用什么解析成IP?

    从网址到IP地址的转换,称为DNS解析,DNS解析是一个递归查询的过程,具体步骤如下(以www.google.com为例):

    1. 首先在本地域名服务器(最近的一台DNS服务器)中查询IP地址
    2. 如果没有找到,本地域名服务器会向根域名服务器发送一个请求
    3. 如果根域名服务器中也不存在该域名,但判定这个域名属于“com”域,则本地域名服务器会向com顶级域名服务器发送一个请求
    4. 如果com顶级域名服务器没有找到该域名,但判定这个域名属于“google.com”域,则本地域名服务器会向google.com域名服务器发送一个请求,以此类推
    5. 直到本地域名服务器得到域名对应的IP地址,并将其缓存到本地,供下次查询使用
    6. 综上,网址的解析过程为.->.com->google.com->www.google.com.。

    12、OSI网络七层协议

    从上到下分别是 应用层、表示层、会话层 、传输层、网络层 、数据链路层、物理层

    相关文章

      网友评论

          本文标题:http相关

          本文链接:https://www.haomeiwen.com/subject/kchkhltx.html