三叶草 发表于 2021-12-10 18:02:26

#yyds干货盘点#前端到后端的访问过程

当我们在浏览器输入一个网址访问到一个网页,看似简单的过程,究竟在程序中如何运行?
操作:在浏览器输入网址(如:www.baidu.com)
过程:


[*]浏览器先会进行域名获取(www.baidu.com),获取后通过DNS解析得到百度的IP地址(202.108.22.5),通过这个IP地址找到客户端到服务器的路径。
[*]浏览器与服务器建立TCP链接(默认端口80)通过TCP进行封装数据包,输入到网络层。客户端的网络层不需要关心应用层和传输层的东西,主要做的是通过查找确定如何到达服务器。
[*]浏览器发送HTTP请求向服务器获取百度首页。
[*]服务器通过HTTP响应把首页文件发送给浏览器。
[*]TCP链接释放
[*]浏览器解析首页文件,将Web页显示给用户。


思考的问题
过程1:
什么是DNS?--->域名解析服务器
   怎么解析?(DNS解析过程)


[*]   浏览器检查自身缓存中有没有解析过这个域名

      有,解析结束返回IP
      没有,执行下面操作:


[*] 浏览器检查系统中有没有对应的已解析过的结果。

   而操作系统也有对应解析过程:
       在windows系统中的hosts文件进行设置,如果你在此指定了一个域名对应的ip地址,浏览器就会首先使用这个ip。(设置本地自己的博客方法)。
       因为可以通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,就造成所谓的域名劫持.所以在windows7中将hosts文件设置成了管理员权限,防止被恶意篡改。(以前的黑-客操作)


[*]如果还没有找到,才会真正的请求本地域名服务器(LDNS)来解析域名。

      这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。


[*]如果LDNS仍然没有找到,就会找Root Server 域名服务器请求解析。

过程2:
    TCP是什么?
   传输控制层协议,面向字节流的通讯协议。
    TCP的三次握手


[*]客户向服务器发送请求报文(客户端同步已发送状态)
[*]服务器收到请求报文,如果同意连接,向A发送确认报文(服务器同步收到)
[*]客户端收到服务器发送确认报文后(客户端已建立连接)服务器收客户端确定报文后(服务器已建立连接)。

    TCP/UDP区别
                  TCP                           UDP
可靠性       可靠                        不可靠
连接线       面向链接                   面向无连接
报文          面向字节流                面向无连接
效率          低                           高
传输速度   慢                           快
应用场景   效率要求低               对效率高
               精准度要求高            准确度低的场景
               有连接的场景            远程文件服务器
               电子邮件,HTTP
TCP的黏包问题
问题的产生


[*]TCP基于字节流,只维护送出去多少,客户端确定了多少,并没有维护信息与信息之间的边界,因而极有可能导致粘包问题。

[*] TCP所发送的的字节流中存在一个MSS(最大报文端长度),如果所发送的消息的字节过长,那么会对所发送的消息进行分割,那么也会直接导致粘包。
[*]tcp的延迟发送问题

      问题的解决
      应用层要维持消息与消息的边界(因为传输层,链路层,网络层都没有)


[*]在包的尾部加转义字符:\r\n(换行),但消息里面有就会出现问题
[*]采用包头加包体长度的方法,一般情况下包头是定长的,假如包头是4个字节,可以先接受包头的4个字节,从而计算出包体的长度,然后继续进行接受。
[*]当然,我们可以使用复杂的应用层协议。

过程3:
    请求方式(8种,GET请求,POST请求)
    GET使用给定的URI从给定服务器中检索信息(返回内容)
    POST方法用于将数据发送到服务器以创建或更新资源,它要求服务器确认请求中包含的内容作为由URI区分的Web资源的另一个下属。(更新内容)
过程4:
    响应方式(8种,与请求方式对应)
ps:状态码:200(请求成功)302(重定向访问),404(资源不存在),500(服务器报错),503(服务器暂时无法提供服务)




https://blog.51cto.com/u_14765571/4781214
页: [1]
查看完整版本: #yyds干货盘点#前端到后端的访问过程