网络相关面经

阅读: 评论:0

网络相关面经

网络相关面经

http 的报文主要组成

  1. 请求报文

    1. 请求行

      请求行由 请求方法、请求url、http 版本

      请求方法 get post head put delete options trace connect

      http 版本

    2. 请求头

      请求头部由关键字/值对组成,每行一对

      1. User-Agent : 产生请求的浏览器类型

      2. Accept : 客户端希望接受的数据类型,比如 Accept:text/xml(application/json)表示希望接受到的是xml(json)类型

      3. Content-Type:发送端发送的实体数据的数据类型。比如,Content-Type:text/html(application/json)表示发送的是html类型。

      4. Host : 请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

    3. 空行

      请求头之后是一个空行,通知服务器以下不再有请求头

    4. 请求体

      GET没有请求数据,POST有。

        与请求数据相关的最常使用的请求头是 Content-Type 和 Content-Length 。

  2. 响应报文

    由四部分组成 状态行、消息报头、空行、响应体

    1. 状态行

      状态行也由三部分组成:服务器HTTP协议版本,响应状态码,状态码的文本描述

        格式:HTTP-Version Status-Code Reason-Phrase CRLF

        比如:HTTP/1.1 200 OK

      1. 状态码

        1. 1xx:指示信息,表示请求已接收,继续处理

        2. 2xx:成功,表示请求已被成功接受,处理。

          • 200 OK:客户端请求成功

          • 204 No Content:无内容。服务器成功处理,但未返回内容。一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况。不会刷新页面。

          • 206 Partial Content:服务器已经完成了部分GET请求(客户端进行了范围请求)。响应报文中包含Content-Range指定范围的实体内容

        3. 3xx:重定向

          • 301 Moved Permanently:永久重定向,表示请求的资源已经永久的搬到了其他位置。

          • 302 Found:临时重定向,表示请求的资源临时搬到了其他位置

          • 303 See Other:临时重定向,应使用GET定向获取请求资源。303功能与302一样,区别只是303明确客户端应该使用GET访问

          • 307 Temporary Redirect:临时重定向,和302有着相同含义。POST不会变成GET

          • 304 Not Modified:表示客户端发送附带条件的请求(GET方法请求报文中的IF…)时,条件不满足。返回304时,不包含任何响应主体。虽然304被划分在3XX,但和重定向一毛钱关系都没有 一个304的使用场景: 缓存服务器向服务器请求某一个资源的时候,服务器返回的响应报文具有这样的字段:Last-Modified:Wed,7 Sep 2011 09:23:24,缓存器会保存这个资源的同时,保存它的最后修改时间。下次用户向缓存器请求这个资源的时候,缓存器需要确定这个资源是新的,那么它会向原始服务器发送一个HTTP请求(GET方法),并在请求头部中包含了一个字段:If-Modified-Since:Wed,7 Sep 2011 09:23:24,这个值就是上次服务器发送的响应报文中的最后修改时间。

            假设这个资源没有被修改,那么服务器返回一个响应报文:

        HTTP/1.1 304 Not Modified   Date:Sat, 15 Oct 2011 15:39:29   (空行)                                         (空响应体)

        用304告诉缓存器资源没有被修改,并且响应体是空的,不会浪费带宽。

        1. 4xx:客户端错误

          • 400 Bad Request:客户端请求有语法错误,服务器无法理解。

          • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。

          • 403 Forbidden:服务器收到请求,但是拒绝提供服务

          • 404 Not Found:请求资源不存在。比如,输入了错误的url

          • 415 Unsupported media type:不支持的媒体类型

        2. 5xx:服务器端错误,服务器未能实现合法的请求。

          • 500 Internal Server Error:服务器发生不可预期的错误。

          • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,

请求方法

  1. get

    传递参数长度受限制,因为传递的参数是直接表示在地址栏中,而特定浏览器和服务器对url的长度是有限制的。因此,GET不适合用来传递私密数据,也不适合拿来传递大量数据。一般的HTTP请求大多都是GET。

  2. post

    POST把传递的数据封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,对数据量没有限制,也不会显示在URL中。

  3. head

    HEAD跟GET相似,不过服务端接收到HEAD请求时只返回响应头,不发送响应内容。所以,如果只需要查看某个页面的状态时,用HEAD更高效,因为省去了传输页面内容的时间。

  4. put

    把一个资源存放在指定的位置上。

      本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。

  5. delete

    删除某一个资源

  6. options

    用于获取当前URL所支持的方法。若请求成功,会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。

  7. trace

    回显服务器收到的请求,主要用于测试或诊断。

  8. connect

    CONNECT方法是HTTP/1.1协议预留的,能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接与非加密的HTTP代理服务器的通信。

http 版本

  • HTTP/0.9

    HTTP协议的最初版本,功能简陋,仅支持请求方式GET,并且仅能请求访问HTML格式的资源

  • HTTP/1.0

    1. tcp链接不可复用,且一个tcp 只能发送一次请求,当服务器响应后就会关闭这个链接

    2. 支持:GET、POST、HEAD三种HTTP请求方法,

    3. 根据Content-Type可以支持多种数据格式,例如text/html、image/jpeg等 (content-type 决定浏览器将以什么类型什么编码来读取这个文件)

    4. HTTP请求和回应的格式也变了。除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。

  • HTTP/1.1

    1. 实现长连接 即tcp 连接默认不关闭,允许被多个请求复用,不用申明connection :keep-alive

    2. 提供管道机制,即一个tcp连接中允许多个请求同时发送,增加并发性,但是服务器还是根据得到请求的先后顺序去进行响应

    3. 请求方式增加put 、delete、options、trace、connect

    4. 请求头新增host字段,用来处理服务器存在多

本文发布于:2024-01-29 17:23:21,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170652020617026.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:网络
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23