自己做网站还是开淘宝,wordpress插件代码,网站开发培训网站,江门有那几间公司做网站的客户端
在浏览器输入 URL 回车之后发生了什么#xff08;超详细版#xff09; - 知乎 (zhihu.com)
大致流程是#xff1a;
URL 解析DNS 查询TCP 连接处理请求接受响应渲染页面
1.URL解析
地址解析#xff1a;
首先判断你输入是否是一个合法的URL还是一个待搜索的关键…客户端
在浏览器输入 URL 回车之后发生了什么超详细版 - 知乎 (zhihu.com)
大致流程是
URL 解析DNS 查询TCP 连接处理请求接受响应渲染页面
1.URL解析
地址解析
首先判断你输入是否是一个合法的URL还是一个待搜索的关键词并且根据你输入的内容进行自动完成、字符编码等操作
HSTS
由于安全隐患会使用 HSTS 强制客户端使用 HTTPS 访问页面。
其他操作
浏览器还会进行一些额外的操作比如安全检查、访问限制之前国产浏览器限制 996.icu。
缓存检查 200(成功)服务器已成功处理了请求。通常这表示服务器提供了请求的网页。
304(未修改)自从上次请求后请求的网页未修改过。服务器返回此响应时不会返回网页内容。
DNS查询
进行将域名现在本地的 hosts 文件里没有则启动DNS解析器向注册的 DNS 服务器发送查询请求当然在路由的路上部分路由器也有缓存域名与ip的映射关系如果在路由中存在就直接在路由器返回ip如果没有则到子域名服务器查询需要的ip当然不仅可以访问同域的服务器也可以访问其他域的服务器。如果在这里也没有找到ip则去根域名服务器查询拥有对应ip地址的域名服务器根域名服务器会整颗域树进行遍历直到找到对应的域名服务器然后根据其域名服务器提供给其主机的同域的域名服务器然后由其同域域名服务器返回ip。 当然如果你乱输url地址当然找不到其ip返回404给你玩。
在得到映射的ip后在每一层都会备份缓存一份映射关系这样不用每一次发包前都DNS查询一次。
HTTPS协议
在对其url解析后创建HTTP/HTTPS报文在数据前添加对应的报头。
HTTP/HTTPS的请求报文和协议报文的报头格式是不同的 https是在http上做到安全处理加入了密钥措施保护了数据的安全性。
弃用http改用https的缘故与密钥的使用证书意义-CSDN博客
TCP链接
在外面访问某个网页前会先发起TCP三次握手的链接。 链接建立成功后才会开始tcp报文交流详细链接文章参考博客链接中的3次握手细节UDP与TCP报头介绍三次握手与四次挥手详谈_云的小站的博客-CSDN博客
TCP协议采用了超时重传滑动窗口流量控制快重传延迟应答捎带应答拥塞控制等等操作方法保证了传输的可靠性与效率。
滑动窗口的理念-CSDN博客
拥塞控制概念_云的小站的博客-CSDN博客
网络层ip的发送处理
拿到了传输层给的报文外面需要对齐做封装处理添加ip的报文数据。
ip报头和ip报文切片组装问题-CSDN博客
尽量不对一个tcp报文去做切片处理一旦切片不仅仅是增加了分片的时间并且一旦众分片中的
其中一个丢失就需要整体重新传达这是得不偿失的。
当然切不切片并不是网络层决定而是传输层和以太网中允许最大决定的。
如果tcp传入到网络层中的数据包加上ip报头超过一定大小就必须切片才能在网络中发送。 数据链路层
TCP/IP 分为四层在发送数据时每层都要对数据进行封装
数据链路层中存在的报文iparprarp-CSDN博客
数据在这一层完成最后的包装然后发送到网络中。
对了这ARP中的目的ip并不是最终目的ip而是下一跳路由结点的ip地址依靠此ip找对应路由的mac
数据包在路由传输过程
在网络通信的过程中必须知道对方ip地址才可以进行通信不同局域网的主机通信必须采用静态路由技术。
在一个私网局域网中向外通信是需要采用NAP/NATP技术相辅相成完成的
ip划分与私公网ip、ip的传递-CSDN博客
依托子网掩码在路由表选择发送网口根据arp得到mac做下一跳路由依托NAT替换原ip地址并且记录NAT表中这个表的映射记录也是动态的在tcp报文链接时在三次握手阶段第一次的FIN经过此路由器时候就会构建完毕在四次挥手的过程中TIME_WAIT状态发送ACK报文发送给路由器的时将映射关系设置为失效。诚然如果希望路由器允许这样工作那么路由器是拥有应用层功能的。UDP不连接导致何时销毁映射关系比较困难
在传输的路上可能会出现回环情况这个不用怕在ip层拥有8位生存时间这是一个计数器每次跳转一个结点就会自减到0意味着报文失效被接收的路由器销毁报文。
在这个过程中存在代理服务器代理服务器可以将其看成高级路由器替我们转发报文到公网中。
运营商其实就是依托其为我们提高我们服务。
代理服务器
正向代理 校园网就是最好的正向代理服务器代表链接校园网的设备向外界访问资源的时候所有的请求都会经过该服务器我们可以将其看成一个巨大的路由器但是服务器允许缓存资源预设在代理服务器中打个比方2个主机同时访问抖音服务器A主机先B主机后A、B主机访问的资源相同服务器在访问数据后会预留一段时间当B再来访问时候直接从代理服务器中获取资源不用再去抖音服务器访问大大的提高了我们的网络读写效率并且正向代理服务器会检查访问的合法性访问的内存合法性。
反向代理
依旧和路由器很像 反向代理正好与正向代理相反对于客户端而言代理服务器就像是原始服务器并且客户端不需要进行任何特别的设置。客户端向反向代理服务器中的内容发送普通请求接着反向代理将判断向何处转交请求并将获得的内容返回给客户端。反向代理对外的表现都是透明的客户不知道自己访问的是代理服务器客户端也不需要任何配置就可以访问。当我们配置好代理服务器后反向代理Reverse Proxy实际运行方式是指以代理服务器来接受internet上的连接请求然后将请求转发给内部网络上的服务器并将从服务器上得到的结果返回给internet上请求连接的客户端此时代理服务器对外就表现为一个服务器。
正向代理和反向代理区别
正向代理中 代理服务器和client同属一个网络对server透明。正向代理需要配置在客户端 反向代理中代理服务器和server同属一个网络对client透明。 反向代理需要配置在服务端 实际上代理服务器在两种代理中做的事都是代为请求和响应不过从结构上看正好左右相反故称为正反向代理。
服务器响应
服务器必须拥有和其客户端一样的各层协议才能相互通信。 必须拥有相同的各层协议否则接收方无法解开接到的数据报文无法向上交付。
在服务器得到申请后在自己的库中查找是否存在该资源申请对象权限是否满足资源的位置是否改变然后构建HTTP报文向下交付然后响应给对方。
HTTP存在响应码这是约定的一个响应码标识着这次响应的状态信息。
【精选】HTTP 响应码大全_http响应码_JFS_Study的博客-CSDN博客
这篇博客详细介绍了响应码的介绍。
后续的返回过程与发送过程几乎一样。