TCP/IP TCP/IP协议是网络世界“事实上”的标准通信写于你,是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP,其他的还有UDP、ICMP、ARP等,共同构成了一个复杂但有层次的协议栈。
整个协议有四层,最上层是“应用层”,最下层是“链接层”,TCP和IP在中间:TCP属于“传输层”,IP属于“网际层”,TCP和IP则在中间。
IP协议是“Internet Protocol”的缩写,主要目的是解决寻址和路由问题,以及如何在两点间传送数据包。IP协议使用“IP地址”的概念来定位互联网上的每一台计算机。
现在我们使用的IP协议大多是V4版,地址是用四个用“.”分隔的数字,例如“192.168.0.1”,总共有2^32,大概42亿个可以分配的地址;后来出现了V6版,使用8组“:”分隔的数字作为地址,总共有2^128个可以分配的地址。
TCP协议是“Transmission Control Protocol”的缩写,意思是“传输控制协议”,它位于IP协议之上,基于IP协议提供可靠的、字节流形式的通信,是HTTP协议得以实现的基础。
“可靠”是指保证数据不丢失,“字节流”是指保证数据完整,所以在TCP协议两端可以如同操作文件一样访问传输的数据,就像是读写在一个密闭管道里“流动”的字节。
HTTP是一个“传输协议”,它不关心寻址、路由、数据完整性等传输细节,而要求这些工作由下层处理。由于互联网上最流行TCP/IP上,HTTP也就可以更准确地称为“HTTP over TCP/IP”。
DNS
在TCP/IP协议中使用IP地址来标识计算机,对于人类来说难以记忆和输入。
于是域名系统(Domain Name System)出现了,用有意义的名字作为IP地址的等价替代。
在DNS系统中,“域名”(Domain Name)又称为“主机名”(Host),为了更好的标记不同国家或者组织的主机,让名字更好记,所以被设计成一个有层次的结构。
域名用“·”分隔成多个单词,级别从左到右逐级升高,最右边被称为“顶级域名”。比如表示商业公司的“com”,表示教育机构的“edu”,表示国家的“cn”、“uk”等;
但想要使用TCP/IP协议来通信仍然要使用IP地址,所以需要把域名做一个转换,“映射”到它的真实IP,这就是所谓的“域名解析”。
目前全世界有13组DNS根DNS服务器,下面再有顶级DNS、权威DNS和更小的DNS,逐层底柜的实现域名查询。
HTTP协议中并没有明确要求必须使用DNS,但实际上为了方便访问互联网上的Web服务器,通常会用DNS来定位或者标记主机名,间接的把DNS和HTTP绑在了一起。
HTTPS
全称是“HTTP over SSL/TLS”,也就是运行在SSL/TLS协议上的HTTP。
SSL/TLS是一个负责加密通信的安全协议,建立在TCP/IP之上,所以也是个可靠的传输协议,可以被当作HTTP的下层。
SSL的全称是“Secure Socket Layer”,由网景公司发明,当发展到3.0后被标准化,改名为TLS,“Transport Layer Security”。
SSL使用了很多密码学最先进的研究成果,综合了对称加密、非对称加密、摘要算法、数字签名、数字证书等技术,能否在不安全的环境中为通信的双方创建出一个秘密的、安全的传输通道,为HTTP套上一副坚固的铠甲。
代理
代理(Poxy)是HTTP协议中请求方和应答方中间的一个环节,作为“中转站”,既可以转发客户端的请求,也可以转发服务器的应答。
代理的种类有: 1、匿名代理:完全隐匿了被代理的机器,外界看到的 只是代理服务器; 2、透明代理:在传输中是“透明开放”的,外界既知道代理,也知道客户端; 3、正向代理:靠近客户端,代表客户端向服务器发送请求; 4、反向代理:靠近服务器端,代表服务器响应客户端的请求。
CDN就是一种代理,代替源站服务器响应客户端的请求,通常扮演着透明代理和反向代理的角色。
由于代理在传输过程中插入了一个“中间层”,所以可以在这个环节做很多有意思的事,比如:
1、负载均衡:把访问请求均匀分散到多台机器,实现访问集群化; 2、内容缓存:暂存上下行的数据,减轻后端的压力; 3、安全防护:隐匿IP,使用WAF等工具抵御网络攻击,保护被代理的机器; 4、数据处理:提供压缩、加密等额外的功能。
关于HTTP的代理还有一个特殊的“代理协议”(proxy protocol),它由知名的代理软件HAProxy,但并不是RFC标准。