DNS/TCP/UDP/HTTP/HTTPS/三次握手

DNS解析

在这里插入图片描述

img

我们分析一下解析流程:

  1. 客户端向本地DNS服务器(递归解析服务器) 发出解析tool.chinaz.com域名的请求
  2. 本地dns服务器查看缓存,是否有缓存过tool.chinaz.com域名,如果有直接返回给客户端;如果没有执行下一步
  3. 本地dns服务器向根域名服务器发送请求,查询com顶级域的nameserver 地址
  4. 拿到com域名的IP后,再向com nameserver发送请求,获取chinaz域名的nameserver地址
  5. 继续请求chinaz的nameserver, 获取tool域名的地址,最终得到了tool.chinaz.com的IP,本地dns服务器把这个结果缓存起来,以供下次查询快速返回
  6. 本地dns服务器把把结果返回给客户端

递归解析服务器 vs 权威域名服务器

我们在解析流程中发现两类DNS服务器,客户端直接访问的是 递归解析服务器, 它在整个解析过程中也最忙。 它的查询步骤是递归的,从根域名服务器开始,一直询问到目标域名。

递归解析服务器通过请求一级一级的权威域名服务器,获得下一目标的地址,直到找到目标域名的 权威域名服务器

简单来说: 递归解析服务器 是负责解析域名的, 权威域名服务器是负责存储域名记录的

递归解析服务器一般由ISP提供,除此之外也有一些比较出名的公共递归解析服务器, 如谷歌的8.8.8.8,联通的114,BAT也都有推出公共递归解析服务器,但性能最好的应该还是你的ISP提供的,只是可能会有 DNS劫持 的问题

缓存

由于整个解析过程非常复杂,所以DNS 通过缓存技术来实现服务的鲁棒性。 当递归nameserver解析过tool.chianaz.com 域名后,再次收到tool.chinaz.com查询时,它不会再走一遍递归解析流程,而是把上一次解析结果的缓存直接返回。 并且它是分级缓存的,也就是说,当下次收到的是www.chinaz.com的查询时, 由于这台递归解析服务器已经知道chinaz.com的权威nameserver, 所以它只需要再向chinaz.com nameserver 发送一个查询www的请求就可以了。

根域名服务器
递归解析服务器是怎么知道 根域名服务器的地址的呢? 根域名服务器的地址是固定的,目前全球有13个根域名解析服务器,这13条记录持久化在递归解析服务器中:

img

为什么只有13个根域名服务器呢,不是应该越多越好来做负载均衡吗? 之前说过DNS 协议使用了UDP查询, 由于UDP查询中能保证性能的最大长度是512字节,要让所有根域名服务器数据能包含在512字节的UDP包中, 根服务器只能限制在13个, 而且每个服务器要使用字母表中单字母名。

TCP(打电话)

  • TCP:传输控制协议(Transmission Control Protocol)
  • 特点:面向连接(收发数据前、必须建立可靠的连接)
  • 建立连接的基础:三次握手
  • 应用场景:数据必须准确无误的收发 、 HTTP请求 、 FTP文件传输 、 邮件发送
  • 缺点:速度慢、效率低、占用资源、容易被攻击(三次握手 -> DOS、DDOS攻击)
  • 优点:稳定重传机制、拥塞控制机制、断开连接
  • TCP/IP 协议组:提供点对点的连接机制,制定了数据封装、定制、传输、路由、数据接收的标准

UDP(喇叭喊人)

  • UDP:User Data Protocol 用户数据报协议
  • 特点:面向无连接(不可靠的协议,无状态传输机制)
  • 无连接信息发送机制
  • 应用场景:无需确保通讯质量且要求速度快、无需确保信息完整
  • 消息收发、语音通话、直播(QQ)
  • 优点:安全、快速、漏洞少(UDP flood攻击)
  • 不可靠、不稳定、容易丢包
  • 总结:只要目的源地址、端口号、地址确定,则可以直接发送请求报文,但不能保证一定收到或收到完整的数据

HTTP 与 HTTPS

  • HTTP:超文本传输协议

  • 客户端和服务器端请求和应答的标准,用于从WEB服务器传输超文本到本地浏览器的传输协议

  • HTTP请求:按照协议规则先向WEB服务器发送的将超文本传输到本地浏览器的请求

  • HTTPS:超文本传输安全协议

  • 定义:HTTP的安全版(安全基础是SSL/TSL)

  • SSL:安全套接层

  • TSL:传输层安全

  • 为网络通信提供安全数据完整性的一种安全协议,对网络连接进行加密

HTTP与HTTPS

  • 区别:
  1. HTTP是不安全的(监听和中间人攻击等手段,获取网站账户信息和敏感信息) HTTPS可防止被攻击
  2. HTTP协议的传输内容都是明文,直接在TCP连接上运行,客户端和服务器端都无法验证对方身份
  3. HTTPS协议的传输内容被SSL/TLS加密,且运行在SSL、TLS上,SSL/TLS运行在TCP连接上,所以数据传输是安全的

默认端口号:http协议下(80)、http协议下(443)、FTP协议下(20、21)

建立TCP(Transform Control Protocol)连接的前奏

  • 标志位:数据包

  • SYN:同步序列编号

  • ACK:(Acknowledgement)确认字符

    状态:

  • LISTEN:侦听TCP端口的连接请求(我等着你发送连接请求呢)

  • SYN-SENT:在发送连接请求后等待匹配的连接请求(我发送了连接请求,我等你回复哈)

  • SYN-RECEIVED:在收到和发送一个连接请求后等待对连接请求的确认(我收到你的连接请求了,我等你回复哈)

  • ESTABLISHED:代表一个打开的连接,诗句可以传送给用户(建立连接了哈,我跟你说一下)

在这里插入图片描述

  • 第一次握手:客户端向服务器发送SYN标志位( 序号是 J ),并进入SYN_SEND状态(等待服务器确认状态)
  • 第二次握手:服务器收到来自客户端的SYN J,服务器端会确认该数据包已收到并发送ACK标志位( 序号是J+1) 和 SYN标志位(序号是K),服务器进入SYN_REVD(请求接受并等待客户端确认状态)
    (等待服务器确认状态)
  • 第二次握手:服务器收到来自客户端的SYN J,服务器端会确认该数据包已收到并发送ACK标志位( 序号是J+1) 和 SYN标志位(序号是K),服务器进入SYN_REVD(请求接受并等待客户端确认状态)
  • 第三次握手:客户端进入连接建立状态后,向服务器发送ACK标志位(序号是K+1)确认客户端已收到建立连接确认,服务器收到ACK标志位后,服务器进入连接已建立状态。

猜你喜欢

转载自blog.csdn.net/qq_27575925/article/details/111769526