互联网运行流程

互联网运行主要围绕着客户端、服务器、数据库三个部分展开。首先用户在浏览器输入域名,此时浏览器会向DNS域名服务器发送域名解析请求,DNS域名服务器查到对应的IP后将IP地址返回给客户端。浏览器会携带IP向服务器发送HTTP请求,在发送请求前客户端会三次握手向服务器建立连接,连接建立好后客户端开始向服务器发送HTTP请求进行会话。当服务器接收到客户端发送的请求后服务器会提取请求的参数,处理对应的逻辑并向数据库发送SQL查询的请求,数据库查询到数据后向服务器返回对应的数据结果,服务器接收到数据后并处理数据得到最终的结果,服务器将响应数据给客户端,服务器四次挥手断开与客户端之间的连接,客户端获取到数据后进行页面渲染解析CSS、JS样式,如果存在ajax异步,则执行异步操作

(1)DNS域名解析

 DNS是一个分布式数据库,上面记录了域名和其IP 地址对应关系,在浏览器中输入网址时浏览器首先先连接DNS服务器获取到该域名的IP地址后浏览器在连接访问该IP的服务器有了DNS后,之后服务器IP地址有了变化重新绑定一下域名和新IP地址就可以了,这样就不会影响到访问站点的用户。

(2)三次握手

当客户端给服务器发送一个syn的报文,当服务器接收到请求后知道了客户端需要建立连接。于是服务器会给客户端发送一个syn包和ack确认包。当客户端收到确认包之后,客户端就知道了我既能发送数据又能接收数据,但是服务器只知道自己能接收数据,不知道自己发送给客户端的数据客户端能否接收到,所以需要第三次握手,客户端给服务器发送一个ack位置的报文,完成以上步骤后操作结束.

(3)发送请求

 

-------------------------------------------------请求方法-------------------------------------------------------------------

  1. get请求:请求指定页面的信息,并从服务器端得到资源
  2. Post请求:向指定资源提交数据进行处理请求(例如:提交表单上传文件),数据包含在请求体中
  3. put请求:从客户端向服务器传送数据取代指定文档内容
  4. delete请求:请求服务器删除指定的页面
  5. Connections:HTTP/1.1协议中预留给能够连接改为管道方式的代理服务器
  6. Options:允许客户端查看服务器性能
  7. Trace请求:回显客户端查看服务器性能
  8. head请求:类似于get请求,只不过返回响应中没有具体的内容,用于获取报头

get/post区别

  1. 浏览器在地址栏输入网址打开都是get请求
  2. get请求正文一般为空因为get的请求参数一般放在url中(以查询字符串的形式)post请求参数放在请求正文中
  3. 因为url长度存在限制(也就意味着get请求的参数是有长度限制)post长度不会(post数据是放在正文中的)
  4. 因为get的请求参数一般放在url中可以直接通过url查看参数信息所以不安全post相对安全(因为post参数放在正文中)
  5. get请求数据因为在URL中会被URL编码(只接收ascii字符)post不会且支持多种编码方式
  6. get请求回退无害post回退可能会造成重复提交

----------------------------------------------------url地址-------------------------------------------------------------------

URL地址:URL是对互联网上得到的资源的位置和访问方法的一种简洁表示,是互联网上标准资源的地址

(1)protocol协议:

http:通过http访问该资源

https:通过安全的HTTPS访问该资源

ftp协议:通过FTP访问资源

 HTTP和HTTPS协议的区别:

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL (Secure Sockets Layer)协议

用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS.简单来说,HTTPS 协议是由SSL+ HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

1. http协议不安全,是明文传输; https 协议安全性高,加密传输

2. http 不需要申请证书,而https需要申请证书

3. http 的默认端口是80,而https的默认端口是443

(2)hostname主机名:

        是指存放资源的服务器的域名系统(DNS) 主机名或 IP 地址

(3)Port端口号:

        HTTP缺省工作在TCP协议80端口,用户访问网站http:// 打头的都是标准HTTP服务。HTTPS缺省工作在TCP协议443端口。

(4)path路径:

        由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

(5)Parameters参数:

        这是用于指定特殊参数的可选项。

(6)query查询:

        可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP。NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。

(7)fragment信息片段:

        信息片断,字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。

----------------------------------------------------协议版本-----------------------------------------------------------------

HTTP/1.1     HTTP:协议类型    1.1 版本号

----------------------------------------------------请求头--------------------------------------------------------------------

Host:表示该请求所对应的服务器地址,地址可以是域名,可以是IP地址,也可以是手动指定端口号

Referer:先前网页的地址,当前请求网页紧随其后

User-Agent:发出请求的用户信息

Accept-Charset:浏览器可接受的字符集

Accept-Encoding:浏览器能够进行解码的数据编码方式

Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到.

Authorization:HTTP授权的授权信息

Content-Length:表示body的长度,单位是字节、GET中没有body

Connection:keep alive 连接状态

Content-Type:表示body的格式。只有该请求是POST时,才会带上Content-Length和Content-Type

(4)会话

1.HTTP无状态

客户端向服务器发送请求后退出,请求会消失,下次访问时重新创建连接

2.Cookie

 1.HTTP

        客户端向服务器发送请求后退出,请求会消失,下次访问时重新创建连接

2.Cookie

cookie是浏览器实现的一种数据存储技术。一般由服务器生成,发送给浏览器(客户端也可进行

cookie设置)进行存储,下一次请求同一网站时会把cookie发送给服务器

cookie的特点:

  1. cookie存储在客户端(浏览器上),发送请求时自动携带放在请求头中
  2. cookie只能以文本的方式保存字符串类型的数据
  3. 单个cookie保存的数据不能超过4kb
  4. cookie的安全性不高,别人可以分析存放在本地的cookie并进行cookie欺骗

3.Session

用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的session。请求返回时将此session的唯一标识信息SessionID返回给浏览器。浏览器接收到浏览器返回的SessionID信息后,会将此信息存入到Cookie中,同时Cookie记录此时SessionID属于哪个域名。当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在cookie信息,如果存在自动将cookie信息发送给服务端,服务端会从Cookie中获取SessionID查找对应的session信息,如果没有找到说明用户没有登录或者登录失效,如果找到session证明用户已经登录可执行后面操作

Session的特点:

  1. session是基于cookie实现,cookie失效或删除则session也无法获取
  2. Session是存储在服务器端,所以安全性比cookie高
  3. Session可以存储任意数据类型
  4. Session的默认生效时间是30分钟。只要在生效时间内,即使该session值已被修改,依然可通过旧有的Cookie访问到旧有的session值
  5. Session可存储数据的容量远高于cookie,但是当访问量过多,会占用过多的服务器资源

4.Token

 

虽然Session具备一定的安全性,但是它的问题在于扩展性不好。比如涉及到服务器集群的场景,要求每台服务器能够读取session。这种场景解决方案是session共享,经典应用需求是A和B两个关联网站间的单点登录,但是这种方案一般工程量较大。于是便出现另一种服务器无需保存session的技术方案:token

Token = uid + time + sign

uid:用户唯一的身份凭证

Time:当前时间的时间戳

Sign:签名,将token和时间戳加上其他请求参数再用HASH散列算法加密,加密后的数据就是本次请求的签名

验证流程:

  1. 客户端使用用户名跟密码请求登录
  2. 服务器收到请求后,去验证用户名与密码
  3. 验证成功后,服务端会签发一个token并把这个token发送给客户端
  4. 客户端收到token以后,会把它存储起来,比如放在cookie里或者localStorage里
  5. 客户端每次向服务端请求资源的时候需要带着服务端签发的token
  6. 服务端收到请求,然后去验证客户端请求里面带着token,如果验证登录成功,就向客户端返回请求数据

Token特点:

  1. 每一次请求都需要携带token,需要把token放到http的header
  2. token签发后存储在客户端,不占用服务器资源,可减轻服务器压力
  3. 使用token无需担心跨域问题,可自由使用

总结:

        由于cookie安全性低,所以发明了session;但是当用户同时在线量比较多时,session会占据较多的内存,为了节省服务器的内存资源,所以发明了token,用解析token的计算时间换取session的存储空间,从而减轻服务器的压力,减少频繁的查询数据库                

(5)响应数据

响应状态码

(6)四次挥手

 

  1. A与B交谈结束之后,A要结束此次会话,对B说:我要关闭连接了(seq=u,FIN=1)。(第一次挥手,A进入FIN-WAIT-1)

      2.B收到A的消息后说:确认,你要关闭连接了。(seq=v,ack=u+1,ACK=1)(第二次挥手,B进入CLOSE-WAIT)

      3.A收到B的确认后,等了一段时间,因为B可能还有话要对他说。(此时A进入FIN-WAIT-2)

   4.B说完了他要说的话(只是可能还有话说)之后,对A说,我要关闭连接了。(seq=w,ack=u+1,FIN=1,ACK=1)(第三次挥手)

     5.A收到B要结束连接的消息后说:已收到你要关闭连接的消息。(seq=u+1,ack=w+1,ACK=1)(第四次挥手

    6.B收到A的确认后,也进入CLOSED。

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值