服务器端

WebSocket

匆匆过客 提交于 2019-12-01 22:04:20
WebSocket 是什么? WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。 其他特点包括: (1)建立在 TCP 协议之上,服务器端的实现比较容易。 (2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。 (3)数据格式比较轻量,性能开销小,通信高效。 (4)可以发送文本,也可以发送二进制数据。 (5)没有同源限制,客户端可以与任意服务器通信。 (6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。 为什么需要 WebSocket ? 了解计算机网络协议的人,应该都知道:HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。 这种通信模型有一个弊端:HTTP

综合技术 --webservice理解

十年热恋 提交于 2019-12-01 21:12:59
目前,几乎所有的应用程序都需要与运行在其它异构平台上的应用程序进行数据交换,这就需要一个接口来满足两个不同的平台。webservice能满足客户端和服务器之间通过http进行通信,无论这两个程序的平台和编程语言是什么。 webservice是什么呢? 简言之:webservice是一种跨编程语言和跨操作系统平台的远程调用技术。 所谓跨操作语言和跨平台,就是说服务器端采用java语言编写,客户端可以采用其它语言编写。跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。 所谓远程调用指的是:计算机A上的一个程序可以调用另一台计算机B上的一个对象的方法,例如,银联提供给商场的POS刷卡系统,商场的pos机转账调用的转账方法的代码其实是跑在银行服务器上。 从表面上看,webservice就是一个应用程序向外提供一些能够通过web进行调用的API。也就是说客户端可以通过web来调用这个API。 webservice平台技术 xml+xsd,soap和wsdl是构成webservice平台的三大技术。 xml+xsd webservice采用http协议传输数据,采用xml格式封装数据。 soap webservice通过http协议发送请求和接收数据时,发送请求的内容和结果都采用xml格式封装,并增加了一些特定的http消息头,以说明http消息的内容格式

C/C++网络编程7——多进程服务器端之fork函数

只愿长相守 提交于 2019-12-01 20:35:00
  通过前面几节的内容,我们已经可以实现基本的C/S结构的程序了,但是当多个客户端同时向服务器端请求服务时,服务器端只能按顺序一个一个的服务,这种情况下,客户端的用户是无法忍受的。所以虚实现并发的服务器端。 并发服务器端的实现方法:   1:多进程服务器端:通过创建多个进程提供服务。   2:多路复用服务器:用过捆绑并统一管理I/O对象提供服务。   3:多线程服务器:通过生成与客户端等量的线程提供服务。 多进程服务器端:   进程:可执行程序的一次执行过程。   在linux下可通过fork()函数创建一个进程。 #include <unistd.h> pid_t fork(void) // 成功返回时父进程返回子进程的id,子进程返回0,失败时返回-1   通过fork()函数创建进程以后,父进程和子进程拥有完全独立的内存空间。举例: #include <iostream> #include <unistd.h> using namespace std; int g_count = 10; int main() { int l_count = 20; g_count++; l_count++; pid_t pid = fork(); if (pid < 0) { cout << "fork() failed" << endl; return 0; } if (pid == 0)

C/C++网络编程6——fork函数

和自甴很熟 提交于 2019-12-01 20:34:06
  通过前面几节的内容,我们已经可以实现基本的C/S结构的程序了,但是当多个客户端同时向服务器端请求服务时,服务器端只能按顺序一个一个的服务,这种情况下,客户端的用户是无法忍受的。所以虚实现并发的服务器端。 并发服务器端的实现方法:   1:多进程服务器端:通过创建多个进程提供服务。   2:多路复用服务器:用过捆绑并统一管理I/O对象提供服务。   3:多线程服务器:通过生成与客户端等量的线程提供服务。 多进程服务器端:   进程:可执行程序的一次执行过程。   在linux下可通过fork()函数创建一个进程。 #include <unistd.h> pid_t fork(void) // 成功返回时父进程返回子进程的id,子进程返回0,失败时返回-1   通过fork()函数创建进程以后,父进程和子进程拥有完全独立的内存空间。举例: #include <iostream> #include <unistd.h> using namespace std; int g_count = 10; int main() { int l_count = 20; g_count++; l_count++; pid_t pid = fork(); if (pid < 0) { cout << "fork() failed" << endl; return 0; } if (pid == 0)

mongodb图片上传 初识vue

和自甴很熟 提交于 2019-12-01 20:13:44
1、回顾 1.1 node node 服务器 url querystring express express 项目生成器 ejs 1.2 mongodb mongod --dbpath d:\data\db mongo db.users.insert({}) db.users.insert([{},{}]) db.users.insertOne({}) db.users.insertMany([{},{}]) db.users.deleteOne({}) db.users.deleteMany({}) db.users.updateOne({}, {$set: {}}) db.users.updateMany({}, {$set: {}}) db.users.updateOne({}, {$inc: {}}) db.users.updateMany({}, {$inc: {}}) db.users.find() db.users.find({}) db.users.find({}, {}) db.users.find({}, {}).sort({}) db.users.find({}, {}).count() db.users.find({}, {}).skip().limit() db.users.find({}, {}).toArray() 1.3 封装 mongodb

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

一个人想着一个人 提交于 2019-12-01 19:30:19
TCP(Transmission Control Protocol)网络传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,数据传输前建立连接的工作要经过三次握手,数据传输后断开连接的工作要经过四次挥手。 工作过程 TCP标志位: TCP共有6个标志位,分别是: SYN(synchronous),建立联机。 ACK(acknowledgement),确认。 PSH(push),传输。 FIN(finish),结束。 RST(reset),重置。 URG(urgent),紧急。 图解三次握手和四次挥手的过程: 三次握手建立连接阐述: 第一次握手:客户端要和服务端进行通信,首先要告知服务端一声,遂发出一个SYN=1的连接请求信号,”服务端哥哥,我想给你说说话”。 第二次握手:当服务端接收到客户端的连接请求,此时要给客户端一个确认信息,”我知道了(ACK),我这边已经准备好了,你现在能连吗(SYN)”。 第三次握手:当客户端收到了服务端的确认连接信息后,要礼貌的告知一下服务端,“好的,咱们开始联通吧(ACK)”。 到此整个建立连接的过程已经结束,接下来就是双方你一句我一句甚至同时交流传递信息的过程了。 四次挥手断开连接阐述: 第一次挥手:双方交流的差不多了,此时客户端也已经结尾了,接下来要断开通信连接,所以告诉服务端“我说完了(FIN)”,此时自身形成等待结束连接的状态。

wireshark抓包分析TCP三次握手和四次挥手的过程

孤街醉人 提交于 2019-12-01 19:21:53
1. TCP的通信过程 TCP连接的建立需要经过三次握手,连接的关闭需要经过四次挥手。读TCP/IP协议不是很好理解,通过工具手动抓包分析会对协议有更深刻的理解。因为工作中经常用到wireshark,所以就通过wireshark来分析,记录自己的学习过程。 TCP的整个通信过程如下图所示: 2. TCP的三次握手过程 下图是wireshark抓取的浏览器与web服务器之间的TCP通信过程,Filter是过滤框,图中是过滤的源IP和目的IP为1.192.194.198与客户端的通信。 (1)SYN 同步序列号,用来发起一个TCP连接,会携带一个随机序号seq=i,报文中的Flags值SYN=1,SYN=1的报文段不能携带数据,但是会消耗掉一个序号。此时客户端进入到SYN-SEND状态。 (2)服务器收到SYN之后,如果同意此次连接的建立会回复一个ACK,确认号ack=i+1,同时会选取一个序列号seq=j,报文中的Flags值SYN=1,ACK=1,此时服务器进入到SYN-RCVD状态。 (3)客户端收到服务器的确认后,还会向服务器发出一个确认报文,确认号ack=j+1,序列号seq=i+1,报文中的Flags值ACK=1,ACK报文可以携带数据,如果没有携带数据不会消耗序号,下一个报文的序号仍然是i+1。此时客户端进入到ESTABLISED状态

Socket三次握手四次挥手

不问归期 提交于 2019-12-01 19:15:06
Socket 起源于 Unix,而Unix基本哲学之一就是一切皆文件,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现,网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符 通信模型: s erver的生命周期大致如下: 创建socket。 绑定(bind)地址端口 监听网络连接 接受连接 关闭连接 clinet的生命周期则稍微简单点: 创建socket 绑定地址 发起连接 关闭连接 Socket三次握手及四次挥手 三次握手过程: 第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认; 第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment

TCP/IP协议三次握手和四次挥手大白话解说

大城市里の小女人 提交于 2019-12-01 19:11:22
前言 昨天晚上被一位师傅问到了TCP/IP的工作机制,心里很清楚三次握手,然而对于四次挥手却忘了,这是大学习里学过的,奋而翻阅书籍和网络对之前所学的做一个温顾,算是夯实自我吧。 TCP(Transmission Control Protocol)网络传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,数据传输前建立连接的工作要经过三次握手,数据传输后断开连接的工作要经过四次挥手。 工作过程 TCP标志位: TCP共有6个标志位,分别是: SYN(synchronous),建立联机。 ACK(acknowledgement),确认。 PSH(push),传输。 FIN(finish),结束。 RST(reset),重置。 URG(urgent),紧急。 图解三次握手和四次挥手的过程: 三次握手建立连接阐述: 第一次握手:客户端要和服务端进行通信,首先要告知服务端一声,遂发出一个SYN=1的连接请求信号,”服务端哥哥,我想给你说说话”。 第二次握手:当服务端接收到客户端的连接请求,此时要给客户端一个确认信息,”我知道了(ACK),我这边已经准备好了,你现在能连吗(SYN)”。 第三次握手:当客户端收到了服务端的确认连接信息后,要礼貌的告知一下服务端,“好的,咱们开始联通吧(ACK)”。 到此整个建立连接的过程已经结束

HTTP3次握手和4次挥手

元气小坏坏 提交于 2019-12-01 18:47:49
Http协议属于ISO7层模型中的应用层,TCP协议属于IOS7层模型中的传输层,所以Http是比TCP更高层的协议。 Http的3次握手: 第一次握手:客户端发送一个带SYN的TCP报文到服务器,表示客户端想要和服务器端建立连接。 第二次握手:服务器端接收到客户端的请求,返回客户端报文,这个报文带有SYN和ACK确认标示,访问客户端是否准备好。 第三次握手:客户端再次响应服务端一个ACK确认,表示我已经准备好了。 Http的4次挥手: 第一次挥手:TCP发送一个FIN(结束),用来关闭客户端到服务器端的连接。 第二次挥手:服务器端收到这个FIN后发回一个ACK确认标示,确认收到。 第三次挥手:服务器端发送一个FIN到客户端,服务器端关闭客户端的连接。 第四次挥手:客户端发送ACK报文确认,这样关闭完成。 下面用实验来说明HTTP的3次握手和4次挥手: 编写服务代码: < % @ page contentType = "text/html;charset=UTF-8" language = "java" % > < html > < head > < title > Title < / title > < / head > < body > < % try { Thread . sleep ( 10 * 1000 ) ; //睡眠10秒钟 } catch (