
计算机网络
文章平均质量分 92
圆月弯刀丶
重剑无锋 大巧不工
展开
-
NAT原理与NAT穿越
最近在看东西的时候发现很多网络程序中都需要NAT穿越,特意在此总结一下。先做一个约定:内网A中有:A1(192.168.0.8)、A2(192.168.0.9)两用户 网关X1(一个NAT设备)有公网IP 1.2.3.4内网B中有:B1(192.168.1.8)、B2(192.168.1.9)两用户,转载 2016-10-11 09:46:02 · 431 阅读 · 0 评论 -
理解OAuth 2.0
作者: 阮一峰日期: 2014年5月12日OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。一、应用场景为了理解OAuth的适用场合,让我举一个假设的例子。有一个"云冲印"的网站,可以将用户储转载 2016-10-08 10:00:13 · 363 阅读 · 0 评论 -
Nginx多Server反向代理配置
Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了。下面我就来说说server_name的使用吧:server_name的匹配顺序Nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为:1、准确的server_转载 2016-09-30 10:14:18 · 2812 阅读 · 0 评论 -
Nginx实现多个站点使用一个端口(配置Nginx的虚拟主机)
Nginx 是一个轻量级高性能的 Web 服务器, 并发处理能力强, 消耗资源小, 无论是静态服务器还是网站, Nginx 表现更加出色, 作为 Apache 的补充和替代使用率越来越高,目前很多大型网站都在使用Nginx做为 Web 服务器,例如:人人网。另外淘宝研发大军针对大访问量网站的需求,对Nginx做了专门的定制,添加了很多高级功能和特性(Tengine),Teng转载 2016-09-30 10:08:15 · 8888 阅读 · 0 评论 -
nginx配置文件详解中文版
本文列出了nginx默认配置文件 nginx.conf手大部分命令,并加以中文注释说明,实际配置中可能没有这么复杂,这里只能作为一个参考阅读文档!一、nginx基本配置复制代码 代码如下:#定义Nginx运行的用户和用户组,系统中必须有此用户,可以是nologinuser www www; #启动进程,通常设置成和cpu的数量相等worker_proce转载 2016-09-26 11:47:28 · 503 阅读 · 0 评论 -
Nginx入门指南,快速搭建静态文件服务器和代理服务器
本文介绍 Nginx 入门基础知识,让你迅速搭建 Nginx 服务器。主要内容包括 Nginx 安装和简单使用、Nginx的简单原理、Nginx 配置文件的结构、如何使用 Nginx 来提供静态文件服务、如何使用 Nginx 来搭建简单的代理服务器等知识。一、Nginx 的安装和简单使用 关于 Nginx 的安装、简单使用以及详细的命令行参数介绍请参考 http://blo转载 2016-09-26 10:23:53 · 6257 阅读 · 0 评论 -
Socket心跳包异常检测的C语言实现,服务器与客户端代码案例
在Socket心跳机制中,心跳包可以由服务器发送给客户端,也可以由客户端发送给服务器,不过比较起来,前者开销可能较大。本文实现的是由客户端给服务器发送心跳包,服务器不必返回应答包,而是通过判断客户在线会话记录中的计数标志值来实现心跳异常的检测,以此决定客户端是否已经断开连接以及删除其在线会话记录。基本思路: ①客户端定时给服务器发送心跳包(案例中定时时间为3秒);转载 2015-11-15 10:26:10 · 12850 阅读 · 3 评论 -
Web Server 和 HTTP协议
Web Server 和 HTTP协议May 17, 2015一直在找实习,有点什么东西直接就在evernote里面记了,也没时间来更新到这里。找实习真是个蛋疼的事,一直找的是困难模式的C++的后台开发这种职位,主要是因为其他的更不会了。虽然找的是C++的职位,但是我的简历有俩项目都是php的,因为老赵的项目就是用php做网站。最近越来越感觉这样的简历不靠谱,想换个C++的和网络有转载 2015-07-30 13:55:46 · 1091 阅读 · 0 评论 -
Berkeley socket 套接字编程详解
Berkeley 套接字6.1 引言网络程序设计全靠套接字接受和发送信息,尽管套接字这个词好象显得有些神秘,但其实这个概念极易理解。这章主要讲述Sockets API(Application Program Interface),以及一些其他的细节(比如Socket 的历史、数据中的常用结构等),通过这些介绍,使读者慢慢掌握Linux 下的Socket编程。6转载 2015-04-20 11:15:08 · 2023 阅读 · 0 评论 -
TCP连接的状态详解以及故障排查
我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。(总结网络上的内容)1、TCP状态LISTENING:侦听来自远方的TCP端口的连接请求. 首先服务端需要打开一个socket进行监听,状态为LISTEN。 有提供某种服务才会处于LISTENING状态,TCP状态变化就是某个端口的状转载 2014-08-20 14:04:56 · 1764 阅读 · 0 评论 -
网络编程--服务器编程模型
本文通过一个简单的例子,介绍网络服务器编程模型服务器接受客户端连接请求,回显客户端发过来的数据,发送当前时间给客户端所有源码可打包下载:http://download.youkuaiyun.com/detail/yfkiss/4318990客户端请求相关代码:[cpp] view plaincopy//和服务器建立连接转载 2014-04-28 16:14:55 · 961 阅读 · 0 评论 -
网络编程--IO模型示例
IO模型在Richard Stevens的《UNIX网络编程,第一卷》(程序猿必备!)一书中有非常详尽的描述,以下简要介绍,并给出代码示例。另外比较好的总结性blog,推荐:使用异步 I/O 大大提高应用程序的性能IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)常见网络IO模型:阻塞式IO、无阻塞式IO、IO复用、异步IO、信号驱动阻塞式IO:在一个进程发转载 2014-04-28 16:13:08 · 893 阅读 · 0 评论 -
Windows Socket五种IO模型
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合考虑转载 2014-04-28 16:09:33 · 1787 阅读 · 0 评论 -
TCP/IP笔记 四.应用层(3)——HTTP
1. URLURL(Uniform Resource Locator) 相当于一个文件名在网络范围的扩展。1.1 格式schema://host[:port#]/path/.../[?query-string][#anchor]scheme 指定低层使用的协议(例如:http, https, ftp)host转载 2014-01-28 14:47:37 · 792 阅读 · 0 评论 -
TCP/IP笔记 四.应用层(2)——FTP
1. FTP(File Transfer Protocol)文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。1.1 网络环境下复制文件的复杂性:(1) 计算机存储数据的格式不同。(2) 文件的目录结构和文件命名的规定不同。(3) 对于相同的文件存取功能,操作系统使用的命令转载 2014-01-28 14:46:26 · 883 阅读 · 0 评论 -
TCP/IP笔记 四.应用层(1)——DNS
1. DNSDNS(Domain Name System ):域名系统,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。DNS使用TCP与UDP端口号都是53,主要使用UDP,服务器之间备份使用TCP。2. 域名结构通常 Internet 主机域名的一般结构为转载 2014-01-28 14:44:49 · 1100 阅读 · 0 评论 -
select函数详解及实例分析
Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻转载 2013-12-17 10:48:16 · 805 阅读 · 0 评论 -
select, poll和epoll的区别
随着2.6内核对epoll的完全支持,网络上很多的文章和示例代码都提供了这样一个信息:使用epoll代替传统的poll能给网络服务应用带来性能上的提升。但大多文章里关于性能提升的原因解释的较少,这里我将试分析一下内核(2.6.21.1)代码中poll与epoll的工作原理,然后再通过一些测试数据来对比具体效果。POLL:先说poll,poll或select为大部分Unix/Linu转载 2013-12-10 08:33:07 · 913 阅读 · 0 评论 -
SNMP++2.8中文文档
SNMP++用C++构建的,处理简单网络管理协议(SNMP)的APISNMP++. 1用C++构建的,处理简单网罗管理协议(SNMP)的API11. 介绍... 61.1. 什么是SNMP++. 61.2. SNMP++的本质... 61.2.1. 简单易用的SNMP++. 61.2.2. 编程安全的SNMP++. 71.2.3. 可移植的SNMP++. 8转载 2013-10-18 17:27:09 · 4612 阅读 · 0 评论 -
网络编程学习小结
几种网络编程方式:ISAPI、CGI、WinInet、Winsock它们之间的区别:1) ISAPI主要是开发基于浏览器客户端与服务器端程序。效率比CGI方式高,而且也扩展了CGI没有的一些功能。(基于TCP/IP模型中的应用层)2) CGI主要是开发基于浏览器客户端与服务器端程序。(基于TCP/IP模型中的应用层)3) WinInet主要是开发客户端程序。(基于TCP/转载 2013-09-24 17:46:19 · 1115 阅读 · 1 评论 -
HTTP协议详解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of转载 2013-08-25 09:21:18 · 916 阅读 · 0 评论 -
IGMP技术总结
IGMP技术总结1. IGMP简介IGMP是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP协议族中负责IP组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。IGMP的版本到目前为止,IGMP有三个版本:·IGMPv转载 2013-06-17 11:35:14 · 8406 阅读 · 0 评论 -
SSDP,简单服务发现技术
SSDP,简单服务发现技术SSDP:Simple Sever Discovery Protocol,简单服务发现协议,此协议为网络客户提供一种无需任何配置、管理和维护网络设备服务的机制。此协议采用基于通知和发现路由的多播发现方式实现。协议客户端在保留的多播地址:239.255.255.250:1900(IPV4)发现服务,(IPv6 是:FF0x::C)同时每个设备服务也在此地转载 2013-06-17 11:32:15 · 1280 阅读 · 0 评论 -
http请求的详细过程
http://www.yuanma.org/data/2009/1009/article_3949.htm一个http请求的详细过程我们来看当我们在浏览器输入http://www.mycompany.com:8080/mydir/index.html ,幕后所发生的一切。首先http是一个应用层的协议,在这个层的协议,只是一种通讯规范,也就是因为双方要进行通讯,大家要事先约转载 2013-04-23 18:27:53 · 689 阅读 · 0 评论 -
网络编程常见问题总结
网络编程常见问题总结 串讲(一) 网络编程常见问题总结 6 I& I! E- x8 Z+ p- U- B 在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出. . e3 Y0 @* _- e1 G- B% R 对于网络编程的更多详细说明建议参考下面的书籍 《UNIX网络编程》 《转载 2013-04-23 18:24:29 · 928 阅读 · 0 评论 -
http协议中有关http头的技术资料
一、基础篇 HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息转载 2013-03-29 15:06:29 · 985 阅读 · 0 评论 -
HTTP协议基础
HTTP 协议定义服务器端和客户端之间文件传输的沟通方式。目前HTTP协议的版本是Http1.1。RFC 2616描述了HTTP协议的具体信息。 这个协议已经成为浏览器和Web站点之间的标准。 当我上网的时候底层是如何进行交互的? 当访问者点击一个超链接的时候,将会给浏览器提交一个URL地址。通过这个URL地址,浏览器便知道去链接那个网站并去取得具体的页面文件(也可能是一张转载 2013-03-29 15:03:58 · 823 阅读 · 0 评论 -
setsockopt()用法(参数详细说明)
int setsockopt(SOCKET s,int level,int optname,const char* optval,int optlen);s(套接字): 指向一个打开的套接口描述字level:(级别): 指定选项代码的类型。SOL_SOCKET: 基本套接口IPPROTO_IP: IPv4套接口IPPROTO_IPV6: IPv6套接转载 2013-03-29 15:01:16 · 1033 阅读 · 0 评论 -
C++ Scoket编程
介绍 Socket编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等等…好在我已经将这些事完成了,我将和所有人共享我的知识了。如果你了解 C 语言并想穿过网络编程的沼泽,那么你来对地方了。读者对象 这个文档是一个指南,而不是参考书。如果你刚开始 socke转载 2013-01-22 21:07:08 · 1036 阅读 · 0 评论 -
Socket编程指南
1 前言在一些常用的编程技术中,Socket网络编程可以说是最简单的一种。而且Socket编程需要的基础知识很少,适合初学者学习网络编程。目前支持网络传输的技术、语言和工具繁多,但是大部分都是基于Socket开发的,虽说这些“高级”的网络技术屏蔽了大部分底层实现,号称能极大程度的简化开发,而事实上如果你没有一点Socket基础,要理解和应用这些技术还是很困难的,而且会让你成为转载 2013-01-22 21:42:40 · 800 阅读 · 0 评论 -
自定义通信协议设计之TLV编码应用
摘要: 在网络通信开发过程中,很可能需要使用到自定义通信协议,因为之前曾从事过电信信令类工作,接触较多的则是ASN.1中的BER、PER编码,其中BER是基于TLV方式进行编码,本文主要介绍一下TLV编码及其应用。因为之前从事过电信信令类工作,接触较多的则是[ASN.1](http://zh.wikipedia.org/zh-cn/ASN.1)中的BER、PER编码,其中BER是基转载 2016-12-08 18:06:48 · 4289 阅读 · 0 评论 -
Linux网络编程之广播
1.概念前面介绍的TCP,UDP都是单播方式,即一对一.而广播是一台主机向局域网内的所有主机发送数据。这时,同一网段的所有主机都能接收到数据。发送广播包的步骤大致如下:(1)确定一个发送广播的接口,如eth0(2)确定广播的地址,通过ioctl函数,请求码设置为SIOCGIFBRDADDR得到广播的地址(3)使用这个广播地址进行广播由于TCP协议是端到端的协议,在通信之前,必须转载 2016-12-22 16:51:34 · 473 阅读 · 0 评论 -
二层广播(帧广播)和三层广播(路由器广播)有什么区别?
广播只有2层的。跨网段访问是寻址。三层交换机等同于路由器。也就是说源ip和目的ip在数据包里一直不变(不经过nat的情况),mac地址将时刻改变。广播只存在二层。三层情况下是路由寻址。二层广播:全F的二层广播帧(交换机一般所发送的广播帧)三层广播:192.168.1.255&255.255.255.255(区别是一个网段内的广播&全网络广播,一般是路由传播。但默认情转载 2016-12-22 17:49:43 · 29211 阅读 · 0 评论 -
VLAN虚拟局域网
传统的局域网使用的是HUB,HUB只有一根总线,一根总线就是一个冲突域。所以传统的局域网是一个扁平的网络,一个局域网属于同一个冲突域。任何一台主机发出的报文都会被同一冲突域中的所有其它机器接收到。后来,组网时使用网桥(二层交换机)代替集线器(HUB),每个端口可以看成是一根单独的总线,冲突域缩小到每个端口,使得网络发送单播报文的效率大大提高,极大地提高了二层网络的性能。假如一台主机发出广播转载 2016-12-22 19:58:17 · 1229 阅读 · 0 评论 -
Linux socket 阻塞与非阻塞,同步与异步、I/O模型
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->转载 2017-02-07 13:52:35 · 1173 阅读 · 0 评论 -
从UDP的”连接性”说起–告知你不为人知的UDP
很早就计划写篇关于UDP的文章,尽管UDP协议远没TCP协议那么庞大、复杂,但是,要想将UDP描述清楚,用好UDP却要比TCP难不少,于是文章从下笔写,到最终写成,断断续续拖了好几个月。说起网络socket,大家自然会想到TCP,用的最多也是TCP,UDP在大家的印象中是作为TCP的补充而存在,是无连接、不可靠、无序、无流量控制的传输层协议。UDP的无连接性已经深入人心,协议上的无连接转载 2017-01-17 14:38:22 · 3747 阅读 · 0 评论 -
当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一转载 2017-01-13 11:13:40 · 597 阅读 · 0 评论 -
朴素、Select、Poll和Epoll网络编程模型实现和分析——Epoll模型
在阅读完《朴素、Select、Poll和Epoll网络编程模型实现和分析——Select模型》和《朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll模型》两篇文章后,我们发现一个问题,不管select函数还是poll函数都不够智能,它们只能告诉我们成功、失败或者超时。如果成功,我们需要遍历整个数组去检查哪些socket需要被处理。对于性能有严格要求的服转载 2017-01-23 14:29:24 · 385 阅读 · 0 评论 -
朴素、Select、Poll和Epoll网络编程模型实现和分析——模型比较
经过之前四篇博文的介绍,可以大致清楚各种模型的编程步骤。现在我们来回顾下各种模型(转载请指明出于breaksoftware的csdn博客)模型编程步骤对比 《朴素、Select、Poll和Epoll网络编程模型实现和分析——朴素模型》中介绍的是最基本的网络编程模型,我们使用单线程去实现,它的步骤很简单 如同这幅流程图,它简单到非常单薄。这个模型暴露转载 2017-01-23 14:30:46 · 399 阅读 · 0 评论 -
朴素、Select、Poll和Epoll网络编程模型实现和分析——朴素模型
做Linux网络开发,一般绕不开标题中几种网络编程模型。网上已有很多写的不错的分析文章,它们的基本论点是差不多的。但是我觉得他们讲的还不够详细,在一些关键论点上缺乏数据支持。所以我决定好好研究这几个模型。(转载请指明出于breaksoftware的csdn博客) 在研究这些模型前,我决定按如下步骤去做:实现朴素模型实现发请求的测试程序实现Select模型,测试其效转载 2017-01-23 14:22:57 · 412 阅读 · 0 评论