浏览器访问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中,假如这个平台有两台服务器,当下次用户再访问的时候如果访问到另一台服务器的话就登录不上。