用户访问网站的完整流程

news/2024/5/14 3:34:14/文章来源:https://blog.csdn.net/weixin_34297704/article/details/89776515

在浏览器输入想要访问的域名之后,浏览器会进行域名解析获得IP地址,在经过TCP的连接,实现数据的传输就会有两种报文,及请求报文和响应报文。最终才能实现通信。因此想要实现通信,就得先弄懂DNS的解析原理以及TCP连接通道的流程。

 

理论内容:

1DNS的介绍以及原理

2TCP/IP协议的介绍和三次握手及四次挥手

3HTTP协议的介绍及请求与响应报文

4、用户访问浏览器的完整过程

1DNS的介绍及解析原理

1)说说DNS是什么

DNSDomain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去·记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53访问网站的实质就是解析其域名得到IP地址,再转向其网站。

 

2DNS的解析原理:

wKioL1kb4XzSOHlcAARxPnYzjRc687.png 

原理步骤:

1)系统首先会查找本地的DNS缓存和hosts文件信息,确认其中是否有与,域名www.baidu.com所对应的IP地址。如果有,就直接访问这个IP地址所对应的www.baidu.com域名服务器。

2)如果没有找到,那么,系统将会把浏览器的解析请求发送给本地主机所指定的DNS服务器,称为LDNS。如果LDNS服务器中有域名www.baidu.com所对应的IP地址,则返回给客户端的浏览器,如果没有,则继续请求其他DNS服务器。

3LDNS服务器会从DNS系统的根(.)开始请求对域名www.baidu.com的解析。根DNS服务器全球只有13台,根域名服务器是没有域名www.baidu.com解析记录的。但是它会有域名www.baidu.com所对应的顶级域.com的解析记录,因此直接把顶级域.com对应的DNS地址返回给LDNS服务器。

4LDNS服务器获取到顶级域.com对应的DNS服务器地址后,就会去.com服务器请求www.baidu.com域名的解析。在顶级域名服务器也不会有www.baidu.com的解析记录的。但是它有www.baidu.com的父级域名的解析记录,即baidu.com。因此顶级域.com服务器又会把baidu.com所对应的DNS服务器的IP地址返回给LDNS

5LDNS服务器收到baidu.com所对应的IP地址后,就会去baidu.com域名服务器请求www.baidu.com的域名解析。Baidu.com域名对应的DNS服务器是该域名的授权DNS服务器。这个DNS服务器就是企业购买域名时用于管理解析的服务器。

6baidu.com域名DNS服务器会吧www.baidu.com域名所对应的IP地址给解析出来,然后发给LDNS

7LDNS把解析出来的结果,www.baudu.com所对应的IP地址发送给客户端的浏览器。并且LDNS也会将其域名和对应的地址缓存到cache中。

8)客户端浏览器收到后,也会将其域名以及对应的IP地址缓存的到DNS缓存和hosts文件中。

 

2TCP/IP协议的介绍和三次握手及四次挥手

1)说说TCP/IP协议是什么

Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层IP协议和传输层TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

2各个状态的意义如下: 
1LISTEN 侦听来自远方TCP端口的连接请求; 
2SYN-SENT -在发送连接请求后等待匹配的连接请求; 
3SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认; 
4ESTABLISHED代表一个打开的连接,数据可以传送给用户; 
5FIN-WAIT-1 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
6FIN-WAIT-2 从远程TCP等待连接中断请求; 
7CLOSE-WAIT 等待从本地用户发来的连接中断请求; 
8CLOSING -等待远程TCP对连接中断的确认; 
9LAST-ACK 等待原来发向远程TCP的连接中断请求的确认; 
10TIME-WAIT 等待足够的时间以确保远程TCP接收到连接中断请求的确认; 
11CLOSED 没有任何连接状态;

3TCP三次握手

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.socket编程中,客户端执行connect()时。将触发三次握手。

wKiom1kb4YrTzzxEAABiNYluEmg336.png 

三次握手过程:

1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

2)第二次握手:服务器B收到SYN包,必须确认客户ASYNACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

3)第三次握手:客户端A收到服务器BSYNACK包,向服务器B发送确认包ACKACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

4TCP 四次挥手
TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

wKiom1kb4ZSTFGJ_AAHg574oeNM029.png 

 

四次挥手过程:

1第一次挥手:客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。 

2第二次挥手:服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。 

3第三次挥手:服务器B关闭与客户端A的连接,发送一个FIN给客户端A 

4第四次挥手:客户端A发回ACK报文确认,并将确认序号设置为收到序号加1

3HTTP协议的介绍及请求与响应报文

1HTTP报文

HTTP报文中有很多行内人,这些行的字段都是由一些ASCII码串组成,但各个字段的长度是不同的。HTTP报文可以分为两种,一种是从web客户端发往web服务端的HTTP报文,称为请求保卫,另一种是从web服务端发往客户端的报文,称为响应报文。两种报文的格式的基本相同。

1)请求报文介绍

wKioL1kb4Z6Ss5VkAADxWfnAhLI852.png

2)请求报文的内容与格式有如下:

1)请求行

作用:用来说明客户端想要做什么。

内容:包括方法字段GETURL字段以及HTTP协议版本

2)请求头

作用:通过客户端把请求的相关信息发给服务器

内容:包括媒体类型、语言类型、支持压缩、客户端类型、主机等信息。

3)空行

作用:告诉服务器空行以下内容不属于请求头部信息。

4)请求报文主体

作用:用来说明客户端具体想要做的事情。

内容:查看信息、应用post方法。

3)响应报文介绍

wKiom1kb4avQY3g9AACELqes8JM491.png

4)请求报文的内容与格式有如下:

1)状态行

作用:用来说明服务端响应客户端的状态。

内容:包括洗衣及版本号、数字状态码、状态情况

2)响应头

作用:通过服务端把响应的相关信息给客户端

内容:包括Locationserverconnectvary

3)空行

作用:告诉客户端空行以下内容不属于响应头部信息。

4)响应报文主体

作用:用来装载着要返回给客户端的数据

内容:包括文本、html、视频或者是图片。

 

5GETPOST的认识

GET当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的数据部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind

POST:当客户端给服务器提供信息较多时可以使用POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取/查询资源信息,POST 会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据;

 

4、用户访问浏览器的完整过程

1、客户端在浏览器中输入要访问的域名地址,如:www.baidu.com

2、浏览器请求解析DNS服务器,把域名www.baidu.com转换成web服务器的IP地址。

1系统首先会查找本地的DNS缓存和hosts文件信息,确认其中是否有与,域名www.baidu.com所对应的IP地址。如果有,就直接访问这个IP地址所对应的www.baidu.com域名服务器。

2如果没有找到,那么,系统将会把浏览器的解析请求发送给本地主机所指定的DNS服务器,称为LDNS。如果LDNS服务器中有域名www.baidu.com所对应的IP地址,则返回给客户端的浏览器,如果没有,则继续请求其他DNS服务器。

3LDNS服务器会从DNS系统的根(.)开始请求对域名www.baidu.com的解析。DNS服务器全球只有13台,根域名服务器是没有域名www.baidu.com解析记录的。但是它会有域名www.baidu.com所对应的顶级域.com的解析记录,因此直接把顶级域.com对应的DNS地址返回给LDNS服务器。

4LDNS服务器获取到顶级域.com对应的DNS服务器地址后,就会去.com服务器请求对www.baidu.com域名的解析。在顶级域名服务器也不会有www.baidu.com的解析记录的。但是它有www.baidu.com的父级域名,即baidu.com。因此级域名.com服务器又会把baidu.com所对应的DNS服务器的IP地址返回给LDNS

5LDNS服务器收到baidu.com所对应的IP地址后,就会去baidu.com域名服务器请求对www.baidu.com的域名解析。Baidu.com域名对应的DNS服务器是该域名的授权DNS服务器。这个DNS服务器就是企业购买域名时用于管理解析的服务器。

6baidu.com域名DNS服务器会吧www.baidu.com域名所对应的IP地址给解析出来,然后发给LDNS

7LDNS把解析出来的结果,www.baudu.com所对应的IP地址发送给客户端的浏览器。并且LDNS也会将其域名和对应的地址缓存到cache中。

8客户端浏览器收到后,也会将其域名以及对应的IP地址缓存的到DNS缓存和hosts文件中。

 

3、浏览器从访问的IP地址(URL)解析出默认的断后号:80

4、浏览器通过解析后得到的IP地址和端口号进行web服务器建立一条TCP连接通道。

1)第一次握手:

建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

2)第二次握手:

服务器B收到SYN包,必须确认客户ASYNACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

3)第三次握手:

客户端A收到服务器BSYNACK包,向服务器B发送确认包ACKACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

 

5、建立TCP连接之后,浏览器向web服务器发送一条HTTP请求报文。

1)请求行

作用:用来说明客户端想要做什么。

内容:包括方法字段GETURL字段以及HTTP协议版本

2)请求头

作用:通过客户端把请求的相关信息发给服务器

内容:包括媒体类型、语言类型、支持压缩、客户端类型、主机等信息。

3)空行

作用:告诉服务器空行以下内容不属于请求头部信息。

4)请求报文主体

作用:用来说明客户端具体想要做的事情。

内容:查看信息、应用post方法。

6web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。

1)状态行

作用:用来说明服务端响应客户端的状态。

内容:包括洗衣及版本号、数字状态码、状态情况

2)响应头

作用:通过服务端把响应的相关信息给客户端

内容:包括Locationserverconnectvary

3)空行

作用:告诉客户端空行以下内容不属于响应头部信息。

4)响应报文主体

作用:用来装载着要返回给客户端的数据

内容:包括文本、html、视频或者是图片。

7、web服务器关闭HTTP连接,关闭TCP连接,web服务器显示访问的网站内容到屏幕上。

1)第一次挥手:

客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。 

2)第二次挥手:

服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。 

3)第三次挥手:

服务器B关闭与客户端A的连接,发送一个FIN给客户端A 

4)第四次挥手:

客户端A发回ACK报文确认,并将确认序号设置为收到序号加1



本文转自 baishuchao 51CTO博客,原文链接:http://blog.51cto.com/baishuchao/1927189


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_814478.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站定位之---根据IP获得区域

记得以前做一个培训机构网站时候需要定位,那时候用的搜狐的api,不是很精准。 demo:https://github.com/dunitian/LoTCodeBase/tree/master/NetCode/3.常用技能/06.Position/01.IPToPosition 后来做电商的时候用的新浪的api,感觉还行&#xff…

网站收录工具(php导航自动收录源码)_让百度快速收录网站的办法(简单可行)...

让百度快速收录网站最直接的方式是把网站链接提交给百度,能让蜘蛛快速发现页面而不是等着百度蜘蛛自己发现,收录慢不说,如果网站结构有问题,可能还抓取不到某些页面,从而不收录。百度提交网站收录的方式有快速收录和普…

java支付宝开发-02-手机网站支付

源码已上传github,欢迎专注:https://github.com/shirayner/alipay-wap 一、基础部分 1.手机网站支付产品介绍 1.1 阅读官方介绍: 手机网站支付产品介绍 1.2 看完官方的介绍之后,可以做出如下总结: 通过接入此接口&…

大型网站系统架构的演化

2019独角兽企业重金招聘Python工程师标准>>> 前言 一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的&#…

可以发外链的网站_SEO优化就是写文章发外链吗?到底该怎么优化一个网站呢?...

点击箭头处“蓝色字”,关注我们哦!!在某个群里有很多“大侠”对SEO优化很是有误解,有的人说优化就是使劲的发文章,把外链做到极致就可以了,也有的人对优化不屑一顾,觉得优化没技术含量&#xff…

网站输入正确账号密码页面刷新一下_对某钓鱼网站的一次渗透测试

文章作者:Mochazz文章来源:Mochazz的博客原文链接:https://mochazz.github.io/2019/07/01/对某钓鱼网站的一次渗透测试/周末在某个CTF群偶然看到这个钓鱼网站:http://gggggg.cn (声明:本文中出现的域名、IP均被替换&am…

免密登录_以Airbnb为例,用selenium免密登录网站

大家好,这篇文章介绍了如何通过selenium利用cookie免密登陆网站(第一次写文章 )zzh2027/zzh2027.github.io​github.comfrom selenium import webdriver from selenium.webdriver.common.keys import Keys## 模拟键盘用的包 from selenium.we…

SEO流量定义,什么是搜索引擎优化策略营销?

SEO流量定义,什么是搜索引擎优化策略营销? 搜索引擎优化(SEO)看起来非常简单。你挑选几个关键词,然后瞧!您的网页针对搜索引擎优化进行了优化 还没。 很多人都明白SEO的基本原则,但在过去的十年…

疯狂的多域名富关键词网站优化策略

疯狂的多域名富关键词网站优化策略 SEO中一个被很多人看重的排名因素就是根域名含有关键词,中文也一样,就是含有拼音,在相同的条件下,显然根域名含有关键词就有较好的排名,有一些SEO.er利用搜索引擎的这个排名策略&…

实时搜索SEO如何应对

实时搜索(Real-time Search)已经大势所趋,不是SEO不明白,是互联网变化太快,每天都有新名词,每天都有新主题,搜索引擎如何为用户及时的返回丰富又有意义的即时结果,Google推出Caffeine也正是适应这种趋势&am…

国内优秀的免费素材网站大比拼

奇遇网络专业提供seo优化服务,seo优化外包,免费建站模板,免费wordpress模板,DIVCSS模板,几千种免费网页模板,收集最好最全的html5模板及css3模板,html5是目前最前瞻的网页技术,本站为大家提供免费技术交流平台。 国内优…

ASP.NET新建解决方案和网站

新建解决方案和网站 1.打开visual studio,选择新建项目,然后选择解决方案。 2.解决方案建好之后,右键点击解决方案选择新建网站。注意,路径。我在solution1文件夹下面又建了一个site文件夹。 3.右键点击site选择添加新项。 好了&a…

网站架构演化阶段

网站架构演化阶段 网站架构需要工程师从全局把握一个网站的前台、后台,要知道什么地方会有瓶颈, 对网站的可扩展性、安全性等需要有一个成熟的把握。 下面说的几个阶段可以了解网站架构演化。 1)单机部署 最简单的情况,可以把各个…

IOS-5个可以帮你优化App的优秀网站

也许现在有一款App可以提供所有你需要的,你不需要的,或者你可以想象到的内容。但是,有多少App真的可以不仅满足需求而且还能提供很好的用户体验呢? 相信很多APP并没有这样的能力。有一些APP的设计特别烂,以至于用户很难去完成一些…

安工大计算机作业提交网站,安工大教务处教务系统:http://jwc.ahut.edu.cn

各有关学院:根据教育部高等教育教学评估中心和中国工程教育专业认证协会联合发布《关于接受2020年工程教育认证申请的通告》(工程教育认证通告〔2019〕第3号)(附件1)文件精神,2020年工程教育专业认证申请工作现已开始。请各有关学院根据工程教育认证标准…

20点提高网站访问速度缩短网页加载时间

网友上网都不喜欢用太多的时间等待网页的打开,等待的越长,用户可能会直接关闭网页,这样就会损失很多流量!其次,关键字的排名与网页的打开速度也有关系,这个主要体现搜索引擎对用户体验度上,用户体验度好&am…

网站管理助手 mysql_巧用网站管理助手Mysql数据库损坏修复方法

站访问提示mysql错误:Table XXX is marked as crashed and should be repaired修复方法如下:一、管理助手方式:打开管理助手,打开mysql数据库选项,双击需要修复的数据库,点击修复按钮修复。如果没有修复成功&#xff0…

网站运营

网站如何经营,流量如何拉动,点击率如何获取,这些问题似乎从互联网诞生之日就出现了。然而关于它们的答案总是在不断更新。如今,传统媒体报业都在经受新媒体的冲击和挑战,如何去适应一个全新的,高度互联&…

网站爬取准备

2019独角兽企业重金招聘Python工程师标准>>> 1. 爬虫作用用网络爬虫技术让重复性的手工流程实现自动化处理。 2. 爬取准备a. 检查robots.txt在链接后加robots.txt查看是否有要求或限制User-agent : 后表示禁止的用户代理Crawl-delay : 后表示要求的爬取延迟Sitemap …

网站性能优化的作用_优化Laravel网站性能的tips

php中文网最新课程每日17点准时技术干货分享Laravel是一个功能强大的框架,组件很多,代码也很庞大,它的易用方便是牺牲了性能的,即便如此它仍然是一个优秀的框架,但在正式环境下要做好优化提升网站的打开速度。1.关闭de…