前言:18年开始接触NIO/netty,于是对<tcp/ip详解第一卷>第一版看了大概,工作中没怎么运用过,因为都是封装的高层,现在准备研究底层,所以再次研究底层,然后再次阅读<tcp/ip详解第一卷>看的第二版,相对第一版,开篇就看的整个人迷迷糊糊的,就只对ipv4和v6有了一个模糊的概念.= =
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d669f7b2f5aae1cffc83164a78f437dc.png)
应用层
http
http连接方式
非持续连接:连接一次断开一次,如果一个页面包含4个图片对象,那么加载整个html,还需要再次建立5个tcp连接.
持续连接:复用同一个连接进行连接响应,当超时后,自动断开.
请求格式
响应格式
首部字段
缓存格式
Cache-Control: private, max-age=0, no-cache
请求首部字段
从客户端向服务器发送请求报文中所使用的字段,补充请求的附加信息,客户端信息等
cookie
cookie的存在对会话层提供了支持
格式
Set-Cookie: status=enable; expires=Tue, 05 Jul 2011 07:26:31
web缓存服务器
假设每秒15请求,每个请求占用1M带宽,则局域网上的网络强度为
要想降低延时,提升局域网带宽,将带宽提升到100M,则延时为0.15
再就是CDN加速.当采用加速,假设命中率为40%,则请求延时强度为0.6.
缓存失效问题
当缓存服务器响应请求的时候,会缓存页面,顺便记录上次修改时间
当用户间隔一段时间访问的时候,为了检测页面是否失效,发送上次修改时间,去服务端进行对比
如果这段时间页面没修改过,web服务器则发送给缓存服务器
https
HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
https采用共享密钥加密和公开密钥加密两者并用的混合加密机制.
在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。充分利用非对称加密的安全性,和共享加密的效率性.
websocket
支持双工,所以可服务器主动推送
首部信息很少,所以维持一个连接比HTTP耗用资源低
改变协议
连接
FTP
TCP开启2个并行的tcp连接端口传输文件,分别是控制连接,主要用于2主机之间传输控制信息,如用户标识,口令以及命令之类的,贯穿整个传输文件的过程,另外一个是数据连接,用来传输文件的.每次传输后就断开,再次传输需要再次连接
SMTP
因为smtp是基于推的操作,当从1推到5时,用户代理只能采用拉的协议从邮件服务器中获取邮件,比如POP3/IMAP/HTTP.
POP3相当于下载本地读取
IMAP相当于远程读取邮件
HTTP则采用浏览器读取.
DNS
相当于将身份证号(ip地址)映射为名字(域名),底层UDP协议.
提供主要的服务包括,邮件服务器和主机别名,负载分配
为了防止单点故障,服务器的层次结构如下
分别有三种DNS服务器,根DNS服务器,顶级域DNS服务器(负责顶级域名,如com,org),权威DNS服务器(机构提供)
DNS服务器分别提供递归和迭代2种方式查询.1-2步骤递归,其余步骤迭代
为了缓解DNS压力,DNS主机会缓存ip和域名映射关系.间隔一段时间删除.
记录
DNS存储资源记录,资源记录是一个包含了Name,Value,Type,TTL的记录
TTL:记录生存时间,超过则删除
如果A服务器是某主机名的权威服务器,则A会包含A记录.如果A不是,而B是,则A会记录一条NS记录(记录某主机名与DNS权威服务器域名)和A记录(权威服务器名和对应ip)
P2P
BitTorrent
数据存储方式
分布式散列表存储(DHT),
存储方式一:key为目录名,value为ip地址.
用户A比如要下a目录,首先从DHT根据a查找到对等方B负责维护a目录对应的ip地址,于是从对等方B中获取具有a目录的ip地址.返回给用户A
方式二:hash一致性算法
方式三:hash一致性算法+添加随机路径(环上数量要相对较少)
对等方扰动
当对等方5移除的时候,对等方4用他的后继8代替他的第一个后继,
然后查询第一个后继,他的后续后继10的标识符和ip地址,加入到4的第二个后继.