小花的前端大杂烩知识点之计算机网络

网络七层协议的通俗理解

层级 功能 TCP/IP协议族
应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,RIP,Telnet
表示层 数据格式化,代码转换,数据加密 没有协议
会话层 解除或建立与别的接点到的联系 没有协议
传输层 提供端对端的接口 TCP,UDP
网络层 为数据包选择路由 IP,ICMP,OSPF,BGP,ARP,RARP
数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,MTU,ARP,RARP
物理层 以二进制的形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2

TCP为什么三次握手而不是两次握手
为了实现可靠数据传输,TCP协议的通信双方,都必须维护一个序列号,以标识发送出去的数据包中,哪些是已经被对方接收到的。三次握手的过程即是通信双方相互告知序列号起始值,并确认对方已经收到了序列号起始值的必经步骤。要是只有两次握手,也就是最多只有连接发起方的其实序列号能被确认,另一方的序列号就不能得到确认。

常见的状态码
1××:指示信息,表示请求已接收,继续处理
2××:成功,表示请求已被成功接收
3××:重定向
4××:客户端信息错误,请求有语法错我或者请求无法实现
5××:服务器端错误,服务器端未能实现合法的请求
200 OK 客户端请求成功
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在,输入了错误的 URL
500 Internal Server Error 服务器发生不可预期的错误
如何对网站的文件和资源进行优化?

  1. 文件的合并(目的是减少http的请求),例如使用css sprites合并图片

  2. 使用cdn(内容分发网络)加速,降低通信距离

  3. 缓存的使用,添加expire/cache-control头

  4. 启用Gzip压缩文件

  5. 将css放在页面的最上面

  6. 将script放在页面的最下面

  7. 避免css中使用表达式

  8. 减少dns查询

  9. 文件压缩,最小化css和js,减小文件的体积

  10. 避免重定向

  11. 移除重复的脚本

  12. 配置实体标签ETag

  13. 使用ajax缓存,让网站内容分批加载,局部更新
    GET和POST的区别
    它们都是HTTP协议中的两种发送请求的方法
    区别:

(1) get通过url来传递参数,post是放在request body中
(2)get请求在url中传递的参数是有长度限制的,而post没有
(3)get比post更不安全,因为它的参数直接暴露在url中,所以不能用来传递敏感信息
(4)get只能进行url的编码,而post支持多种编码的格式
(5)get请求参数会完整保留在浏览器的记录里,而post中的参数不会被保留(get请求会被浏览器主动cache,post不会,除非手动设置)
(6)get和post本质上就是TCP的链接,并无差别,但由于http的规定和浏览器/服务器的限制,导致他们在应用的过程中出现一些不同
(7)get会产生一个TCP的数据包,而post产生两个tcp的数据包
对于get方式的请求,浏览器会把http header 和 data一起发送出去,服务器响应200 ok(返回数据)
而对于post来说,浏览器发送header,服务器响应100 continue,浏览器在发送data,服务器响应200 ok返回数据
一个页面从输入url到页面加载显示完成,这个过程都发生了什么?
(1)输入地址
(2)浏览器查找域名的ip地址,这一步包括DNS的具体查找过程,包括浏览器的缓存→系统缓存→路由的缓存……
(3)浏览器向web服务器发送一个HTTP请求
(4)服务器的永久重定向(从http://example.com到http://www.example.com)
(5)浏览器跟踪重定向的地址
(6)服务器处理请求
(7)服务器返回一个http响应
(8)浏览器显示HTML
(9)浏览器发送请求获取镶嵌在HTML中的资源(如图片、音频、视频、css、js)
(10)浏览器发送异步请求

Cookie和Session的区别
http是无状态的,也没有记忆的功能,那么自动登录都是怎样实现的?
方法一:浏览器中使用cookie,它是服务器发给浏览器的特殊信息,并且会以文本的形式存在浏览器中,所以我们顶级浏览器的清除记录,也就是我们在清理cookie,那清理之后我们下次再次访问网页就需要重新的登录。如果浏览器中存在cookie,那么提交请求就会一起提交过去,服务器在接收到后就会解析cookie生成与客户端相对应的内容实现自动登录,cookie带有我们的比较重要信息,所以一般不会给人获取
方法二:服务器使用session。他是在服务器上保存信息的,当服务器需要为客户创建session的时候,就会解析客户端请求查看请求是否包含session id,如果包含那么就表明此前已经为客户端创建过session,不包含则创建一个对应的session id,而后回发给客户端,使得客户端下次能带有session id,然后按需保存状态。
所以最终的区别总结起来就是:Cookie数据存放在客户浏览器上,Session数据存放在服务器上,Session相对应Cookie安全,而使用Cookie会给服务器减负

你可能感兴趣的:(summary)