服务器端

WebBasic(一)

微笑、不失礼 提交于 2019-12-12 10:31:58
一、 JavaWeb (1)概述: Web项目的三要素: 浏览器 、 服务器 、 HTTP协议 。 浏览器:向服务器发起请求,下载服务器中的网页(HTML),然后执行HTML显示出内容。 服务器:接收浏览器的请求,发送相应的页面到浏览器。 HTTP协议:浏览器与服务器的通讯协议 ❤️ Web相关技术: 客户端技术:运行于客户端,由浏览器来解释运行。 — HTML — CSS — JavaScript — 浏览器兼容问题 服务器端技术:运行于服务器端,可以和数据库交互。 —ASP.NET (Active Server Page) —PHP(Hypertext Preprocessor) —JSP(Java Server Page) (2)软件架构: C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端程序,在远程有一个服务器端程序 * 如:QQ,迅雷… * 优点: 1. 用户体验好 * 缺点: 1. 开发、安装,部署,维护 麻烦 B/S: Browser/Server 浏览器/服务器端 * 只需要一个浏览器,用户通过不同的网址(URL),客户访问不同的服务器端程序 * 优点: 1. 开发、安装,部署,维护 简单 * 缺点: 1. 如果应用过大,用户的体验可能会受到影响 2. 对硬件要求过高 ❤️ B/S架构详解: ❤️ 资源分类: 静态资源: *

基于java的简单Socket编程

时光毁灭记忆、已成空白 提交于 2019-12-11 20:41:55
1TCP协议与UDP协议 1.1 TCP TCP是(Tranfer Control Protocol)的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。 TCP的三次握手 建立起一个TCP连接需要经过“三次握手”:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求。

socket通信的原理与实践

孤人 提交于 2019-12-11 20:29:37
主要参考了以下几篇博客,学到了很多,在这里总结一下 socket通信原理 TCP网络编程中connect()、listen()和accept()三者之间的关系 socket编程accept函数返回值的理解 TCP/IP协议是我们熟知的传输层协议,socket与TCP/IP协议模型的关系如下: Socket 是什么呢? Socket是应用层与 TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中, Socket其实就是一个门面模式,它把复杂的 TCP/IP协议族隐藏在 Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket去组织数据,以符合指定的协议。 简介Socket通信的全过程: 1.从服务器端说起,服务器端先初始化一个socket,调用bind()函数绑定一个端口 2.然后调用listen()函数监听端口,(相当于服务器的 客服是等待着客户(相当于客户端)电话的到来),listen() 函数的主要作用就是将套接字( sockfd )变成被动的连接监听套接字(被动等待客户端的连接),TCP 三次握手也不是由这个函数完成,listen()的作用仅仅告诉内核一些信息。 这里需要注意的是,listen()函数不会阻塞,它主要做的事情为,将该套接字和套接字对应的连接队列长度告诉 Linux 内核,然后,listen()函数就结束。 这样的话

HTTP/2简介

社会主义新天地 提交于 2019-12-11 19:31:46
1.HTTP/2的定义: HTTP/2即超文本传输协议2.0,是HTTP/1.1下一代的协议。是由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。 是自1999年HTTP/1.1发布后的首个更新。HTTP/2.0在2013年8月进行首次合作共事性测试。在开放互联网上HTTP/2.0将只用于" https:// " 网址,而 " http:// " 网址将继续使用HTTP/1。 目的是在开放互联网上增加使用加密技术,以提供强有力的保护去遏制主动攻击。 2.HTTP/1.1的不足: 一个网页加载的时候需要一些数据(css、js、图片等)这些请求是并发地向服务器发送的,并发的发送过程中就需要并发地创建TCP连接(一个请求对应一个TCP连接)。 一方面浏览器有并发连接数的限制,比如chrome限制一次性最多并发6个请求;如果请求创建TCP连接的并发请求一次超过6个,超过的请求就必须等待前面6个请求收到服务器的返回之后才能继续发送剩余请求。 这种等待,就算是一种相对串行的传输,效率不高;另一方面:由于不同请求需要建立不同的TCP连接,同时进行6次TCP的”三次握手”,那么创建连接的开销是比较大的; 同时对于一个服务器来说,它可创建的TCP连接数肯定是有上限的

什么是restful?rest方法有哪些?有什么区别?

邮差的信 提交于 2019-12-11 04:22:40
这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能。 大家好,我是IT修真院西安分院赵立鼐,一枚正直纯洁善良的java程序员。 本篇分享的是:【什么是restful?rest方法有哪些?有什么区别?】 (1)背景介绍: REST(Representational State Transfer,表述性状态转移) 源于REST之父Roy Thomas Fielding 博士在2000年就读加州大学欧文分校期间发表的一篇学术论文——《 Architectural Styles and the Design of Network- based Software Architectures》。</p> 论文中提出了REST的6个特点,分别是:客户端-服务器的、无状态的、可缓存的、统一接口、分层系统和按需编码。 REST具有跨平台、跨语言的优势。 REST是一种架构风格。 在REST架构风格中,对象被抽象为一种资源.资源的命名使用概念清晰的名词来定义。 表述性状态是对资源数据在某个瞬间状态的快照, 资源的某个瞬时状态被定义为一种表述(representation), 这种描述性的状态包括资源数据的内容、表述格式(比如XML、JSON)等信息, 一种资源可以对应多种表述。

会话追踪技术

非 Y 不嫁゛ 提交于 2019-12-10 19:39:29
3.会话追踪技术:cookie 3.1 http协议的访问是无状态的访问 当前访问是不会知道之前访问的状态的.(http协议的访问是不会帮我们保存访问的记录/痕迹的)。 3.2 有些时候需要记录之前的访问状态 比如在购物网站的时候,第一次访问点击购买了一个手机,第二次访问点击购买了一个电脑,第三次访问点击购物车结算,这个时候我们就必须知道前俩次访问的时候购买了什么,要不然就没有方法去结算。 所以我们就有了会话追踪技术来解决这个访问无状态的问题 3.3 session和cookie的位置 session是保存在服务器端的一个对象.客户端是没有session的. cookie在客户端和服务器端都会有。但是存在的形式不一样.在客户端cookie是以本地文件(浏览器管理的文件)的形式存在的,在服务器端是以java对象的形式存在.我们平时说说的cookie都是指的客户端文件形式存在的cookie 3.4 session和cookie的作用 session是在服务器端保存用户的相关信息,cookie是在客户端保存用户的相关信息。同时cookie还可以在客户端保存session的信息,例如session的id值 3.5 session和cookie之间的关系 1.客户端访问服务器的时候,假设服务器创建了一个session对象,服务器端的内存里面同时可能有好多个session对象

TCP三次握手详情

我的未来我决定 提交于 2019-12-10 19:38:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。 客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。 TCP建立连接时要传输三个数据包,俗称三次握手(Three-way Handshaking)。可以形象的比喻为下面的对话: [Shake 1] 套接字A:“你好,套接字B,我这里有数据要传送给你,建立连接吧。” [Shake 2] 套接字B:“好的,我这边已准备就绪。” [Shake 3] 套接字A:“谢谢你受理我的请求。” TCP数据报结构 带阴影的几个字段需要重点说明一下: 1) 序号:Seq(Sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记。 2) 确认号:Ack(Acknowledge Number)确认号占32位,客户端和服务器端都可以发送,Ack = Seq + 1。 3) 标志位:每个标志位占用1Bit,共有6个,分别为 URG、ACK、PSH、RST、SYN、FIN,具体含义如下: URG:紧急指针

Socket通信原理

我的梦境 提交于 2019-12-10 18:36:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们经常听说TCP/IP、UDP、Socket,这些到底是什么,之间有什么关系?我们通过本文弄清楚四个问题: 什么是TCP/IP、UDP? Socket处于协议的哪一层? Socket是什么? 如何使用它们? 1,什么是TCP/IP、UDP? TCP/IP (Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。 UDP (User Datagram Protocol,用户数据报协议) 是与TCP相对应的协议,是面向无连接的传输协议。它是属于TCP/IP协议族中的一种。 这里有一张图,表明了这些协议的关系。 TCP/IP协议族包括运输层、网络层、链路层。现在你知道TCP/IP与UDP的关系了吧。 2, Socket处于协议的哪一层? 3, Socket是什么呢? 从操作系统层面来看,Socket起源于Unix,而Unix/Linux基本哲学之一就是“ 一切皆文件 ”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作,所以可以把Socket看成是一种特殊的文件,socket函数可以对其进行各种操作(读/写IO、打开、关闭),从这个层面来讲,我们可以说

Socket通信原理

浪尽此生 提交于 2019-12-10 15:51:17
Socket通信浅析   网络上的两个程序通过一个双向的通信连接实现数据交换,而通信的端点称为Socket(套接字)。Socket的本质是编程接口,是对TCP/IP协议的封装。 Socket通信过程   服务器端先初始化Socket,然后与端口进行绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。此时如果有客户端初始化一个Socket,然后连接(connect)服务器,如果连接成功,此时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户段读取数据,然后关闭连接,一次交互结束。 相关函数 socket函数 bind函数 listen函数 connect函数 accept函数 read函数 write函数 来源: https://www.cnblogs.com/cpp-blog/p/12017030.html

LinuxMint13搭建gitolite服务器

≡放荡痞女 提交于 2019-12-10 14:30:07
1.首先需要阅读 LinuxMint13安装无密码访问git ,在该博文中讲到客户端的id_rsa.pub在执行 ssh-copy-id -i ~/.ssh/id_rsa.pub git @localhost 以后,id_rsa.pub的内容就被拷贝到了服务器端的/home/git/.ssh/authorized_keys文件中。 在本篇博文开始的时候,需要另外选一台PC机,作为Git管理和授权者的操作机,和服务器机器已经开发者机器不同,需要在授权机生成一对单独公私钥对,执行以下命令: ssh-keygen -f ~/.ssh/gitolite_skwiki 生成两个文件分别是:~/.ssh/gitolite_skwiki和~/.ssh/gitolite_skwiki.pub 将gitolite_skwiki.pub拷贝到服务器的/tmp/目录,修改权限为777,命令为: scp ~/.ssh/gitolite_skwiki.pub git@服务器公网IP:/tmp/gitolite_skwiki.pub 此处因为我们事先做了git账号的免密码登录,所以不会遇到权限问题。 2.在授权机创建SSH主机别名: 编辑~/.ssh/config文件,没有该文件的话可以自动创建并编辑,输入以下内容: host GitoliteServer user git hostname 主机公网IP