Http与DNS协议

一、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服务器使用分布式、层次式数据库,主要分为根服务器、顶级域服务器和权威服务器
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值