服务器与服务器之间如何连接和传输数据?
网友解答: 我们知道如果要向远程服务器传输数据和操作必须输入用户名和密码远程登录服务器 ,或用FTP等协议,都需要权限控制。 然而如果是两台服务器间的软件需要通讯和数据传输,如hado
我们知道如果要向远程服务器传输数据和操作必须输入用户名和密码远程登录服务器 ,或用FTP等协议,都需要权限控制。
然而如果是两台服务器间的软件需要通讯和数据传输,如hadoop集群中机器互访,是不是每次也要输入用户名和密码?那是不是很麻烦?下面介绍SSH来解决这个问题(不是JAVA中的SSH概念)
SSH是一种网络协议,用于计算机之间的加密登录。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。
此外,本文只讨论SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。
这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。
下面就安装总结一下网友和自己的经验。
环境
CentOS7.0
安装
? 网友解答:常用的服务和服务之间,服务器和服务器之间的数据传输主要是通过TCP或UDP进行传输。而http、socket、https、ssl、ssh等是建立在TCP的基础上进行传输,即是那些协议的底层实现。
和你举一个连接的流程:
比如你进行一个正常的网络请求,请求链接是http://www.163.com ,那么你的链接会先经过域名服务器进行解释将IP地址返回来,然后客户端通过IP去连接服务器,服务器响应后回传数据。
tcpTCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP是因特网中的传输层协议,使用三次握手协议建立连接。
udpUDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
udp在网络质量令人十分不满意的环境下,协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
结论即服务器之间通过上面说的传输协议进行最底层的数据连接及传输,在两台服务器之间进行传输的数据,必须要先序列化之后才能传输。而一些建立在底层连接协议上的上层应用就会进行用户鉴权等行为,如果通过则进行数据回复,如果不通过则切断连接。
-----------------------------------
本人现处广州从事互联网工作多年,资深技术人员、管理人员。愿结识有互联网业务的技术人员或企业人员。