HTTP的基础知识和DNS的解析过程

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 我们都知道现在大部分的B/S 系统。其核心的通讯协议还是 TCP/IP 协议,应用层的话就是HTTP 协议,我们最常的打交到的就是HTTP协议了。所以了解HTTP协议的相关知识显得尤为重要。

概述

我们都知道现在大部分的B/S 系统。其核心的通讯协议还是 TCP/IP 协议,应用层的话就是HTTP 协议,我们最常的打交到的就是HTTP协议了。所以了解HTTP协议的相关知识显得尤为重要。

HTTP请求报文

一个HTTP请求报文由请求行(request line)+ 请求头部(head)+请求体 3个部分组成。格式如下:

<request-line>
<headers>
<request-body>

其中请求头部由 关键字/值对组成,每行一对,关键字和值用英文冒号“:” 分隔。

常用的请求头有:

1User-Agent :产生请求的浏览器类型 例如:User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36

2.Accept:客户端可识别的内容类型列表。例如:Accept: application/json, text/javascript, /; q=0.01

3.Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。例如:www.baidu.com

4.Cookie: 客户端的Cookie就是通过这个报文头属性传给服务端,通过sessionId 可以知道同一个会话

Cache-Control :对缓存进行控制 例如: Cache-Control :no-cache

5.Referer : 用来表示从哪儿链接到目前的网页,采用的格式是URL。换句话说,借着HTTP来源地址,目前的网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求。

HTTP 响应报文

与请求报文类似,HTTP 响应报文也由三个部分组成,分别是:状态行、消息报头、响应正文。格式如下:

<status-line>
<headers>
<response-body>

HTTP 响应头

响应头部也是由 关键字/值对组成,每行一对,关键字和值用英文冒号“:” 分隔。常用的响应头有:

1.Server : 使用服务器名称,如Server:Apache/1.3.6(Unix)

2,Content-Type: 用于指明发送给接收者的实体正文的媒体类型,如Context-Type: application/json;charset=UTF-8

3.Content-Encoding: 与请求报文Accept-Encoding对应,告诉浏览器服务端采用的什么压缩编码

4.Content-Language : 描述了资源所用的自然语言,与Apache-Language 对应

5.Content-Length: 指明实体正文的长度,用以字节方式存储的十进制数字来表示

6.Keep-Alive : 保持连接的时间:如 Keep-Alive: timeout=5,max=20

说完了,响应头,我们还需要重点关注下常见的状态码。HTTP状态码有很多,我们经常会碰到的状态码有如下几个:


HTTP状态码

1.200 表示客户端请求成功

2.302 表示临时跳转,跳转的地址通过Location指定

3.400 表示客户端请求有语法错误,不能被服务器识别

4.403 表示服务器收到请求,但是拒绝提供服务

5.404 表示请求的资源不存在

6.500 表示服务器发生不可预期的错误

说完了HTTP请求报文和响应报文的相关知识,接下来我们来看看,HTTP的请求方法


HTTP的请求方法

HTTP 1.1 中请求方法有GET,POST,PUT,DELETE,HEAD。其中最常用到的就是GET方法和POST 方法了。


GET请求

1.GET请求,请求数据会直接附在URL之后(就是把数据防止在HTTP协议头

<request-line>中),以?分割URL和传输数据,多个参数用&连接;例如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表ASCII。


虽然HHTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度

进行限制,而在实际开发中存在的限制主要有:

GET:特定浏览器和服务器对URL长度有限制,例如:IE对URL长度的限制是2083字节(2K+53)(对应231个中文字符),chrome 的长度限制超过8182个字符(对应909个中文字符)返回414的错误。

2. GET 请求,请求数据直接以明文出现在URL中,对于一下私密数据(账号和密码),非常不安全。


POST 请求

1.POST 请求是把提交的数据放置在HTTP请求报文的请求体<request-body>中,理论上传输数据不受限。POST请求,地址栏不会改变。

2. POST 请求,请求数据是放在<request-body>中,相对GET请求安全一些。


DNS 解析过程

DNS的作用

DNS就是将域名解析成IP地址


DNS解析过程

24dddc1e259e08a0725be5a4fc524865_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ1MzQ4MDg=,size_16,color_FFFFFF,t_70.png

如上图所示:DNS的解析过程主要有十步:

1.浏览器检查缓存中有没有这个域名对应的解析过的IP地址,如果有的话解析过程就结束,缓存时间由TTL属性来设置

2.如果用户浏览器缓存没有,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果,其实操作系统中也会有一个域名解析的过程。在Windows中可以通过 C:\Windows\System32\drivers\etc\hosts文件来设置。在Linux中这个配置文件是/etc/hosts

3.在用户电脑中的网络配置中都会有“DNS服务器地址”用于配置域名服务器。称为LDNS

在Windows 中通过 ipconfig 查询这个地址,在Linux中通过 cat /etc/resolve.conf 查看

4.如果LDNS 仍然没有命中,就直接到Root Server域名服务器请求解析。

5.根域名服务器返回给本地域名服务器一个所查询域的主域名服务器(gTLD Server)地址,

gTLD是国际顶级域名服务器,如:.com、.cn、.org等

6.本地域名服务器(Local DNS Server)再向上一步gTLD服务器发送请求

7.接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器地址。这个

Name Server通常就是你注册的域名服务器。

8.Name Server域名服务器会查询存储的域名和IP的映射关系表。在正常情况下都根据域名得到目标IP记录,连同一个TTL值返回给DNS Server 域名服务器

9.返回该域名对应的IP和TTL值,Local DNS Server会缓存这个域名和IP的对应关系,缓存的时间由TTL值控制

10.把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束。

总结

本文简单的介绍了HTTP的相关基础知识,包括请求报文,响应报文,以及其请求头和响应头常用的属性。然后,重点介绍了GET请求和POST请求。最后介绍了DNS的解析过程。

相关文章
|
3月前
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
130 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
|
15天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
56 3
|
28天前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
2月前
|
监控 网络协议 安全
DNS服务器故障不容小觑,从应急视角谈DNS架构
DNS服务器故障不容小觑,从应急视角谈DNS架构
58 4
|
2月前
|
域名解析 网络协议
非阿里云注册域名如何在云解析DNS设置解析?
非阿里云注册域名如何在云解析DNS设置解析?
|
2月前
|
域名解析 存储 缓存
域名解析 DNS:连接数字世界的关键枢纽
在数字世界中,DNS(域名解析系统)如同一位至关重要的引路人,将我们输入的域名与对应的IP地址相连,使我们可以轻松访问各种网站和服务。它通过多级服务器查询,将易于记忆的域名转换为复杂的IP地址,极大提升了互联网的易用性和普及度。尽管面临网络延迟和域名数量激增等挑战,通过分布式系统和缓存技术等创新方案,DNS 系统将持续发展,为用户提供更安全、高效的网络体验。
55 2
|
2月前
|
弹性计算 负载均衡 网络协议
内部名称解析设置阿里云私有 DNS 区域,针对于阿里云国际版经验教程
内部名称解析设置阿里云私有 DNS 区域,针对于阿里云国际版经验教程
|
2月前
|
域名解析 缓存 网络协议
【网络】DNS,域名解析系统
【网络】DNS,域名解析系统
98 1
|
2月前
|
缓存 网络协议 前端开发
dns-prefetch DNS 预解析
dns-prefetch DNS 预解析

相关产品

  • 云解析DNS