客户端服务器

session as 会员卡(转)

懵懂的女人 提交于 2020-01-18 22:02:03
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。 保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于SEEESIONID,而。比如weblogic对于web应用程序生成的cookie,JSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,它的名字就是JSESSIONID。 由于cookie可以被人为的禁止

TCP的三次握手与四次挥手(详解+动图)

梦想的初衷 提交于 2020-01-18 05:05:01
背景描述 通过上一篇中网络模型中的 IP层的介绍 ,我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机, 但是并没有交付给主机的具体应用进程 。而 端到端的通信 才应该是应用进程之间的通信。 UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任何确认。虽然UDP不提供可靠交付,但是正是因为这样,省去和很多的开销,使得它的速度比较快,比如一些对实时性要求较高的服务,就常常使用的是UDP。对应的应用层的协议主要有 DNS,TFTP,DHCP,SNMP,NFS 等。 TCP,提供面向连接的服务,在传送数据之前必须先建立连接,数据传送完成后要释放连接。因此TCP是一种可靠的的运输服务,但是正因为这样,不可避免的增加了许多的开销,比如确认,流量控制等。对应的应用层的协议主要有 SMTP,TELNET,HTTP,FTP 等。 常用的熟知端口号 应用程序 FTP TFTP TELNET SMTP DNS HTTP SSH MYSQL 熟知端口 21,20 69 23 25 53 80 22 3306 传输层协议 TCP UDP TCP TCP UDP TCP TCP TCP TCP的概述 TCP把连接作为最基本的对象

面试官常问的Nginx的几个问题

99封情书 提交于 2020-01-17 21:38:14
1.什么是Nginx? Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器 目前使用的最多的web服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用 2.为什么要用Nginx? 优点: * 跨平台、配置简单 * 非阻塞、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发 * 内存消耗小:开启10个nginx才占150M内存 成本低廉:开源 * 内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。 * 节省宽带:支持GZIP压缩,可以添加浏览器本地缓存 * 稳定性高:宕机的概率非常小 * master/worker结构:一个master进程,生成一个或者多个worker进程 * 接收用户请求是异步的:浏览器将请求发送到nginx服务器,它先将用户请求全部接收下来,再一次性发送给后端web服务器,极大减轻了web服务器的压力 * 一边接收web服务器的返回数据,一边发送给浏览器客户端 * 网络依赖性比较低,只要ping通就可以负载均衡 * 可以有多台nginx服务器 * 事件驱动:通信机制采用epoll模型 3.为什么Nginx性能这么高?

.Net Remoting系列专题之一:.Net Remoting基础篇

我们两清 提交于 2020-01-17 19:04:44
Microsoft .Net Remoting系列专题之一 一、Remoting基础 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式。从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下。Microsoft® .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用Remoting的原因。为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如果不采用进程间通信(RPC)机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统对应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进行通信,即穿越边界。 在Remoting中是通过通道(channel)来实现两个应用程序域之间对象的通信的。如图所示: 首先,客户端通过Remoting,访问通道以获得服务端对象,再通过代理解析为客户端对象。这就提供一种可能性,即以服务的方式来发布服务器对象。远程对象代码可以运行在服务器上(如服务器激活的对象和客户端激活的对象),然后客户端再通过Remoting连接服务器,获得该服务对象并通过序列化在客户端运行。 在Remoting中,对于要传递的对象

unity之network客户端向服务器发送消息【Command】方法详解

孤街醉人 提交于 2020-01-17 18:09:49
如果是纯粹是聊天室功能则可以使用NetworkView的方法来进行,简单实用。 如果不是聊天室功能而是要传递数据给服务器,同时为了以后更多功能的拓展性,还是应该用network manager来实现。 无论是哪种方式,unet里的的一个特点就是:服务器端是会包括客户端的。换言之客户端和服务器是在同一个场景里开发的 。。。此处的包括二字何解?就是服务器端会自动生成一个player(之前很多文章都在讲unet的player与服务器同步的问题,那是入门级别的东西,多看看就知道是怎么回事)。这个player身上具备的属性就是客户端的玩家具备的属性。当然这个player只是代指客户端而已。实际可以理解为在networkmanager里自动生成一个客户端。 如果是做局域网的传输,在networkmanager里一定要注意不要勾选use websockets这一项。 本文案例为局域网,需求是客户端进行考核之后,客户端的系统逻辑会判断出分数,然后将分数传给服务器。而此处只说如何从客户端把分数传给服务器这一功能。 开始搞起: 新建一个场景,内容network(空物体)、client(红色的cube)、UI的Text显示文本(需要把客户端传来的值显示出来)。 然后在network物体上添加上networkmananger组件和managerHUD组件。不需要其他的另外的脚本了。

传输协议三

落爺英雄遲暮 提交于 2020-01-17 12:01:55
五、建立 TCP客户端 讨论了套接字类的功能后,我们将分析一个完整的 TCP客户端程序。此处我们将看到的客户端程序是一个daytime客户端,它连接到一个daytime服务器程序以读取当前的日期和时间。建立套接字连接并读取信息是一个相当简单的过程,只需要少量的代码。 默认情况下 daytime服务运行在13端口上。并非每台计算机都运行了daytime服务器程序,但是Unix服务器是客户端运行的很好的系统。如果你没有访问Unix服务器的权限,在第七部分我们给出了TCP daytime服务器程序代码--有了这段代码客户端就可以运行了。 DaytimeClient的代码 import java.net.* import java.io.*; public class DaytimeClient { public static final int SERVICE_PORT = 13; public static void main(String args[]) { // 检查主机名称参数 if (args.length != 1) { System.out.println ("Syntax - DaytimeClient host"); return; } // 获取服务器程序的主机名称 String hostname = args[0]; try { //

HTTP和HTTPS协议的区别

无人久伴 提交于 2020-01-17 07:38:46
HTTP与HTTPS的区别   超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。   为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。 一、HTTP和HTTPS的基本概念   HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。   HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。   HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。 二、HTTP与HTTPS有什么区别?   HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全

zookeeper感知服务器节点动态上下线案例

半城伤御伤魂 提交于 2020-01-17 05:30:17
大家好,我是AC,下面是关于zookeeper的一个案例,供练习 关于zookeeper,请看上一篇文章 文章目录 (1)服务器端代码 (2)客户端代码 1)需求:某分布式系统中,主节点可以有多台,可以动态上下线,任意一台客户端都能实时感知到主节点服务器的上下线 2)需求分析 3)具体实现: (0)先在集群上创建/servers节点 [ zk : localhost : 2181 ( CONNECTED ) 10 ] create / servers "servers" Created /servers (1)服务器端代码 package com . bigdata . anli ; import org . apache . zookeeper . CreateMode ; import org . apache . zookeeper . WatchedEvent ; import org . apache . zookeeper . Watcher ; import org . apache . zookeeper . ZooDefs . Ids ; import org . apache . zookeeper . ZooKeeper ; public class RegistServer { private ZooKeeper client = null ; String

netty 4.x用户使用指南

旧时模样 提交于 2020-01-16 23:33:28
引言 问题   现在我们使用通用的应用程序或库来相互通信。 例如,我们经常使用HTTP客户机从web服务器检索信息,并通过web服务调用远程过程调用。 然而,通用协议或其实现有时不能很好地进行扩展。 这就像我们不使用通用HTTP服务器来交换巨大的文件、电子邮件消息和近乎实时的消息(如财务信息和多人游戏数据)一样。 所需要的是一个高度优化的协议实现,专门用于一个特殊目的。 例如,您可能希望实现一个针对基于ajax的聊天应用程序、媒体流或大文件传输进行优化的HTTP服务器。 您甚至可以设计和实现一个完全根据您的需要量身定制的全新协议。 另一个不可避免的情况是,您必须处理遗留的专有协议,以确保与旧系统的互操作性。 在这种情况下,重要的是在不牺牲结果应用程序的稳定性和性能的情况下,我们能以多快的速度实现该协议。 解决方案   Netty项目旨在提供异步事件驱动的网络应用程序框架和工具,以快速开发可维护的高性能·高可伸缩性协议服务器和客户端。   换句话说,Netty是一个NIO客户端服务器框架,它支持协议服务器和客户端等网络应用程序的快速轻松开发。它极大地简化和简化了TCP和UDP套接字服务器开发等网络编程。   “快速和简单”并不意味着最终的应用程序将遭受可维护性或性能问题的影响。Netty是根据从许多协议(如FTP、SMTP、HTTP以及各种基于二进制和文本的遗留协议

长短连接,长短轮询

烂漫一生 提交于 2020-01-16 18:36:44
长短连接 网络上说HTTP分为长连接和短连接,其实本质上是说的TCP连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才有真正的长连接和短连接这一说。 HTTP协议没有长短连接这一说,HTTP协议是基于请求/响应模式的,因此只要服务端给了响应,本次HTTP请求就结束了。 HTTP协议说到底是应用层的协议,而TCP才是真正的传输层协议, 只有负责传输的这一层才需要建立连接 。 实际上,说HTTP请求和HTTP响应会更准确一些,而HTTP请求和HTTP响应,都是通过TCP连接这个通道来回传输的。 第一个问题 是不是只要设置Connection为keep-alive就算是长连接了? 当然是的,但要服务器和客户端都设置。 第二个问题 我们平时用的是不是长连接? 这个也毫无疑问,当然是的。(现在用的基本上都是HTTP1.1协议,你观察一下就会发现,基本上Connection都是keep-alive。而且HTTP协议文档上也提到了,HTTP1.1默认是长连接,也就是默认Connection的值就是keep-alive) 第三个问题 我们大部分都是用的长连接,但是长连接不是一般用于交互比较频繁的应用吗?像我们这种普通的Web应用,比如博客园这种,或者我的个人博客这种,长连接有什么用? 长连接意味着连接会被复用, 既然长连接是指的TCP连接,也就是说复用的是TCP连接