HTTP
HTTP 1.0 1.1 2.0 的区别
HTTP1.0 对于每一次的连接, 将会生成全新的TCP连接, 在1.1版本中增加了长连接选项(默认开启), 后续的文件传输都将通过先前开启的TCP连接传输.
HTTP2.0使用二进制流而不是字节流传输数据. 同时, 2.0版本还采用多request模式, 即一个TCP报文可以携带多个request数据, 通过不同的id来加以区分. 最后一个特性是支持服务器推送, 例如客户端请求了index.html, 但是服务器可以返回index.html +index.css + index.js
http中的get
当http的proxy认为缓存的内容"可能过时", 将发送一个条件get数据包, 其中含有缓存时间, 像服务器请求文件最近modified的时间, 检查是否一致.
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
cookie和session
cookie存储在客户端中, session记录在服务器中
session基于cookie实现或者基于URL实现
DNS
dns使用udp.
dns存在于: 浏览器缓存, 系统缓存, 路由器缓存, 本地ISP缓存和跟余名
P2P
每一个对等方拥有部分或全部的文件内容. 追踪器(可以理解为一种服务器)维护列表, 看哪个对等方在线.
传输时使用"稀缺优先"思想和高效对换算法(只和带宽最高的四位保持连接并定期探测第五位是否高效)
对等方列表维护发展思路: 全连接->环形->捷径
全连接对于每一次列表查询将产生n*(n-1)次查询, 因此将整个对等方维护成一个环形并编号. 通过散列的方式将某文件的拥有列表维护在某个对等方中. 当对等方想知道列表时, 通过迭代环形查询得知谁在维护列表
通过添加环形捷径, 让迭代查询次数降低.
每一个对等方记录next和next->next. 即使next掉线, 也可以通过next->next保持环形不变.
网友评论