HTTPS协议实现原理
HTTP协议的信息传输完全以明文方式,不做任何加密,相当于是在网络上"裸奔"。意思就是如果我们以HTTP来传输数据的话由于是明文数据,则很容易发生不安全事故,比如我登陆一个网站,那么如果是HTTP明文传输肯定就会直接把用户名和密码放在明文中,这样是非常不安全的,处在同一个局域网下的小伙伴直接抓包就可以获取你的用户名和密码,那么应该怎么办呢?
HTTP协议的信息传输完全以明文方式,不做任何加密,相当于是在网络上"裸奔"。意思就是如果我们以HTTP来传输数据的话由于是明文数据,则很容易发生不安全事故,比如我登陆一个网站,那么如果是HTTP明文传输肯定就会直接把用户名和密码放在明文中,这样是非常不安全的,处在同一个局域网下的小伙伴直接抓包就可以获取你的用户名和密码,那么应该怎么办呢?
之前介绍了TCP的报文格式( 《TCP协议基本特性》 ),TCP的连接管理,学习了TCP如何建立连接,释放连接以及一些网络安装方面的问题,现在还剩下TCP的几个关键机制,主要是TPC的延迟应答和捎带应答、超时重传、快重传和快恢复、滑动窗口机制、拥塞避免算法;然后最后还记录了TCP的粘包问题和解决方案!
HTTP的全称 HyperText Transfer Protocol,即超文本传输协议,程序员自己发明的协议之一,基于TCP的应用层协议。 HTTP协议是基于请求-响应的模式:
HTTP是一种无状态协议,HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。
现在即将开始真正踏上构造自己的容器的道路。我们会基于当前的操作系统创建一个与宿主机隔离的容器环境,下面就开始吧。在开始之前我们需要先对Linux的proc文件系统做一个介绍:
如果你对这些基本知识已经很熟悉了,请直接略过。Linux下的/proc文件系统是由内核提供的,它其实不是一个真正的文件系统,只包含了系统运行时的信息(比如系统内存、mount设备信息、一些硬件配置等),它只存在于内存中,而不占用外存空间。它以文件系统的形式,为访问内核数据的操作提供接口。实际上,很多系统工具都是简单地去读取这个文件系统的某个文件内容,比如lsmod,其实就是cat /proc/modules。当遍历这个目录的时候,会发现很多数字,这些都是为每个进程创建的空间,数字就是它们的PID。
在之前的文章中我们探究了Docker是如何使用AUFS文件系统的,现在我们开始动手实践一下AUFS,用简单的命令来创建一个AUFS文件系统,感受下如何使用AUFS和COW实现文件管理。
Union File System,简称UnionFS,关于联合文件系统我之前的一篇博客里也写过的 《Docker镜像与数据容器卷》 ,是一种为Linux、FreeBSD 和NetBSD操作系统设计的,把其他文件系统联合到一个联合挂载点的文件系统服务。它使用branch把不同文件系统的文件和目录“透明地”覆盖,形成一个单一一致的文件系统。这些branch或者是read-only的,或者是read-write的,所以当对这个虚拟后的联合文件系统进行写操作的时候,系统是真正写到了一个新的文件中。看起来这个虚拟后的联合文件系统是可以对任何文件进行操作的,但是其实它并没有改变原来的文件,这是因为unionfs用到了一个重要的资源管理技术,叫写时拷贝。
之前几篇文章讲述了Linux的Cgroups技术,
《Linux-Cgroups的资源控制》
,主要是通过Cgroups实现了对进程的资源限制,那么在Docker中是如何运用Cgroups的呢?我们知道Docker是通过Cgroups去做的容器的资源限制和监控,我们下面就以一个实际的容器实例来看下Docker是如何配置Cgroups的:docker run -m 设置内存限制
可以看到Docker通过为每个容器创建Cgroup并通过Cgroup去配置的资源限制和资源监控。
前段时间用到了Apache Freemarker来做前端页面,发现一个问题,就是JavaBean的Long类型和Integer类型向模板中注入的时候,只要是注入input类型,那么大
于999的数字则不会被显示,这个问题我也问了Apache官方的论坛:https://issues.apache.org/jira/browse/FREEMARKER-132 ,果然是官方站点呀,反馈还是很快的,系统还自动发了邮件!