当前位置: 首页 > 科技观察

面试被问到Http协议?这篇文章足以涵盖所有相关问题!

时间:2023-03-22 10:14:29 科技观察

HTTP超文本传输??协议http使用面向连接的TCP作为传输层协议。http本身是无连接的。请求消息CRLF是GET的回车换行的请求消息方法是POST的请求消息方法OPTIONS:该方法允许服务器返回该资源支持的所有HTTP请求方法。用'*'代替资源名,向web服务器发送OPTIONS请求,测试服务器功能是否正常。HEAD:与GET方法一样,向服务器发送请求指定资源。只是服务器不会返回资源的文本部分。它的优点是,通过使用这种方法,无需传输所有内容就可以获得“关于资源的信息”(元信息或元数据)。GET:向指定资源发出“显示”请求。使用GET方法应该只用于读取数据,而不应该用于“副作用”操作,例如在Web应用程序中。原因之一是GET可能会被网络蜘蛛等随机访问。参见安全方法POST:向指定资源提交数据,请求服务器处理(如提交表单或上传文件)。数据包含在请求正文中。此请求可能会创建新资源或修改现有资源,或两者兼而有之。PUT:将其最新内容上传到指定的资源位置。DELETE:请求服务器删除Request-URI标识的资源。TRACE:回显服务器收到的请求,主要用于测试或诊断。CONNECT:在HTTP/1.1协议中保留,用于可以更改与管道的连接的代理服务器。通常用于连接到SSL加密的服务器(通过非加密的HTTP代理服务器)。HTTP请求方式虽然有8种,但在实际应用中比较常用的是get和post,其他请求方式也可以通过这两种方式间接实现。URLURL的一般组成为://:/protocolhttp——超文本传输??协议资源https——安全套接层传输的超文本传输??协议ftp——文件传输协议mailto——emailaddressldap-轻型目录访问协议searchfile-本地计算机或互联网上的共享文件news-Usenet新闻组gopher-Gopher协议telnet-Telnet协议host-指互联网端口上的域名,有时可以省略路径。一个绝对URL(absoluteURL)显示的是文件的完整路径,这意味着绝对URL本身的位置与被引用的实际文件的位置无关。相对URL(相对URL)以包含URL本身的文件夹的位置作为参考点来描述目标文件夹的位置。如果路径中省略了URL,则它指的是Internet上的主页。第一个URL省略路径,代表百度已知的主页。第二个是1742817.html文件的相对路径,指出他的位置。他们都使用https协议。省略了端口号。之前使用的版本号是HTTP/1.0,现在升级到HTTP/1.1。两者有什么区别?请求一个网络文档所需的时间是2*RTT+文档传输时间。因为与服务器建立TCP连接需要3次握手,所以在第3次握手的时候,发送请求相关的数据被捎带过来,然后HTTP服务器响应总共4次交互,也就是2*RTT时间。再加上一些其他的开销,万维网服务器会服务大量的客户端,所以每次浏览都需要建立一个连接,HTTP/1.0中这种非持久连接(短链接)服务器负担非常重.HTTP/1.1使用了持久连接(长连接),服务器在发送响应后仍然保持这个连接。连续链接也分为流水线模式和非流水线模式。非管道方式规定客户端只有在发送浏览请求并得到响应后才能发送下一个。在管道模式下,客户端无需等待响应即可发送下一个请求,服务端无需等待即可在收到请求后持续响应,节省了时间。HTTP1.1的持久连接也需要增加一个新的请求头来帮助实现。例如,当Connection请求头的值为Keep-Alive时,客户端返回本次请求结果后通知服务器保持连接;当Connection请求头的值为close时,客户端返回本次请求结果后通知服务器关闭连接。HTTP1.1还提供了与身份认证、状态管理、缓存缓存等机制相关的请求头和响应头。HTTP头字段由上可知,HTTP有四种头字段:通用头字段、请求头字段、响应头字段和实体头字段。Commonheaderfield:请求报文和响应报文都使用的报头。请求头域:客户端向服务器端发送请求报文时使用的头域。响应头字段:服务器向客户端返回响应消息时使用的头。实体头字段:用于请求消息和响应消息的实体部分的头。HTTP/1.1头域CommonheaderfieldHeader字段名称描述CacheControl缓存行为ConnectionHop-by-hop头,连接管理Date创建消息的日期和时间PragmaMessageinstructionTrailer消息末尾的头列表Transfer-Encoding指定消息体Upgrade的传输编码方式升级到其他协议ViaProxyserver相关信息Warning错误通知请求标头字段标头字段名称描述接受用户代理处理的媒体类型接受字符集首选字符集接受编码首选内容编码接受语言首选语言(自然语言)授权Web身份验证信息期望期望服务器特定行为来自用户的电子邮件地址主机请求资源的服务器if-Match比较实体标签(ETag)if-Modified-Since比较资源更新时间if-None-Match比较实体标签(与if-Match相反)if-Range在资源没有更新时发送实体字节范围请求if-Unmodified-Since比较资源的更新时间(与if-Modified-Since相反)Max-Forwards***传输逐跳数Proxy-Authorization代理服务器需要客户端认证信息RangebyterangerequestforentityReferer请求中URI的原始获取方式TE传输编码的优先级User-AgentHTTP客户端程序的信息响应头域头域名称描述Accept-Ranges是否接受字节范围RequestAgeEstimatedresourcecreationelapsedtimeETag资源匹配信息Location将客户端重定向到指定的URIProxy-Authenticate代理服务器给客户端的认证信息Reter-After重新发起请求的时机要求ServerHTTP服务器安装信息VaryProxy服务器缓存的管理信息WWW-Authenticate服务器对客户端的认证信息EntityheaderfieldHeaderfieldnamedescriptionAllowHTTPmethodssupportedbytheresourceContent-Encoding适用于实体主体编码方式Content-Language实体主体的自然语言Content-Length实体主体的大小(单位:字节)Content-Location替换对应资源的URIContent-MD5实体主体的消息摘要Content-Range实体主体的定位范围Content-Type实体主体的媒体类型Expires实体主体过期的日期和时间Last-Modified资源的***修改日期和时间http操作过程http是一个面向物的应用层协议。每个万维网站点都有一个服务器进程,它不断地监视TCP端口80,以便发现浏览器向它发送连接请求。建立连接后,浏览器会向万维网服务器发送特定消息。页面查看请求。浏览器和服务器必须遵循规定的格式,遵循一定的规则。这些规则是超文本传输??协议http。使用HTTP/1.0描述用户发送浏览请求后的事件(在浏览器地址中输入网址或用鼠标点击可选事件,浏览器会自动找到要连接的页面)。1.浏览器解析URL。2.请求DNS解析域名的IP地址。3.获取IP地址。3、浏览器服务器建立TCP连接(IP地址+端口号)。4.发出获取文件的命令,例如上面URL中的GET/question/1742817.html。5、服务器响应并发送1742817.html给浏览器。6.释放TCP连接。7.浏览器显示html中的文本。Responsemessagestatuscodeandphrase1xx:指示信息——表示请求已经收到,继续处理。2xx:成功——表示请求已被成功接收、理解、接受。3xx:重定向——需要进一步的操作来完成请求。4xx:客户端错误——请求有语法错误或请求无法完成。5xx:服务器端错误——服务器未能完成合法请求。下面介绍常见的状态码和状态说明。200OK:客户端请求成功。400BadRequest:客户端请求有语法错误,服务器无法理解。401Unauthorized:请求未经授权。此状态代码必须与WWW-Authenticate标头字段一起使用。403Forbidden:服务器收到请求但拒绝提供服务。404NotFound:请求的资源不存在,例如:输入了错误的URL。500InternalServerError:服务器发生意外错误。503ServerUnavailable:服务器目前无法处理客户端的请求,过一段时间可能会恢复正常。例如:HTTP/1.1200OK(CRLF)。GET方法和POST方法的区别参考链接1.GET提交,请求的数据会附加到URL中(即数据放在HTTP协议头中),URL和传输数据用?隔开,多个参数用&连接;例如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转成+,如果是中文/其他字符,直接用BASE64加密字符串,如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX是符号的十六进制ASCII表示。POST提交:将提交的数据放在HTTP包的包体中。上例中的红色字体表示实际传输的数据。所以GET提交的数据会显示在地址栏,而POST提交时地址栏不会改变。2、传输数据的大小:首先,HTTP协议对传输数据的大小没有限制,HTTP协议规范也没有限制URL的长度。实际开发中存在的限制主要有:GET:特定的浏览器和服务器对URL长度有限制,比如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,具体取决于操作系统的支持。因此,在提交GET时,传输的数据会受到URL长度的限制。POST:由于不通过URL传递值,理论上数据是无限的。但是每个WEB服务器其实都会对post提交的数据大小进行限制,Apache和IIS6都有自己的配置。3、安全性:POST的安全性高于GET。注意:这里所说的安全与上面GET中所说的“安全”不是同一个概念。上面的“安全”是指不修改数据,但这里安全的意思才是真正意义上的安全,例如:通过GET方式提交数据,用户名和密码会以明文形式出现在URL上,因为(1)登录页面可能被浏览器缓存拦截,(2)别人查看浏览器的历史记录,那么别人就可以得到你的帐号和密码。