HTTP协议顺带DNS,TCP/IP

这里写图片描述
这个是什么呢?这个就是HTTP协议客户端和服务器交互的整个过程。要知道建立HTTP连接可不是仅仅是HTTP工作。
是滴,它是在TCP/IP的基础上进行工作滴。但是还有一个更基础的,那就是DNS,你要想跟服务器沟通,当然要先找到它了。所以别小看这个HTTP交互,其实做了很多事情呢!

DNS协议
这个协议对于学过计算机网络的大家来说简直可以像知道1+1=2一样熟悉透了。简单介绍一下吧。

DNS是域名系统(Domain Name System)的缩写,当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与此名称相关的IP地址信息。

DNS采用C/S模型。运行在UDP之上,使用53端口。
因特网采用层次树状结构命名空间。任何一个连接在因特网上的主机或路由器,都有唯一一个的层次结构名字,即域名。
www.myblog.com 从左到右依次为:三级域名,二级域名,顶级域名。
这里写图片描述

有上面图可知,因特网的域名系统被设计成一个联机分布式的数据库系统,并采用C/S模型。IP地址解析有运行在域名服务器上的程序完成的,一个服务器所负责管辖的范围为”区“,一个区的所有结点必须是能够连通的,每个区有设置相应的权限域名服务器,保存该区中的所有主机的域名到IP地址的映射。分布式的DNS系统,主要有四种类型的域名服务器:
根域名服务器:只要无法解析的,首先求助于根域名服务器。因特网上有13个根域名服务器。用来管辖顶级域。
顶级域名服务器:负责管理该顶级域名服务器注册的所有二级域名。
授权域名服务器:每一个主机都需要在授权域名服务器处登记。In fact,许多域名服务器都充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转化为IP地址。
本地域名服务器:当一个主机发出DNS请求时,这个查询请求报文就会发给本地域名服务器。其实本地域名服务器就是我们在电脑上配置的DNS域名服务器的地址。

用户在使用网络服务时喜欢在浏览器的地址栏中输入使用主机名和域名组成的名称,如www.myblog.com,因为这样的名称更容易被用户记住。但是,计算机在网络上是使用IP地址来通信的。为了能够实现网络计算机之间通信,DNS服务器所提供的服务就是将用户所使用的计算机或服务名称映射为IP地址。
域名解析过程
这里写图片描述

这个图片标记的过程很详细了,我简短总结一下:
1)我们在浏览器输入网址后,首先浏览器会在自己缓存中查找,如果找到返回,否则2)
2)系统DNS查找,如果找到返回,否则3)
3)去hosts中查找,如果找到返回,否则4)
4)本地服务器查找,如果找到返回,否则5)
5)本地服务器像根域名服务器发出请求
6)根域名返回解析的结果
7)本地服务器去顶级域名服务器查找
8)顶级域名服务器返回解析结果
9)本地服务器去权限域名服务器查找
10)得到目标服务器的解析地址

注意图跟我说的步骤不太一样,我增加了前三个步骤。

TCP/IP
好了,现在我们已经找到服务器了,然后就是要跟它建立连接。也就是我们常用的TCP/IP协议,据我所知,有好多大厚本书专门讲解这个协议,因为做的最多的是移动端开发,所以只了解表层,我们熟悉的三次握手。而HTTP就是在三次握手完成后复用这个链接进行通信的。
这里写图片描述

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)

Sequence number(顺序号码) Acknowledge number(确认号码)

第一次握手:Client发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,Service由SYN=1知道,Client要求建立联机;

第二次握手:Service收到请求后要确认联机信息,向Client发送ack number=(Client的seq+1),syn=1,ack=1,随机产生seq=7654321的包

第三次握手:Client收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,Client会再发送ack number=(主机B的seq+1),ack=1,Service收到后确认seq值与ack=1则连接建立成功。

完成三次握手,Client与Service开始传送数据。

熟悉网络编程的同学,应该都用过socket,就是这个原理。

HTTP协议
这里写图片描述
我们再回过头看看这个过程,现在我们已经跟服务器建立了连接。
1)发送HTTP请求报文:GET
2)得到服务器返回结果发送给浏览器
3)如果发送文件有图片等这些资源文件,客户端再次发送这些请求
4)服务器返回资源结果
5)交互结束,TCP释放连接
6)浏览器渲染,呈现给用户

这里只是仅仅说了HTTP整个工作流程,还涉及超多知识,HTTP1.1的发展和改进,HTTPS在HTTP基础之上的加密保护,等等很多东西。大家一起学习进步呀!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值