Http与DNS协议

  • Post author:
  • Post category:其他




一、Http协议

HTTP(hypertext transport protocol)超文本传输协议

该协议一共有0.9,1.0,1.1,2.0版本,其中1.1版本使用最广泛

客户端与服务端进行交互的信息为报文。客户端为请求报文,服务端为响应报文



1.1请求报文

在这里插入图片描述

请求报文最主要的是报文首部, 报文主体一个个键值对即key:value

在这里插入图片描述

可以看到上图中第一行为报文首部,方法+URI+http版本,后面的全是键值对

其中常见的请求报文方法有三种


Get

:从服务器中取资源。可以请求图片,视频等


HEAD

:和Get类似,但是从服务器请求的资源不会返回请求的实体数据,只会返回响应头


POST/PUT

:对应于GET,向服务器发送数据



1.2响应报文

响应报文的格式与请求报文大体相同,不同的是报文首部

在这里插入图片描述

抓包结果

可以看到首部是版本号+状态码



1.2.1 状态码

状态码分为5类,1xx~5xx,

1××:处于中间状态,还需后续操作,这个状态码不怎么看到


2××:成功收到报文并正确处理


“200 OK”

最常见的成功状态码,表示一切正常,客户端获得期许的处理结果。如果不是Head请求,那么在响应头中通常会有body数据。

“204 No Content”

不同之处在于它的响应头中没有body数据。

“206 Partial Content”

表示服务器传输的是一部分数据,因为数据太大


3××:重定向到其他资源位置


“301 Moved Permanently”

“永久重定向”,意思是本地请求的资源以及不存在,使用新的URI再次访问。

“302 Found”

“临时重定向”,临时则所请求的资源暂时还在,但是目前需要用另一个URI访问。

301 和 302 通过在字段Location中表明需要跳转的URI。两者最大的不同在临时与永久。例如改变了资源路径使用301永久重定向,而如果只是晚上临时移动数据,则使用302临时重定向

“304 Not Modified”

重定向已到缓存的文件


4××:请求报文有误,服务器无法处理

这个我们经常看到

“400 Bad Request”

通用错误码,表示请求报文有错误,属于比较笼统的错误码,不知道错在哪里

“403 Forbidden”

表示服务器禁止访问资源。原因可能涉及到敏感词汇、法律禁止等

“404 Not Found”

想要的资源在本地未找到从而无法提供给服务端

“405 Method Not Allowed”

服务器对某些方法进行限制

“406 Not Acceptable”

客户端资源无法满足客户端请求的条件,如语言

“408 Request Timeout”

请求超时,服务器等待了过长的时间;

“409 Conflict”:

多个请求发生了冲突,可以理解为多线程并发时的竞态;

413 Request Entity Too Large:

请求报文里的 body 过大;

414 Request-URI Too Long:请求行里的 URI 太大;

429 Too Many Requests:客户端发送了太多的请求,

通常是由于服务器的限连策略;

431 Request Header Fields Too Large:请求头某个字

段或总体太大;


5××:服务器错误,服务器对请求出的时候发生内部错误


“500 Internal Server Error”

和400 类似,属于一个通用的错误码

“502 Bad Gateway”

通常是服务器作为网关或者代理时返回的错误码,表示服务器自身工作正常,访问后端服务器时发生了错误,但具体的错误原因也是不知道的。

“503 Service Unavailable”

表示服务器当前很忙,暂时无法响应服务



1.3 cookie缓存机制

为了提升用户访问服务器的体验或者使http无状态的服务器有记忆功能,出现了cookie如下图所示

在这里插入图片描述

服务器会给每位用户产生一个cookie码,在用户第一次访问服务器后,cookie码已经产生,当用户在同一台电脑上再次访问时会在请求报文的body中加入cookie键值对,用户不需要再次输入登录信息即可得到信息



1.4 HTTPS

通常在支付或者重视安全的情况下需要使用HTTPS协议,因为HTTP是明文,但是HTTPS相比HTTP中间涉及很多复杂加密过程,因此运行时间很长,所以只在需要的地方使用,其实二者不同就是HTTPS=HTTP+TLS/SSL



二、DNS域名解析协议



2.1 DNS用途与工作原理

DNS(domain Name System)域名解析协议,DNS的作用是将主机名转换为IP地址,如www.someschool.edu,为了能够与该主机进行TCP连接,必须知道该主机的IP地址,DNS就是告诉浏览器服务器的IP。

DNS协议运行在UDP之上,使用53号端口。

那么,某个用户主机上的一个浏览器请求URL www.someschool.edu/index.html会发生什么,首先需要将HTTP请求报文发送给WEB服务器www.someschool.edu,但是需要IP:

(1)主机上运行着DNS客户端

(2)浏览器抽取出主机名www.someschool.edu,将主机名传给DNS客户端

(3)DNS客户收到回答报文,报文中含有主机名的IP地址

(4)浏览器得到IP,向该IP80端口HTTP服务器发起TCP连接



2.2 DNS服务器

为了单点故障,方便维护,DNS服务器使用分布式、层次式数据库,主要分为根服务器、顶级域服务器和权威服务器

在这里插入图片描述



版权声明:本文为cappuccinob原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。