精华内容
下载资源
问答
  • 文章目录P1 服务器会话层1 会话池SCP2 服务器会话层 SC3 广播与侦听 S/LP2 客户端会话层1 客户端会话层 CC P1 服务器会话层 1 会话池SCP package com.mec.csframework.core; import java.util.ArrayList; import...

    P4 服务器会话层

    1 会话池 ServerConversationPool类

    package com.mec.csframework.core;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class ServerConversationPool {
    	
    	private Map<String, ServerConversation> conversationPool;
    	
    	
    	/**
    	 * 所有方法采用包权限,作为内部工具
    	 */
    	ServerConversationPool() {
    		this.conversationPool = new HashMap<>();
    	}
    	
    	//将每个连接到服务器的客户端的服务器会话层加入会话池
    	void addClient(ServerConversation client) {
    		this.conversationPool.put(client.getId(), client);
    	}
    	
    	//根据id将其从会话池中删除
    	void removeClient(String id) {
    		this.conversationPool.remove(id);
    	}
    	
    	//根据id获取客户端的服务器会话层
    	ServerConversation getClient(String id) {
    		return this.conversationPool.get(id);
    	}
    	
    	//获取会话池中连接数量
    	int getClientCount() {
    		return this.conversationPool.size();
    	}
    	
    	//查询会话池是否为空
    	boolean isEmpty() {
    		return this.conversationPool.isEmpty();
    	}
    	
    	//得到除了指定客户端外的所有客户端的服务器会话层
    	List<ServerConversation> getClientExcept(String id) {
    		
    		List<ServerConversation> clientList = new ArrayList<>();
    		
    		for(String orgId : this.conversationPool.keySet()) {
    			if(orgId.equals(id)) {
    				continue;
    			}
    			clientList.add(this.conversationPool.get(orgId));
    		}	
    		return clientList;
    	}
    	
    	
    	//得到所有客户端的服务器会话层
    	List<ServerConversation> getClient() {
    		return getClientExcept(null);
    	}
    	
    	
    	
    }
    

    2 服务器会话层 ServerConversation类

    package com.mec.csframework.core;
    
    import java.io.IOException;
    import java.net.Socket;
    
    public class ServerConversation extends Communication {
    	
    	//未来要生成唯一的Id所需要的客户端的ip地址
    	private String ip;
    	
    	//每个服务器会话端都需要唯一的ID
    	private String id;
    	
    	//把Server当作成员,以便调用其中的方法
    	private Server server;
    	
    	String getId() {
    		return this.id;
    	}
    	
    	String getIp() {
    		return this.ip;
    	}
    	
    	void setId(String id) {
    		this.id = id;
    	}
    
    	protected ServerConversation(Socket socket, Server server) throws IOException {
    		super(socket);
    		this.server = server;
    		//根据连接socket得到客户端的ip地址
    		this.ip = socket.getInetAddress().getHostAddress();
    	}
    	
    	/**
    	 * 为每个ServerConversation产生一个唯一的id
    	 * 生成ID后还要发给对应的ClientConversation
    	 */
    	void createClientId() {
    		//每连接上一个客户端,为其的ServeerConversation生成一个唯一的ID
    		//(ip地址 +当前时间毫秒)的hashCode是很难被破解的
    		this.id = String.valueOf((this.ip + System.currentTimeMillis()).hashCode());
    		
    		send(new NetMessage()
    				.setCommand(ENetCommand.ID)
    				.setSource(Server.SERVER)
    				.setTarget(id));
    	}
    	
    	/**
    	 * 告知用户已经满员,拒绝连接
    	 */
    	void OutOfRoom() {
    		send(new NetMessage()
    				.setCommand(ENetCommand.OUT_OF_ROOM)
    				.setSource(Server.SERVER));
    		//发送给ClientConversation后断开ServerConversation的连接
    		close(this.dis, this.dos, this.socket);
    	}
    	
    	/**
    	 * 处理强制宕机
    	 * 即给所有在线的客户端发出提示
    	 * 并关闭连接
    	 */
    	void forceDown() {
    		send(new NetMessage()
    				.setCommand(ENetCommand.FORCEDOWN));
    		
    		close(this.dis, this.dos, this.socket);
    	}
    	
    	
    	
    	
    	/**
    	 * 这里的toOne是从ServerConversation发给ClientConversation的内部工具
    	 */
    	void toOne(String sourceId, String message) {
    		send(new NetMessage()
    				.setCommand(ENetCommand.TO_ONE)
    				.setSource(sourceId)
    				.setTarget(id)
    				.setMessage(message));
    	}
    	
    	/**
    	 * 这里的toOther是由ServerConversation发给ClientConversation的内部工具
    	 * 即从点到点的发送,但这个方法将被Server内的toOther调用,完成群发功能
    	 */
    	void toOther(String sourceId, String message) {
    		send(new NetMessage()
    				.setCommand(ENetCommand.TO_OTHER)
    				.setSource(sourceId)
    				.setTarget(id)
    				.setMessage(message));
    	}
    
    	
    	/**
    	 * 处理客户端异常掉线 
    	 */
    	@Override
    	public void peerAbnormalDrop() {
    		this.server.clientOffLine(id);
    		this.server.speakOut("客户端"+ ip + "," + id +"异常掉线");
    	}
    	
    	
    	/**
    	 * 服务器主动断开与某个客户端的连接
    	 */
    	void killClient(String reason) {
    		send(new NetMessage()
    				.setCommand(ENetCommand.KILL_CLIENT)
    				.setMessage(reason));
    		this.server.clientOffLine(id);
    		close(this.dis, this.dos, this.socket);
    		this.server.speakOut("客户端" + id + ip + reason + "被服务器下线");
    	}
    	
    	
    	
    	/**
    	 * 处理来自客户端的网络信息
    	 * 这些信息都是由ClientConversation传来的
    	 */
    	@Override
    	public void dealNetMessage(NetMessage netMessage) {
    		ENetCommand command = netMessage.getCommand();
    		//对于从客户端接收到的信息,调用应用层的API来处理
    		//所以要将Server当作ServerConversation的一个成员
    		//以便调用其中的方法
    		switch(command) {
    		//服务器会话层接收到客户端会话层传来的To_One命令,则调用Server中的toOne方法处理该消息
    		//应用层找到ToOne的目标target,即目标的ServerConversation
    		//再调用目标ServerConversation内的toOne方法,将信息传递给目标ClientConversation
    		case TO_ONE:
    			this.server.toOne(netMessage.getSource(), netMessage.getTarget(), netMessage.getMessage());
    			break;
    		//服务器会话层收到来自客户端会话层的OffLine命令,调用Server中的clientOffLine()方法
    		//直接从会话池移除这个客户端的ServerConversation
    		//并关闭本次连接
    		case OFFLINE:
    			this.server.clientOffLine(id);
    			this.server.speakOut("客户端" + ip + "," + id +"下线");
    			close(this.dis, this.dos, this.socket);
    			break;
    		//群发一个消息,需要serverConversation把消息上交给掌握了
    		//会话池的Server来处理,id就是发送者,这里就是发送源
    		case TO_OTHER:
    			this.server.toOther(id, netMessage.getMessage());
    			break;
    		case MESSAGE_TO_SERVER:
    		//这个信息是客户端发给服务器的,应该像服务器接收消息抛给APP层一样
    		//这里也需要交给服务器APP层来完成,创建接口即可
    			this.server.messageFromClient(id, netMessage.getMessage());
    			break;
    		default:
    			break;
    		}
    
    	}
    
    }
    

    3 广播与侦听 ISpeaker接口,IListener接口

    广播接口:
    在这里插入图片描述

    听众接口:
    在这里插入图片描述

    P5 客户端会话层

    1 客户端会话层 ClientConversation类

    package com.mec.csframework.core;
    
    import java.io.IOException;
    import java.net.Socket;
    
    public class ClientConversation extends Communication {
    	
    	//将Client作为成员,以便调用其中处理特殊情况的方法
    	private Client client;
    	
    	//这里的ID应该是当客户端发起连接时
    	//服务器侦听到并确认本次连接合法时,
    	//先为该客户端的ServerConversation生成一个ID
    	//而ClientConversation的ID应该与它对应的ServerConversation的ID是一样的
    	private String id;
    	
    	String getId() {
    		return this.id;
    	}
    	
    	
    	public ClientConversation(Socket socket, Client client) throws IOException {
    		super(socket);
    		this.client = client;
    	}
    	
    	/**
    	 * 服务器异常掉线处理
    	 */
    	@Override
    	public void peerAbnormalDrop() {
    		this.client.getClientAction().serverAbnormalDrop();
    	}
    	
    	/**
    	 * 这里的toOne是将信息从客户端发给服务器的工具
    	 */
    	void toOne(String targetId, String message) {
    		send(new NetMessage()
    				.setCommand(ENetCommand.TO_ONE)
    				.setSource(id)
    				.setTarget(targetId)
    				.setMessage(message));
    	}
    	
    	
    	/**
    	 * 这里的toOther是APP要调用的API的真正实现工具
    	 */
    	void toOther(String message) {
    		send(new NetMessage()
    				.setCommand(ENetCommand.TO_OTHER)
    				.setSource(id)
    				.setTarget(Server.SERVER)
    				.setMessage(message));
    	}
    	
    	/**
    	 * 实现由客户端向服务器发送信息的方法
    	 */
    	void messageToServer(String message) {
    		send(new NetMessage()
    				.setCommand(ENetCommand.MESSAGE_TO_SERVER)
    				.setSource(id)
    				.setTarget(Server.SERVER)
    				.setMessage(message));
    	}
    	
    	
    	
    	/**
    	 * 这里ClientConversation的offLine下线方法被Client调用
    	 * clientConversation发送下线消息给为它服务的ServerConversation
    	 * 这个ServerConversation收到OFF_LINE消息后将自己从会话池中移除
    	 */
    	void offLine() {
    		send(new NetMessage()
    				.setCommand(ENetCommand.OFFLINE));
    		close(this.dis, this.dos, this.socket);
    	}
    
    	
    	
    	/**
    	 * 处理来自服务器的网络信息
    	 * 根据传来的信息,分解信息中的信令
    	 * 来做出各种信息的应对
    	 * 这些消息全部是ServerConversation传来的
    	 */
    	@Override
    	public void dealNetMessage(NetMessage netMessage) {
    		ENetCommand command = netMessage.getCommand();
    		switch(command) {
    		case OUT_OF_ROOM:
    			//对于从服务器接收到的Out_Of_Room信息应该由APP层处理
    			//所以要将Client当作ClientConversation的一个成员
    			//以便调用其中的方法
    			this.client.getClientAction().serverOutOfRoom();
    			close(this.dis, this.dos, this.socket);
    			break;
    		case ID:
    			//接收生成的ID并同步设置为自己的ID
    			this.id = netMessage.getTarget();
    			break;
    		case TO_ONE:
    			//接收到ServerConversation传来的toOne信息
    			//这个信息的处理应该由APP层处理
    			this.client.getClientAction().toOne(netMessage.getSource(), netMessage.getMessage());
    			break;
    		case TO_OTHER:
    			//接收到ServerConversation传来的toOther信息
    			//这个信息的处理交给APP层
    			this.client.getClientAction().toOne(netMessage.getSource(), netMessage.getMessage());
    			break;
    		case FORCEDOWN:
    			//接收到ServerConversation传来的ForceDown信息
    			//这个信息交给APP层处理
    			this.client.getClientAction().serverForceDown();
    			close(this.dis, this.dos, this.socket);
    			break;
    		case KILL_CLIENT:
    			//接收到ServerCoversation传来的KillClient信息
    			//这个信息交给APP层处理
    			this.client.getClientAction().killByServer(netMessage.getMessage());
    			close(this.dis, this.dos, this.socket);
    			break;
    		default:
    			break;	
    		}
    
    	}
    
    }
    
    
    展开全文
  • 会话层的功能 会话层的主要功能是在两个节点间建立、维护和释放面向用户的连接,并对会话进行管理和控制,保证会话数据可靠传送。在会话层和传输层我们都提到了连接,那么会话连接和传输连接到底有什么区别呢?假 ...

    会话层的功能

    会话层的主要功能是在两个节点间建立、维护和释放面向用户的连接,并对会话进行管理和控制,保证会话数据可靠传送。在会话层和传输层我们都提到了连接,那么会话连接和传输连接到底有什么区别呢?
    假 设你对你的秘书说,给琼斯先生打个电话,这时你相当于会话层,而秘书相当于传输层。你的请求就相当于请求一个会话。你提出建立连接的要求,但不必自己动手 查找电话号码、拨号等。秘书着手打电话,开始建立传输连接。当拨号成功,对方拎起话筒,传输连接就建立起来了。然后,你接过电话,此时会话层(连接)建立 成功。

    会话连接和传输连接之间有三种关系:一对一关系,即一个会话连接对应一个传输连接;一对多关系,一个会话连接对应多个传输连接;多 对一关系,多个会话连接对应一个传输关系,好比打电话,一个人讲完后可以换另一个人讲话,而不必让电信局知道换了人讲话。会话过程中,会话层需要决定到底 使用全双工通信还是半双工通信。如果采用全双工通信,则会话层在对话管理中要做的工作就很少;如果采用半双工通信,会话层则通过一计算机网络技术2个数据 令牌来协调会话,保证每次只有一个用户能够传输数据。当会话层建立一个会话时,先让一个用户得到令牌。只有获得令牌的用户才有权进行发送。如果接收方想要 发送数据,可以请求获得令牌。由发送方决定何时放弃。一旦得到令牌,接收方就转变为发送方。当我们进行大量的数据传输时,例如你正在下载一个100M 的文件,当下载到95M 时,网络断线了,这时怎么办?是否需要重头再传?为了解决这个问题,会话层提供了同步服务,通过在数据流中定义检查点(Checkpoint)来把会话分 割成明显的会话单元。当网络故障出现时,从最后一个检查点开始重传数据。常见的会话层协议有:结构化查询语言(SQL);远程进程呼叫(RPC);X- windows 系统;AppleTalk 会话协议;数字网络结构会话控制协议(DNA SCP)等。


     表示层的功能

    表示层主要是负责数据格式的转换,压缩与解压缩,加密与解密。

    OSI 模型中,表示层以下的各层主要负责数据在网络中传输时不要出错。但数据的传输没有出错,并不代表数据所表示的信息不会出错。例如你想下午两点从杭州出发去 上海,于是你对上海的朋友说,“我下午两点来”,可是你的朋友却理解为两点钟到达上海。所以这句话虽然没有听错,却因为不同的理解,产生了完成不同的结 果。

    表示层就专门负责这些有关网络中计算机信息表示方式的问题。表示层负责在不同的数据格式之间进行转换操作,以实现不同计算机系统间的信息交换。 两台计算机之间的信息交换除了编码外,还包括数组、浮点数、记录、图像、声音等多种数据结构,表示层用抽象的方式来定义交换中使用的数据结构,并且在计算 机内部表示法和网络的标准表示法之间进行转换。

    表示层还负责数据的加密,以在数据的传输过程对其进行保护。数据在发送端被加密,在接收端解密。使用加密密钥来对数据进行加密和解密。表示层还负责文件的压缩,通过算法来压缩文件的大小,降低传输费用。

     

     

    应用层

    应用层是网络体系中最高的一层,也是唯一面向用户的一层,应用层将为用户提供常用的应用程序,并实现网络服务的各种功能。常用的电子邮件、上网浏览等网络服务,都是应用层的程序。

    应用层主要是面对用户访问网络的。主要有一些应用程序,如:DNS,FTP,E-mail,Telnet,HTTP。

    转载于:https://www.cnblogs.com/snowhumen/p/3152104.html

    展开全文
  • 应用层、表示层、会话层相关知识

    千次阅读 2015-10-18 10:20:15
    会话层的功能  会话层的主要功能是在两个节点间建立、维护和释放面向用户的连接,并对会话进行管理和控制,保证会话数据可靠传送。  在会话层和传输层我们都提到了连接,那么会话连接和传输连接到底有什么区别呢...

    会话层的功能

       会话层的主要功能是在两个节点间建立、维护和释放面向用户的连接,并对会话进行管理和控制,保证会话数据可靠传送。

       会话层,表示层,应用层在会话层和传输层我们都提到了连接,那么会话连接和传输连接到底有什么区别呢?


          假设你对你的秘书说,给琼斯先生打个电话,这时你相当于会话层,而秘书相当于传输层。你的请求就相当于请求一个会话。你提出建立连接的要求,但不必自己动手查找电话号码、拨号等。秘书着手打电话,开始建立传输连接。当拨号成功,对方拎起话筒,传输连接就建立起来了。然后,你接过电话,此时会话层(连接)建立成功。

    会话连接和传输连接之间有三种关系:一对一关系,即一个会话连接对应一个传输连接;一对多关系,一个会话连接对应多个传输连接;多对一关系,多个会话连接对应一个传输关系,好比打电话,一个人讲完后可以换另一个人讲话,而不必让电信局知道换了人讲话。会话过程中,会话层需要决定到底使用全双工通信还是半双工通信。如果采用全双工通信,则会话层在对话管理中要做的工作就很少;如果采用半双工通信,会话层则通过一计算机网络技术2个数据令牌来协调会话,保证每次只有一个用户能够传输数据。当会话层建立一个会话时,先让一个用户得到令牌。只有获得令牌的用户才有权进行发送。如果接收方想要发送数据,可以请求获得令牌。由发送方决定何时放弃。一旦得到令牌,接收方就转变为发送方。当我们进行大量的数据传输时,例如你正在下载一个100M 的文件,当下载到95M 时,网络断线了,这时怎么办?是否需要重头再传?为了解决这个问题,会话层提供了同步服务,通过在数据流中定义检查点(Checkpoint)来把会话分割成明显的会话单元。当网络故障出现时,从最后一个检查点开始重传数据。常见的会话层协议有:结构化查询语言(SQL);远程进程呼叫(RPC);X-windows 系统;AppleTalk 会话协议;数字网络结构会话控制协议(DNA SCP)等。


    表示层的功能

    会话层,表示层,应用层会话层,表示层,应用层表示层主要是负责数据格式的转换,压缩与解压缩,加密与解密。

          OSI 模型中,表示层以下的各层主要负责数据在网络中传输时不要出错。但数据的传输没有出错,并不代表数据所表示的信息不会出错。例如你想下午两点从杭州出发去上海,于是你对上海的朋友说,“我下午两点来”,可是你的朋友却理解为两点钟到达上海。所以这句话虽然没有听错,却因为不同的理解,产生了完成不同的结果。

        表示层就专门负责这些有关网络中计算机信息表示方式的问题。表示层负责在不同的数据格式之间进行转换操作,以实现不同计算机系统间的信息交换。两台计算机之间的信息交换除了编码外,还包括数组、浮点数、记录、图像、声音等多种数据结构,表示层用抽象的方式来定义交换中使用的数据结构,并且在计算机内部表示法和网络的标准表示法之间进行转换。

        表示层还负责数据的加密,以在数据的传输过程对其进行保护。数据在发送端被加密,在接收端解密。使用加密密钥来对数据进行加密和解密。表示层还负责文件的压缩,通过算法来压缩文件的大小,降低传输费用。

      

     应用层

    应用层是网络体系中最高的一层,也是唯一面向用户的一层,应用层将为用户提供常用的应用程序,并实现网络服务的各种功能。常用的电子邮件、上网浏览等网络服务,都是应用层的程序。

    应用层主要是面对用户访问网络的。主要有一些应用程序,会话层,表示层,应用层如:DNS,FTP,E-mail,Telnet,HTTP

    OSI模型的总结

    OSI模型上层(会话层,表示层,应用层)处理用户接口、数据格式、应用访问。

    OSI模型下层(物理层,数据链路层,网络层,传输层)处理数据在网络介质中的传送。

    展开全文
  • 常见的文件传输协议:FTP、TFTP、SSH、SCP 一、FTP(英文:File Transfer Protocol,缩写:FTP) 1、概念 FTP是在网络传输文件的应用协议,基于TCP连接,使用客户/服务器模式。 对于ftp服务器来说,常用的...

    常见的文件传输协议:FTP、TFTP、SSH、SCP

    一、FTP(英文:File Transfer Protocol,缩写:FTP)

    1、概念
    FTP是在网络层传输文件的应用层协议,基于TCP连接,使用客户/服务器模式。
    对于ftp服务器来说,常用的端口有两个,一个是tcp端口21,此端口经常用于连接,另一个是tcp端口号20, 此端口经常用于传输数据。
    在这里插入图片描述

    2、FTP支持两种模式:

    1. Standard (PORT方式,主动方式),
      客户端与服务器的 21端口建立连接,用来发送命令,客户端获取数据时通过端口21发送PORT命令。PORT命令包含了客户端接收数据的端口号。传送数据时,服务器端通过TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。
    2. Passive (PASV,被动方式)。
      建立控制通道和Port模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。

    缺点:FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。

    3、命令参数

    ftp> ascii # 设定以ASCII方式传送文件(缺省值)
    ftp> bell # 每完成一次文件传送,报警提示.
    ftp> binary # 设定以二进制方式传送文件.
    ftp> bye # 终止主机FTP进程,并退出FTP管理方式.
    ftp> case # 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母.
    ftp> cd # 同UNIX的CD命令.
    ftp> cdup # 返回上一级目录.
    ftp> chmod # 改变远端主机的文件权限.
    ftp> close # 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除.
    ftp> delete # 删除远端主机中的文件.
    ftp> dir [remote-directory] [local-file] # 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件.
    ftp> get [remote-file] [local-file] # 从远端主机中传送至本地主机中.
    ftp> help [command] # 输出命令的解释.
    ftp> lcd # 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录.
    ftp> ls [remote-directory] [local-file] # 同DIR.
    ftp> macdef # 定义宏命令.
    ftp> mdelete [remote-files] # 删除一批文件.
    ftp> mget [remote-files] # 从远端主机接收一批文件至本地主机.
    ftp> mkdir directory-name # 在远端主机中建立目录.
    ftp> mput local-files # 将本地主机中一批文件传送至远端主机.
    ftp> open host [port] # 重新建立一个新的连接.
    ftp> prompt # 交互提示模式.
    ftp> put local-file [remote-file] # 将本地一个文件传送至远端主机中.
    ftp> pwd # 列出当前远端主机目录.
    ftp> quit # 同BYE.
    ftp> recv remote-file [local-file] # 同GET.
    ftp> rename [from] [to] # 改变远端主机中的文件名.
    ftp> rmdir directory-name # 删除远端主机中的目录.
    ftp> send local-file [remote-file] # 同PUT.
    ftp> status # 显示当前FTP的状态.
    ftp> system # 显示远端主机系统类型.
    ftp> user user-name [password] [account] # 重新以别的用户名登录远端主机.
    ftp> ? [command] # 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。
    ftp> ! # 从 ftp 子系统退出到外壳。
    

    4、常用命令
    下载: get readme.txt # 下载 readme.txt 文件
    上传: put readme.txt # 上传文件

    二、TFTP (Trivial File Transfer Protocol,简单文件传输协议)

    1、概念
    TFTP是TCP/IP协议族中在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。

    2、TFTP协议的优势
    (1)TFTP能够用于那些有UDP而无TCP的环境;
    (2)TFTP代码所占的内存要比FTP小。

    3、TFTP协议与FTP协议的不同点
    (1)TFTP协议不需要验证客户端的权限,FTP需要进行客户端验证;
    (2)TFTP协议一般多用于局域网以及远程UNIX计算机中,而常见的FTP协议则多用于互联网中;
    (3)FTP客户与服务器间的通信使用TCP,而TFTP客户与服务器间的通信使用的是UDP;
    (4)TFTP只支持文件传输。也就是说,TFTP不支持交互,而且没有一个庞大的命令集。最为重要的是,TFTP不允许用户列出目录内容或者与服务器协商来决定哪些是可得到的文件。

    4、命令参数
    -l 是local的缩写,后跟存在于Client的源文件名,或下载Client后 重命名的文件名。
    -r 是remote的缩写,后跟Server即PC机tftp服务器根目录中的源文 件名,或上传Server后重命名后的文件名。
    -g 是get的缩写,下载文件时用,
    -p 是put的缩写,上传文件时用,

    5、常用命令
    下载东西: tftp -g -r 1.txt -l 2.txt 192.168.1.1
    上传东西:tftp -p -r 3.txt -l 2.txt 192.168.1.1

    三、SSH(Secure Shell)

    1、概念
    SSH协议是基于应用层的协议,为远程登录会话和其他网络服务提供安全性的协议。
    传统协议(ftp、telnet等)等都是非安全的协议,其工作机制很容易泄露数据。而SSH在传输过程中的数据是加密的,安全性更高。
    其实ssh协议的主要功能使用并非是在传输文件,而是远程登陆,因为ssh基于非对称加密方法的,服务器和客户端都会生成自己的公钥和私钥,私钥仅有自己能够获取,只需要给予对方公钥,而数据解密需要公钥和私钥同时配合,所以,该协议很大程度上保证了数据的安全性。
    至于信息安全方面,我这里就不做介绍了,等有时间再整理一下,发布出来。

    2、特点
    ssh协议最大的特点就是安全,这里对ssh的介绍并不是介绍其传输文件的功能,而是以其安全性能高的特点来引申SCP协议。

    四、SCP (Secure Copy协议)

    1、概念
    scp用于Linux之间复制文件和目录。基于ssh登陆进行安全的远程文件拷贝命令。SSH连接隧道是安全的,因而基于SCP协议的文件传输是安全的。
    SCP协议分为SCP Client和SCP Server。无论是server端还是client端,都支持上传和下载的功能。

    2、命令参数

    -1: 强制scp命令使用协议ssh1
    -2: 强制scp命令使用协议ssh2
    -4: 强制scp命令只使用IPv4寻址
    -6: 强制scp命令只使用IPv6寻址
    -B: 使用批处理模式(传输过程中不询问传输口令或短语)
    -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
    -p	 保留原文件的修改时间,访问时间和访问权限。
    -q: 不显示传输进度条。
    -r: 递归复制整个目录。
    -v: 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
    -c cipher: 		以cipher将数据传输进行加密,这个选项将直接传递给ssh。
    -F ssh_config:	 	指定一个替代的ssh配置文件,此参数直接传递给ssh。
    -i identity_file: 	从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
    -l limit: 			限定用户所能使用的带宽,以Kbit/s为单位。
    -o ssh_option:		如果习惯于使用ssh_config(5)中的参数传递方式,
    -P port:			注意是大写的P, port是指定数据传输用到的端口号
    -S program:		指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
    

    3、常用命令
    命令格式: scp srcusername@srcip:srcpath/srcfile dstusername@dstip:dstpath/dstfile
    其中可以根据上传和下载的方式省略掉其中一各参数,具体如下:
    上传:scp -r local_dir username@servername:remote_dir
    下载:scp username@servername:/path/filename /var/www/local_dir

    展开全文
  • 会话层的功能会话层的主要功能是在两个节点间建立、维护和释放面向用户的连接,并对会话进行管理和控制,保证会话数据可靠传送。在会话层和传输层我们都提到了连接,那么会话连接和传输连接到底有什么区别呢?假设你...
  • ssh和scp

    2018-07-01 09:24:37
    Linux常用服务器构建 ssh 和 scpSSH为Secure Shell的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用和传输基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络...
  • Linux构建-ssh和scp

    万次阅读 2018-07-09 20:45:11
    Linux常用服务器构建-ssh和scp   1.ssh &lt;1&gt;ssh介绍 SSH为Secure Shell的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用和传输基础上的安全协议。 SSH是...
  • linux下 scp 和 ssh 命令

    2021-08-21 22:18:24
    scp、ssh、sshpass命令 scp 命令 Linux scp 命令用于Linux之间复制文件和目录。 scp 是secure copy 的缩写,scp 是linux系统下基于ssh登录进行安全的远程文件拷贝命令。scp是加密的,rcp是不加密的,scp是rcp的加强...
  • scp命令及后台运行

    2020-02-19 16:22:18
    scp[可选参数]file_sourcefile_target 如:scp-r *test@192.168.222.999:/test_k --将当前目录下所有的资料scp到999主机的test_k 目录(-r 上传多层目录) ctrl+z //挂起当前任务 jobs //查看任务,返回任务编号n...
  • 为建立在应用和传输基础上的安全协议。 SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。 利用SSH协议可以有效防止远程管理过程中的信息泄露...
  • 3_Linux命令scp用于远程文件的拷贝(上传和下载)(20190105)文章目录1、SCP简介2、SCP使用2.1.命令格式:2.2.命令功能:2.3.命令参数:3、使用实例: scp: secure copy 1、SCP简介 scp是secure copy的...
  • 构建SSH和SCP

    2017-12-14 15:43:33
    SSH为建立在应用和传输基础上的安全协议。 SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之前进行资料拷贝。 安装SSH 使用SSH服务,需要安装相应的服务器与...
  • Linux常用传输协议ssh 与 scp 1,SSH ssh介绍 SSH为Secure Shell的缩写,由 IETF 的网络工作小组(Network Working Group)所制定; SSH 为建立在应用和传输基础上的安全协议。 SSH是目前较可靠,专为...
  • ftp、sftp、scp、ssh、openssh

    千次阅读 2016-04-24 21:29:07
    FTP(File Transfer Protocol):是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建...
  • SSH 为 Secure Shell 的缩写,是建立在应用基础上的安全协议。SSH 是目前较为可靠,转为远程登录会话和其他网络服务提供的安全协议。SSH 常用于远程登录,远程拷贝文件等。使用 SSH 连接远程服务器,服务器器端要...
  • ubuntu 上 SSH scp 技巧

    2019-04-02 17:42:00
    是一项创建在应用和传输基础上的安全协议,为计算机上的 Shell(壳)提供安全的传输和使用环境。也是专为远程登录会话和其他网络服务提供安全性的协议。它能够有效防止远程管理过程中的信息泄露问题。通过 SSH...
  • SSH 为建立在应用和传输基础上的安全协议。 SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。 利用SSH协议可以有效防止远程管理过程中的信息泄露...
  • Linux协议栈之BSD和INET socket层(一)Linux的BSD和INET socket层分别对应于ISO的表示层和会话层,其中有两个比较重要的数据结构:struct socket{socket_statestate;unsigned longflags;struct proto_ops*ops;struct ...
  • Linux常用服务器构建-ssh和scp ssh介绍 SSH为Secure Shell的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用和传输基础上的安全协议。SSH是目前较可靠,专为远程登录会话和...
  • FTP(File Transfer Protocol):是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建...
  • SSH 为建立在应用和传输基础上的安全协议。 SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。 win10链接ubuntu 常用于远程登录,以及用户之间进行资料拷贝。 利用SSH协议可以有效防止远程...
  • –cut-dirs=NUMBER 忽略 NUMBER远程目录 HTTP 选项参数 : –http-user=USER 设定HTTP用户名为 USER. –http-passwd=PASS 设定http密码为 PASS -C, –cache=on/off 允许/不允许服务器端的数据缓存 (一般...
  • Linux下Telnet、FTP、SSH、SFTP、SCP

    千次阅读 2013-03-20 09:12:22
    【Telnet】著名的终端访问协议,传统的网络服务程序...【SSH】Secure Shell 的缩写,是建立在传输基础上的安全协议,它本身属于应用,同时可以为应用提供安全传输服务。 SSH 是目前较可靠,专为远程登录会话和其
  • SSH、SCP和SFTP都是SSH软件包的组成部分。SSH 是 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用基础上的安全协议。SSH 是目前广泛采用的安全登录协议,专为远程登录...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,113
精华内容 1,645
关键字:

scp会话层