服务器类型

31.1.http基础知识简介

瘦欲@ 提交于 2020-04-02 12:11:37
TCP/IP协议 跨网络的主机间通讯 在建立通信连接的每一端,进程间的传输要有两个标志: IP地址和端口号,合称为套接字地址 socket address 客户机套接字地址定义了一个唯一的客户进程 服务器套接字地址定义了一个唯一的服务器进程 SOCKET套接字 Socket:套接字,进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换,SocketAPI出现于1983年,4.2 BSD实现 Socket API:封装了内核中所提供的socket通信相关的系统调用 Socket Domain:根据其所使用的地址 AF_INET:Address Family,IPv4 AF_INET6:IPv6 AF_UNIX:同一主机上不同进程之间通信时使用 Socket Type:根据使用的传输层协议 SOCK_STREAM:流,tcp套接字,可靠地传递、面向连接 SOCK_DGRAM:数据报,udp套接字,不可靠地传递、无连接 SOCK_RAW: 裸套接字,无须tcp或udp,APP直接通过IP包通信 客户/服务器程序的套接字函数 套接字相关的系统调用: socket(): 创建一个套接字 bind(): 绑定IP和端口 listen(): 监听 accept(): 接收请求 connect(): 请求连接建立 write(): 发送 read(): 接收

http协议相关面试题

荒凉一梦 提交于 2020-04-01 13:08:47
浏览器输入url按回车背后经历了哪些? 1.在PC浏览器的地址栏输入一串URL,然后按Enter键这个页面渲染出来,这个过程中都发生了什么事? 1、首先,在浏览器地址栏中输入url,先解析url,检测url地址是否合法 2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。 浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求; 操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存); 路由器缓存:如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存; ISP缓存:若上述均失败,继续向ISP搜索。 3、在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址。 4、浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。 5、握手成功后,浏览器向服务器发送http请求,请求数据包。 6、服务器处理收到的请求,将数据返回至浏览器 7、浏览器收到HTTP响应 8、浏览器解码响应,如果响应可以缓存,则存入缓存。 9、 浏览器发送请求获取嵌入在HTML中的资源(html,css,javascript,图片,音乐······),对于未知类型,会弹出对话框。 10、 浏览器发送异步请求。 11、页面全部渲染结束。

XMPP协议

时光怂恿深爱的人放手 提交于 2020-03-30 21:54:15
XMPP (Extensible Messageing and Presence Protocol) 可扩展消息与存在协议, 是目前主流的四种IM(即时消息)协议之一,其它三种分别为:即时信息和空间协议( IMPP )、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议 SIP (SIMPLE)。 在这四种协议中,XMPP是最灵活的。 XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。 1、什么是XMPP ? XMPP的前身是 Jabber ,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分: (1)核心的XML流传输协议 (2) 基于XML流传输的即时通讯扩展应用 XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上,借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。

[转] 基于XMPP协议的Android即时通信系

北慕城南 提交于 2020-03-30 18:27:08
转自:http://blog.csdn.net/lnb333666/article/details/7471292 以前做过一个基于XMPP协议的聊天社交软件,总结了一下。发出来。 设计基于开源的XMPP即时通信协议,采用C/S体系结构,通过GPRS无线网络用TCP协议连接到服务器,以架设开源的Openfn'e服务器作为即时通讯平台。 系统主要由以下部分组成:一是服务器,负责管理发出的连接或者与其他实体的会话,接收或转发XML(ExtensibleMarkup Language)流元素给授权的客户端、服务器等;二是客户终端。它与服务器相连,通过XMPP获得由服务器或任何其它相关的服务所提供的全部功能。三是协议网关。完成XMPP协议传输的信息与外部消息系统可识别信息间的翻译。再就是XMPP网络。实现各个服务器、客户端间的连接。系统采用客户端(Client)/服务端(Server)架构体系结构。 客户端: 客户端基于Android平台进行开发。负责初始化通信过程,进行即时通信时,由客户端负责向服务器发起创建连接请求。系统通过GPRS无线网络与Internet网络建立连接,通过服务器实现与Android客户端的即时通信脚。 服务器端: 服务器端则采用Openfire作为服务器。允许多个客户端同时登录并且并发的连接到一个服务器上。服务器对每个客户端的连接进行认证,对认证通过的客户端创建会话

HTTP协议分析

你说的曾经没有我的故事 提交于 2020-03-30 18:24:02
实验环境 操作机:Windows XP 实验目的 0、HTTP协议的基本概念及工作流程 1、捕获HTTP数据包的方法 2、分析HTTP的连接数据包 3、HTTP数据包的筛选技术 4、分析HTTP的数据传输数据包 实验工具 wireshark 实验步骤 了解HTTP工作流程 HTTP是一个 无状态 的协议。所谓的无状态指的是客户端 (Web浏览器) 和服务器之间不需要建立持久的连接。这也就意味着当一个客户端向服务器发出请求,然后服务器返回响应之后,连接也就关闭了。服务器并不会保留连接的相关信息,HTTP遵循的是 请求(Request)/应答(Response) 模型。客户端(Web浏览器)向服务器发送请求,服务器处理请求并返回适当的应答。所有的HTTP连接都被构造成一套请求和应答。在这个过程中要经历4个阶段,包括建立连接、发送请求信息、发送响应信息和关闭连接,如下图所示: 由上图可知, HTTP的工作流程 为: 1、客户端通过TCP的三次握手建立与服务器的连接。 2、当TCP连接成功建立后,客户端向服务器发送HTTP请求。 3、服务器收到客户端的HTTP请求后,将回复响应数据包,并向客户端发送数据。 4、客户端通过TCP四次握手,与服务器断开TCP连接。 HTTP连接数据包的捕获 刚才说了,HTTP需要使用TCP的三次握手来建立连接

XMLHTTPRequest状态status完整列表

a 夏天 提交于 2020-03-30 14:26:29
AJAX中请求远端文件、或在检测远端文件是否掉链时,都需要了解到远端服务器反馈的状态以确定文件的存在 与否。 当然,在我们平常浏览网页时,也会发现一些文件不存在时显示为“404错误”,这就是常见的Http请求状态(status)   Web服务器响应浏览器或其他 客户 程序的请求时,其应答一般由以下几个部分组成:一个状态行,几个应答头,一个空行,内容文档。下面是一个最 简单 的应答:   状态行包含HTTP版本、状态代码、与状态代码对应的简短说明信息。在大多数情况下,除了Content-Type之外的所有应答头都是可选的。但Content-Type是必需的,它描述的是后面文档的MIME类型。虽然大多数应答都包含一个文档,但也有一些不包含,例如对HEAD请求的应答永远不会附带文档。有许多状态代码实际上用来标识一次失败的请求,这些应答也不包含文档(或只包含一个简短的错误信息说明)。   当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码。状态代码可以指明具体请求是否已成功,还可以揭示请求失败的确切原因。 1xx - 信息提示 这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。 ·0 - 本地响应成功。  · 100 - Continue

Redis服务器重要属性详解

一世执手 提交于 2020-03-30 10:15:18
Redis服务器重要属性详解 cronloops 属性 cronloops 属性是一个计数器,用于记录服务器的 serverCron 函数被执行的次数,是一个 int 类型的整数。 rdb_child_pid 与 aof_child_pid 属性 rdb_child_pid 和 aof_child_pid 属性用于检查 Redis 服务器持久化操作的运行状态,它们记录执行 BGSAVE 和 BGREWRITEAOF 命令的子进程的 ID。也常常使用这两个属性来判断 BGSAVE 和 BGREWRITEAOF 命令是否正在被执行。 当执行 serverCron 函数时,会检查 rdb_child_pid 和 aof_child_pid 属性的值,只要其中一个属性的值不等于-1,程序就会调用一次 wait3 函数来判断子进程是否发送信号到服务器中。 如果没有信号到达,则表示服务器持久化操作没有完成,程序不做任何处理。而如果有信号到达,那么,针对 BGSAVE 命令,表示新的 RDB 文件已经成功生成;针对 BGREWRITEAOF 命令,表示新的 AOF 文件生成完毕,然后服务器继续执行相应的后续操作。比如,将旧的 RDB 文件或 AOF 文件替换为新的 RDB 文件或 AOF 文件。 另外,当 rdb_child_pid 和 aof_child_pid 属性的值都为-1 时

ssh(Secure Shell)

自闭症网瘾萝莉.ら 提交于 2020-03-30 10:11:06
一、ssh 基础使用   1. ssh 客户端使用 Secure Shell(ssh)协议连接到运行了 ssh 服务端的远程服务器上。   2. ssh 是专为远程登录会话和其他网络服务提供安全性的协议。 有效防止远程管理过程中的信息泄露; 传输数据加密,可以防止 DNS 和 IP 欺骗; 传输数据压缩,加快传输速度。   3. OpenSSH 是 SSH 协议的免费开源实现,提供了服务端程序(openssh-server)和客户端程序(openssh-client)。 Mac 和 Linux 中默认安装了 ssh 客户端,可以直接在中断中使用 ssh 命令。 Windows 需要手动安装 ssh 客户端,常用的有 PuTTY 和 XShell。   4. OpenSSH 服务端常用命令 1 # 安装服务端(Ubuntu) 2 sudo apt install openssh-server 3 4 # 安装客户端(Ubuntu) 5 sudo apt install openssh-client 6 7 # 查看 ssh 服务是否开启 8 netstat -tlp | grep ssh 9 10 # 启动/停止/重启 ssh 服务 11 sudo /etcinit.d/ssh start 12 13 # 启动/停止/重启 ssh 服务 14 sudo /etcinit.d/ssh

Jmeter上传图片接口

笑着哭i 提交于 2020-03-30 05:58:20
使用badboy录制后,在jmeter中出现以下错误(java.io.FileNotFoundException),后来发现提交的数据需要上传图片: 正确的测试如下: 如上图所示: 1、添加一个sampler下面的HTTP请求 2、方法选择POST 3、在Parameters中填入各个参数的值 4、在Files upload中添加上传图片的参数值: a、点击该栏目下的添加按钮; b、点击浏览按钮,选择一张需要上传的图片,地址将会自动记录到文件名称栏目; c、填写参数名称,根据需求可知为【news_image】; d、MIME类型为multipart/form-data。 执行 保存该HTTP请求,并执行,查看服务器,即可发现,上面步骤选择的图片已经成功上传到服务器。 来源: https://www.cnblogs.com/sunshine2016/p/5570592.html

socket模块

狂风中的少年 提交于 2020-03-30 05:25:19
socket 模块 C/S架构 服务器是一个软件或硬件,用于用户需求的服务 硬件上,客户端常见的就是平时所使用的PC机。软件上,服务器主要提供的服务主要是程序的运行,数据的发送与接收、合并、升级或其他程序的操作或数据的操作。 套接字 套接字是一种具有“通讯端点”概念的计算机网络数据结构 一种套接字是Unix套接字,其家族名为AF_UNIX 另一种套接字是基于网络的,家族名为AF_INET 如果把套接字比作电话的插口,那么主机与端口就像区号与电话号码的一对组合 面向连接和无连接 无论你使用那一种地址家族,套接字的类型只有两种。一种是面向连接的套接字,另一种是无连接的套接字 面向连接的主要协议就是传输控制协议TCP,套接字类型为SOCK_STREAM 无连接的主要协议是用户数据报协议UDP,套接字类型为SOCK_DGRAM python中使用socket模块中的socket函数实现套接字的创建 socket函数与方法 创建TCP服务器 主要步骤 1.创建接收服务器套接字:s = socket.socket() 2.绑定地址到套接字:s.bind() 3.启动监听:s.listen() 4.接收客户连接:s.accept() 5.与客户通信:recv()/send() 6.关闭套接字:s.close() 创建TCP客户端 1.创建客户端套接字:cs = socket.socket() 2