客户端服务器

Java Scoket编程

时光毁灭记忆、已成空白 提交于 2020-01-25 10:23:13
Java Scoket编程 转自http://www.cnblogs.com/futao123/p/5068632.html 爱海滔滔 一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。 而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。 目前较为流行的网络编程模型是客户机/服务器(C/S)结构。 即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提 出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客 户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也 能及时得到服务。 二,两类传输协议: TCP 和 UDP   TCP 是 Tranfer Control Protocol 的 简 称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须 建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时

Netty序章之BIO NIO AIO演变

喜夏-厌秋 提交于 2020-01-25 03:48:15
Netty序章之BIO NIO AIO演变 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发 高性能 、 高可靠 的网络服务器和客户端程序。Netty简化了网络程序的开发,是很多框架和公司都在使用的技术。更是面试的加分项。Netty并非横空出世,它是在BIO,NIO,AIO演变中的产物,是一种NIO框架。而BIO,NIO,AIO更是笔试中要考,面试中要问的技术。也是一个很好的加分项,加分就是加工资,你还在等什么?本章带你细细品味三者的不同! 流程图: 技术:BIO,NIO,AIO 说明:github上有更全的源码。 源码:https://github.com/ITDragonBlog/daydayup/tree/master/Netty/socket-io BIO BIO 全称Block-IO 是一种 阻塞同步 的通信模式。我们常说的Stock IO 一般指的是BIO。是一个比较传统的通信方式, 模式简单 , 使用方便 。但 并发处理能力低 , 通信耗时 , 依赖网速 。 BIO 设计原理: 服务器通过一个Acceptor线程负责监听客户端请求和为每个客户端创建一个新的线程进行链路处理。典型的一请求一应答模式。若客户端数量增多,频繁地创建和销毁线程会给服务器打开很大的压力。后改良为用线程池的方式代替新增线程,被称为伪异步IO。 服务器提供IP地址和监听的端口

资料搜集-JAVA系统的梳理知识11-系统设计

最后都变了- 提交于 2020-01-25 00:52:09
## 1. 认证 (Authentication) 和授权 (Authorization)的区别是什么? 这是一个绝大多数人都会混淆的问题。首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我建议你先先去查一查这两个单词到底该怎么读,他们的具体含义是什么。 说简单点就是: - **认证 (Authentication):** 你是谁。 - **授权 (Authorization):** 你有权限干什么。 稍微正式点(啰嗦点)的说法就是: - **Authentication(认证)** 是验证您的身份的凭据(例如用户名/用户ID和密码),通过这个凭据,系统得以知道你就是你,也就是说系统存在你这个用户。所以,Authentication 被称为身份/用户验证。 - **Authorization(授权)** 发生在 **Authentication(认证)** 之后。授权嘛,光看意思大家应该就明白,它主要掌管我们访问系统的权限。比如有些特定资源只能具有特定权限的人才能访问比如admin,有些对系统资源操作比如删除、添加、更新只能特定人才具有。 这两个一般在我们的系统中被结合在一起使用,目的就是为了保护我们系统的安全性。 ## 2. 什么是Cookie ? Cookie的作用是什么?如何在服务端使用 Cookie ? ### 2.1 什么是Cookie ?

【转帖】HTTPS 详解一:附带最精美详尽的 HTTPS 原理图

孤街醉人 提交于 2020-01-25 00:50:01
HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 https://segmentfault.com/a/1190000021494676 前言 作为一个有追求的程序员,了解行业发展趋势和扩充自己的计算机知识储备都是很有必要的,特别是一些计算机基础方面的内容,就比如本篇文章要讲的计算机网络方面的知识。本文将为大家详细梳理一下 HTTPS 的实现原理。 近年来,随着用户和互联网企业安全意识的提高和 HTTPS 成本的下降,HTTPS 已经越来越普及。很多互联网巨头也在力推 HTTPS,比如谷歌的 Chrome 浏览器在访问 HTTP 网站时会在地址栏显示不安全的提醒,微信要求所有的小程序必须使用 HTTPS 传输协议,苹果也要求所有在 App Store 上架的应用必须采用 HTTPS ,国内外的大部分主流网站也都已迁移至 HTTPS,可见 HTTPS 全面取代 HTTP 只是时间问题。 说了这么多,究竟什么是 HTTPS,它与 HTTP 相比有什么优缺点?其底层原理又是怎么实现的呢?下面就为你一一解答,先来看一下 HTTP 的弊端吧。 1、HTTP 的最大弊端——不安全 HTTP 之所以被 HTTPS 取代,最大的原因就是不安全,至于为什么不安全,看了下面这张图就一目了然了。 图1. HTTP数据传输过程 由图可见,HTTP 在传输数据的过程中,所有的数据都是明文传输

理解TCP三次握手和四次挥手

不羁岁月 提交于 2020-01-24 16:56:31
TCP相关知识 TCP是面向连接的传输层协议,它提供可靠交付的、全双工的、面向字节流的点对点服务。HTTP协议便是基于TCP协议实现的。(虽然作为应用层协议,HTTP协议并没有明确要求必须使用TCP协议作为运输层协议,但是因为HTTP协议对可靠性的的要求,默认HTTP是基于TCP协议的。若是使用UDP这种不可靠的、尽最大努力交付的运传输层协议来实现HTTP的话,那么TCP协议的流量控制、可靠性保障机制等等功能就必须全部放到应用层来实现)而相比网络层更进一步,传输层着眼于应用进程间的通信,而不是网络层的主机间的通讯。我们常见的端口、套接字等概念就是由此而生。(端口代表主机上的一个应用进程、而套接字则是ip地址与端口号的合体,可以在网络范围内唯一确定一个应用进程)TCP协议的可靠传输是通过滑动窗口的方法实现的;拥塞控制则有着慢开始和拥塞避免、快重传和快恢复、RED随机早期检测几种办法。 TCP协议的报文格式 TCP报文段的首部分为 固定部分 和 选项部分 ,固定部分长20byte,而选项部分长度可变。(若整个首部长度不是4byte的整数倍的话,则需要用填充位来填充)在固定首部中,与本文密切相关的是以下几项: seq(序号):TCP连接字节流中每一个字节都会有一个编号,而本字段的值指的是本报文段所发送数据部分第一个字节的序号。 ack(确认号)

前端COOKIE与SESSION的区别

青春壹個敷衍的年華 提交于 2020-01-24 16:25:15
我们在实际生活中总会遇到这样的事情,我们一旦登录(首次输入用户名和密码)某个网站之后,当我们再次访问的时候(只要不关闭浏览器),无需再次登录。而当我们在这个网站浏览一段时间后,它会产生我们浏览的记录,而且有的网站还提供购物车的功能。这些简单实用的功能就是通过Cookie与Session实现的,接下来,让我们一起探讨一下它们是如何运行的。 1、概念 Cookie 有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而 储存在用户本地终端上的数据 (通常经过加密)。 Session Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中, Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间 。以及如果需要的话,可能还有一定的操作空间。 具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。 需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。 2、区别 1

Http协议无状态的理解

ぐ巨炮叔叔 提交于 2020-01-24 15:03:25
Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息。 自己的理解,在asp.net里:每次提交服务器的页面没有任何关系,每次记录在页面的信息下次提交是记不住的,(除了应用本身可能已经存储在全局对象中的所有信息外)在.net里实际就是ViewState,ViewState是asp.net中保存页面信息的基本单位,应用时就是保存在控件隐藏域等中的数据 协议的状态是指下一次传输可以“记住”这次传输信息的能力. http是不会为了下一次连接而维护这次连接所传输的信息的. 无状态是指,当浏览器发送请求给服务器的时候,服务器响应,但是同一个浏览器再发送请求给服务器的时候,他会响应,但是他不知道你就是刚才那个浏览器,简单地说,就是服务器不会去记得你,所以是无状态协议。 而DNS是有状态协议 。 HTTP是一个属于应用层的面向对象的协议,HTTP协议一共有五大特点,1、支持客户/服务器模式;2、简单快速;3、灵活;4、无连接;5、无状态;“无状态”是HTTP协议的主要特点之一,以下为“无状态”的解释。 无状态:是指 协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面

浅谈HTTP的无状态性

混江龙づ霸主 提交于 2020-01-24 15:02:48
HTTP是Hyper Text Transfer Protocol的缩写,顾名思义,这个协议支持着超文本的传输。那么什么是超文本呢?说白了就是使用HTML编写的页面。通常,我们使用客户端浏览器访 问服务器的资源,最常见的URL也是以html为后缀的文件。因此,我们可以说超文本是网络上最主要的资源。 既然HTTP协议的目的在于支持超文本的传输,更加广义一些就是支持资源的传输,那么在客户端浏览器向HTTP服务器发送请求,继而HTTP服务器将相应 的资源发回给客户端这样一个过程中,无论对于客户端还是服务器,都没有必要记录这个过程,因为每一次请求和响应都是相对独立的,就好像你在自动售货机前投 下硬币购买商品一样,谁都不会也不需要记住这样一个交易过程。一般而言,一个URL对应着唯一的超文本,而HTTP服务器也绝对公平公正,不管你是 Michael,还是Jordon,它都会根据接收到的URL请求返回相同的超文本。正是因为这样的唯一性,使得记录用户的行为状态变得毫无意义,所 以,HTTP协议被设计为无状态的连接协议符合它本身的需求。 然而,随着时间的推移,人们发现静态的HTML着实无聊而乏味,增加动态生成的内容才会令Web应用程序变得更加有用。于是乎,HTML的语法在不断膨 胀,其中最重要的是增加了表单(Form);客户端也增加了诸如脚本处理、DOM处理等功能;对于服务器,则相应的出现了CGI

浅谈HTTP的无状态性

社会主义新天地 提交于 2020-01-24 15:02:11
HTTP是Hyper Text Transfer Protocol的缩写,顾名思义,这个协议支持着超文本的传输。那么什么是超文本呢?说白了就是使用HTML编写的页面。通常,我们使用客户端浏览器访问服务器的资源,最常见的URL也是以html为后缀的文件。因此,我们可以说超文本是网络上最主要的资源。 既然HTTP协议的目的在于支持超文本的传输,更加广义一些就是支持资源的传输,那么在客户端浏览器向HTTP服务器发送请求,继而HTTP服务器将相应的资源发回给客户端这样一个过程中,无论对于客户端还是服务器,都没有必要记录这个过程,因为每一次请求和响应都是相对独立的,就好像你在自动售货机前投下硬币购买商品一样,谁都不会也不需要记住这样一个交易过程。一般而言,一个URL对应着唯一的超文本,而HTTP服务器也绝对公平公正,不管你是Michael,还是Jordon,它都会根据接收到的URL请求返回相同的超文本。正是因为这样的唯一性,使得记录用户的行为状态变得毫无意义,所以,HTTP协议被设计为无状态的连接协议符合它本身的需求。 然而,随着时间的推移,人们发现静态的HTML着实无聊而乏味,增加动态生成的内容才会令Web应用程序变得更加有用。于是乎,HTML的语法在不断膨胀,其中最重要的是增加了表单(Form);客户端也增加了诸如脚本处理、DOM处理等功能;对于服务器,则相应的出现了CGI(Common

session和cookie有什么区别?

孤人 提交于 2020-01-24 15:00:25
session: sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。 存储在服务器的内存中,tomcat的StandardManager类将session存储在内存中,也可以持久化到file,数据库,memcache,redis等。客户端只保存sessionid到cookie中,而不会保存session,session销毁只能通过invalidate或超时,关掉浏览器并不会关闭session) 那么Session在何时创建呢?当然还是在服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中, 发到客户端的只有Session id ;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session