客户端访问浏览器的流程

浏览器访问web服务端过程
大概分为六个阶段:

由浏览器(拥有IP地址)输入要访问的域名(www.baidu.com)首先通过dns将域名解析成IP地址(服务器)返回给浏览器,浏览器携带着自己的IP地址和服务器的IP地址还有要请求的内容通过tcp/udp传输协议传递给服务器端(客户端访问服务器的ip地址是公网ip),服务器端通过浏览器的端口来分类,是否是自己(监管)的端口,是的话,产生进程,把要请求的内容从硬盘中查出来之后传到内存中,再由内存传递给进程,返回到客户端


一、DNS解析
首先会检查客户端本地的DNS缓存,一般情况下,第一次访问的话,本地是没有缓存的,localDNS会把请求发送到全球13台DNS根服
务器上面,DNS根服务器管理的是顶级域名(也称为一级域名),然后它会把结果(一级域名)发送给localDNS-,然后localDNS会向NS服
务器请求二级域名,localDNS接收到二级域名后,会到NS服务器那查询到一条A记录,将这一条返回结果缓存到localDNS里面,并把这个
结果返回给客户端,然后客户端就获取到了服务端的ip地址。

二、TCP 三次握手-建立连接
首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server
段发生ACK报文,并分配资源,这样TCP连接就建立了。


三、http 请求报文阶段
一般分为四部分,第一部分是请求行,请求行分为三部分,第一部分是请求方法,第二,是资源地址(URL),第三,http协议版本

四、整个网站集群架构内部的工作,内部数据的请求与接收
接收这个报文的一般是负债均衡服务器,通过负载均衡服务器把这个请求报文发送到web服务器

五、http 响应报文
HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文。

状态行格式如下:

HTTP-Version Status-Code Reason-Phrase CRLF

其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;
Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1xx:指示信息--表示请求已接收,继续处理。

2xx:成功--表示请求已被成功接收、理解、接受。

3xx:重定向--要完成请求必须进行更进一步的操作。

4xx:客户端错误--请求有语法错误或请求无法实现。

5xx:服务器端错误--服务器未能实现合法的请求。

常见状态代码、状态描述的说明如下。

200 OK:客户端请求成功。

400 Bad Request:客户端请求有语法错误,不能被服务器所理解。

401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。

403 Forbidden:服务器收到请求,但是拒绝提供服务。

404 Not Found:请求资源不存在,举个例子:输入了错误的URL。

500 Internal Server Error:服务器发生不可预期的错误。

503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200
OK(CRLF)。

六、在私有链接超时之后,进行http四次断开

假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是
如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了
,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确
定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN
报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Ser
ver端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证
明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!

ip绑定端口号 类型 服务器安全,
例 : ip1:80
ip2:8080

注 三次握手四次挥手解决方案:设置(超时连接功能,访问次数限制)防止服务器一直占用进程,导致服务器进程长期被占用(访问次数被限制时会出现页面卡顿)
启动(httpd)服务同时会出现的是(日志,进程,pid(进程结束自动删除),套接字(ip+端口),文件锁(开启进程是就会自动生成文件锁,关闭服务时自动关闭))
注(启动服务是最好用restart)
cookie:客户端访问服务器后返回一个“通行证”存在浏览器的cookie里 然后客户端再次访问服务器的时候有了“通行证”可以直接登录。
session:客户端访问服务器的时候的操作会存储到session中,假如这个平台有两台服务器,当下次用户再访问的时候如果访问到另一台服务器的话就登录不上。

原文地址:https://www.cnblogs.com/zhanglong68/p/6387709.html