聊天服务器:Ejabberd 安装与离线转发模块的实现

Bash CentOS Erlang HTTP IP JavaScript Node.js TCP XML XMPP 编译 网络

如果你在给一个IOS应用添加聊天功能,如果你打算自己搭建它,并且进行离线消息的推送的话,你首先需要一个XMPP服务器。而ejabberd就是很优秀的一款,且很容易扩展其功能。

本文中,首先用ejabberd启动XMPP聊天服务,再编写一个ejabberd扩展模块将离线消息转发到我们的web服务器。之后你就可以将离线消息从web服务器传输到APN服务器,让Apple推送给用户客户端。

开发环境:CentOS6.5,ejabberd2.1.13,nodejs0.10.26

从 ArchLinux 的网络配置看 KISS 原则

ArchLinux Bash CentOS DHCP DNS HTTP IP SSH TCP UDP Ubuntu Windows grep kill 网络 路由 操作系统

最近在实验室配置网络和服务器,尤其是在RedHat EL上的网络配置,让我对ArchLinux的KISS原则体会颇深。

我在p大信科的实验室,包括楼下的机房和楼上的办公室。机房有一台H3C ER路由器和一台交换机,办公室也是一个路由器、一个交换机,加两个WiFi。机房有两根线接上来。

在不得不重置路由器(第一次用Console-COM接口)之后,终于把整个网络配置起来,包括域名、DHCP、与机房的互联与权限(这是教育网的独特之处)控制。Windows一直有人在维护,我负责把机房的两台RedHat配置起来。麻烦在于我只知道这两台机器是RedHat,其他一无所知。

Linux路由表配置

ArchLinux Bash DHCP DNS HTTP IP Linux MAC Socket TCP 网络 路由 systemd

局域网基本都是通过路由器来接入Internet,其中的路由器提供了众多的功能与服务。不妨用linux做局域网的路由,开启DHCP服务、IP转发、HTTP代理。这样不仅可以高度定制局域网的网络结构,而且可以实时监测局域网流量。

现在来让linux主机转发局域网流量,并设置代理对http数据进行有趣的修改。

以下以我使用的linux发行版ArchLinux为例,并忽略了发行版相关的软件安装过程。我的linux有两块网卡,无线网卡wlp13s0用于开通子网,有线网卡enp14s0作为出口。

读 HTTP 协议 RFC-2616

HTML HTTP TCP 网络 缓存

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP) 是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由 统一资源标识符(Uniform Resource Identifiers,URI) 来标识。

HTTP协议标准是由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)制定的,其中最著名的是RFC-2616,定义了HTTP协议中现今广泛使用的一个版本—HTTP 1.1。

第一个版本的HTTP(HTTP/0.9)用于Internet上的传输原始数据;HTTP/1.0加入了MIME支持、元数据、请求/应答限定符。

对web开发者而言HTTP协议的用法已耳熟能详,本文只记录与web开发相关的HTTP重要细节。

HTTP是一种通用的、无状态的应用层协议,适用于分布式、协同的、超媒体信息系统。通过一些扩展(如请求方法、错误码、头信息),HTTP可用于超文本外的其他用途,例如命名服务器、分布式对象管理。HTTP的特点在于数据表示的类型与协商,允许建立系统时不必考虑数据是如何传输的。

读 TCP 协议 RFC-793

IP Socket TCP 反码 接口 网络 路由 进程 多路复用 操作系统 电路交换

TCP被作为一种运行在分组交换网络(以及它们的互联系统)上的高可靠的主机到主机协议。TCP是面向连接的、端到端的通用协议,却对下层协议的假设甚少(可以是多网络环境,只要求一个不可靠的报文服务),一般用于互联网上不同主机的进程间通信。 现行协议版本被IETF标准化为RFC-793

虽然TCP主要运行在互联网的IP协议层之上,但原则上,TCP能够在多种通信系统上进行操作,从硬连线连接到分组交换或电路交换系统。

读 IP 协议 RFC-791

IP TCP 网络 路由 服务质量

IP协议(RFC-791)是IP/TCP协议栈的网络层协议,运行在分组交换的计算机网络之上。提供定长地址的源主机与目标主机之间的数据块传输。

概述

IP&ICMP上层为主机到主机的协议(如TCP),可以调用IP协议进行数据传输(需提供主机地址和其他IP头中需要的字段);下层为本地网络协议(链路层协议如APANET)进行数据报传输。IP协议实现里两个基本操作:寻址和分块。

因特网模块使用IP头提供的地址把数据报传向目标地址,传送路径的选择称为 路由 。因特网模块会对长报文进行分块和装配用以在小报文网络传输。IP协议独立地对待每个数据报,它们之间没有任何联系。

IP协议提供的服务使用了四种核心机制:服务类型、存活时间、选项、头部校验和。

  1. 服务类型用来描述期望的服务质量,是一组描述服务选项的参数的抽象,用于在网关路由时选择传输参数、下一跳的网络、下一个网关。
  2. 存活时间描述了IP数据报存活期的上限。该字段由发送者设置,在路由处完成递减。当达到0时该报文被销毁。
  3. 选项用于在一些情形下提供控制功能,普通通信中并不必要。如:时间戳规定、安全、特殊路由等。
  4. 头部校验和用来检验数据报中的信息是否传输正确。如果校验失败,立即丢掉该报文。

IP协议并不提供可靠的通信。端与端、上一跳与下一跳之间没有确认;也没有数据错误控制和流控制。检测到的错误可能通过ICMP协议进行报告。

导航: 上一页 下一页

加载中...

🔝