一次http请求

一、DNS (Domain Name System)域名解析

概念
1、当我们在浏览器的地址栏中输入网站域名时,因为浏览器只能识别ip地址,所以首先会将域名解析为ip地址,这个过程叫做域名解析,而存放ip地址的地址库就是DNS服务器。
2、因为上网的人很多,且分布在世界各地,这就要求DNS服务器必须为,高可用、分布式。
3、DNS服务器因为上述两点要求被设计为树状结构。
最上层是根域名服务器:用.来表示,作用是来查询下一级顶级域名服务器,常见的顶级域名服务器有:.com .net .cn等,它的作用是查询权威域名服务器,而权威域名服务器就可以直接返回对应的ip地址,除了上面之外,还有一个缓存域名服务器,如果缓存域名服务器中有对应域名的ip地址,那么就不用在一级一级的查询了
一次域名解析流程
1、输入一个域名,如https://www.baidu.com/,这时发起一个域名解析。
2、首先电脑会查看hosts文件,这里面有些自定义配置,如果有对应的域名的ip地址,那么就直接使用。
3、如果上述没有,那么电脑会向本地的DNS服务器发起一次查询请求,(本地服务器由运营商提供,如:电信,联通,且部署在它们对应的机房中,不是你自己的电脑中),会在缓存中查看有没有https://www.baidu.com/对应的ip。
4、如果上述没有,则会向跟域名服务器发起查询请求,这个根会返回它的顶级域名服务器,这里就是.com,然后在向顶级域名服务器发起查询请求,这个顶会返回它的权威域名服务器,这里就是baidu.com,然后再去访问权威域名服务器,这个会把它的ip地址返回。
5、所以的请求都是由本地dns服务器,发起的。
全局负载均衡器实现就近访问
假设我有一个应用,这个应用有多个机房,分别分布在不同地方,且每个机房还对应这不同的运营商,这时我们可以通过全局负载均衡器,使得用户访问离他最近的,且是相同运营商的哪个机房,解决跨地域和跨运营商的问题

二、Tcp协议的3次握手和4次挥手

数据之间传输需要一个连接,我们采用3次握手开启一个连接,4次挥手关闭一个连接
3次握手
1、第一次握手,客户端(A)向服务器端(B)发起,传递两个信息,一、请求建立连接:SYN=1,二、发出一个序列号:seq=n,n为随机数。作用:第一次握手让服务器主机B知道客户端主机A可以发出消息。
2、第二次握手,B向A发起,传递三个信息,一、同意建立连接:SYN=1,二、确认收到消息:ack=seq+1(seq是第一次传递过来的),三、发出自己的序列号seq = x,x为随机数,作用:第二次握手让客户端主机A知道了服务器主机B能接收到信息,也能发出信息。
3、第三次握手,A向B发起,传递三个信息,一是表示现在开始发送(SYN = 0),二是成功收到了服务器主机B的信息(ack=刚才的seq + 1),三是这张纸条的序号(seq=最开始发出的序号 + 1)作用:第三次握手让B知道了A能接收到。
四次挥手
1.A与B交谈结束之后,A要结束此次会话,对B说:我要关闭连接了(seq=u,FIN=1)。(第一次挥手,A进入FIN-WAIT-1)
2.B收到A的消息后说:确认,你要关闭连接了。(seq=v,ack=u+1,ACK=1)(第二次挥手,B进入CLOSE-WAIT)
3.A收到B的确认后,等了一段时间,因为B可能还有话要对他说。(此时A进入FIN-WAIT-2)
4.B说完了他要说的话(只是可能还有话说)之后,对A说,我要关闭连接了。(seq=w, ack=u+1,FIN=1,ACK=1)(第三次挥手)
5.A收到B要结束连接的消息后说:已收到你要关闭连接的消息。(seq=u+1,ack=w+1,ACK=1)(第四次挥手,然后A进入CLOSED)
6.B收到A的确认后,也进入CLOSED。

三、请求报文

当我们使用Tcp协议建立起连接之后,浏览器就会向服务端发送请求报文。
请求报文组成
1、请求行:由请求方法(get、post),请求对应的URL地址,协议名称及版本号,三部分组成
2、请求头:有若干个属性,格式一般为属性名:属性值,主要就是客户端的信息等
3、请求体:报文主体,一般是url后面的?id=xxx&name=xxx,里面有很多的参数数据
在这里插入图片描述
图片来自:https://www.cnblogs.com/lmh001/p/9928517.html

四、响应报文

当服务端收到请求后,就会发送一个响应报文给浏览器。
响应报文组成
1、响应行:由协议版本、状态码及其描述组成
2、响应头:描述服务器的基本信息,以及数据的描述,浏览器通过这些信息,知道如何处理等一会儿服务器回送的数据。
3、响应体:响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,也就是浏览器需要解析的内容。
状态码
一些常见的状态码
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
状态码类型
在这里插入图片描述

五、测试不同场景下的状态

1、当url写错时回报错404
2、当请求方法写错时也会报错404,有时也会报错500
3、当Content-Type写错时,回报错422
4、当权限接口没有携带token回报错401
5、当请求参数写错时回报错404

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值