随笔分类 - 网络编程
摘要:前言 事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中的应用;事实上,在网络编程中事件驱动也被广泛使用,并大规模部署在高连接数高吞 吐量的服务器程序中,如 http 服务器程序、ftp 服务器程序等。相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力,并提高网络传输效率。 关于本文提及的服务器模型,搜索网络可以查阅到很多的实现代码,所以,本文将不拘泥于源代码的陈列与分析,而侧重模型的介绍和比较。使用 libev 事件驱动库的服务器模型将给出实现代码。 本文涉及到线程 / 时间图例,只为表明线程在各个 IO 上确实存在阻塞时延,但...
阅读全文
摘要:对于中美两国而言,1972年无疑是一个具有特殊意义的年份。这一年2月21日,美国总统尼克松访华,20多年来中美关系的坚冰被打破,中美关系由此翻开了崭新的一页,世界战略格局因此发生了重大变化,而带来此次巨变的乒乓外交则成了世界外交史上的经典。 也是在这一年,25岁的电脑工程师诺兰·布什内尔(Nolan Bushnell)创立了世界上第一家电子游戏公司阿塔利(Atari)。在计算机世界尚处蛮荒的时代,阿塔利借助其著名的游戏《乒乓》让计算机不再只是技术天才的玩具,而变成了真正可以愉悦大众的商品。 大众市场对《乒乓》的热烈反响改变了随后科技世界中许多人和许多公司的命运。1976年愚人节,阿塔
阅读全文
摘要:简单地说:ip地址是服务商给你的,mac地址是你的网卡物理地址。 一、IP地址 对于IP地址,相信大家都很熟悉,即指使用TCP/IP协议指定给主机的32位地址。IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP地址,这种写法叫点分十进制格式。IP地址由网络地址和主机地址两部分组成,分配给这两部分的位数随地址类(A类、B类、C类等)的不同而不同。网络地址用于路由选择,而主机地址用于在网络或子网内部寻找一个单独的主机。一个IP地址使得将来自源地址的数据通过路由而传送到目的地址变为可能。 二、MAC地址 对于MAC地址,由于我们不直接和它接触,所以大家不一定很熟悉。...
阅读全文
摘要:说到字符编码,不得不说ASCII码的简史。计算机一开始发明的时候是用来解决数字计算的问题,后来人们发现,计算机还可以做更多的事,例如文本处理。但由于计算机只识“数”,因此人们必须告诉计算机哪个数字来代表哪个特定字符,例如65代表字母‘A’,66代表字母‘B’,以此类推。但是计算机之间字符-数字的对应关系必须得一致,否则就会造成同一段数字在不同计算机上显示出来的字符不一样。因此美国国家标准协会ANSI制定了一个标准,规定了常用字符的集合以及每个字符对应的编号,这就是ASCII字符集(Character Set),也称ASCII码。当时的计算机普遍使用8比特字节作为最小的存储和处理单元,加之当时用
阅读全文
摘要:我们每天都在使用互联网,我们电脑上的数据是怎么样通过互联网传输到到另外的一台电脑上的呢?把自己的理解写一下,可能有很多细节还没有能的很清楚!希望在以后可以使之更加的完善!有不对的地方还请指正. 我们知道现在的互联网中使用的TCP/IP协议是基于,OSI(开放系统互联)的七层参考模型的,(虽然不是完全符合)从上到下分别为 应用层 表示层 会话层 传输层 网络层 数据链路层和物理层。其中数据链路层又可是分为两个子层分别为逻辑链路控制层(Logic Link Control,LLC )和介质访问控制层((Media Access Control,MAC )也就是平常说的MAC层。LLC对两个节点中的
阅读全文
摘要:转自:http://blog.sina.com.cn/s/blog_4a149266010005g8.html计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。面向连接和无连接协议(Connection-Oriented and Connectionless Protocols)面向连接服务的主要特点是:面向连接服务要经过三个阶段:数据传数前,先建立连接,连接建立后再传输数据,数据
阅读全文
摘要:摘要:文章介绍了UPnP结构规范和开发流程,指出:UP nP协议使所有联网的设备实现互联,设备工作不需要传统的驱动程序,便可以实现设备间的 相互控制。关键词:UPnP协议;开发流程;电子技术;工作流程中图分类号:TP393文献标识码:A文章编号:1007—6921(2009)17—0072—02UPnP首先是由微软公司于1999年提出,现今已经是开放的标准,由非盈利的论坛组织UPnP F orum 负责体系架构和标准的维护和更新升级。至2003年末,世界范围内宣称支持它的组织 已经达到600多家。目前UPnP尚处于1.0版本已经实现了智能设备的互联互用。1UPnP结构规范1.1UPnP基本单元
阅读全文
摘要:一、UPnP简介 UPnP(Universal Plug and Play)技术是一种屏蔽各种数字设备的硬件和操作系统的通信协议。它是一种数字网络中间件技术,建立在TCP/IP、HTTP协议之上,采用XML来描述设备和控制信息。这种技术最开始是被微软,因特尔等公司使用在数字家庭中的,用来在家庭网络中完成多媒体资源共享,家电一体化等功能,例如在各种家电上实现IP数字化,加入网络传输和控制部分,从而让家电能组建UPnP网络,这种技术能让人们在上班或者外地出差时能查看家庭情况,如:是否有家电忘记关闭;监控家庭情况;或者在回家之前打开家里的热水器并设置水温;在天热时提前打开空调;打开电饭煲开始蒸饭……
阅读全文
摘要:1 摘要随着计算机产业以及计算机网络技术的迅猛发展,越来越多嵌入式设备的出现和家庭网络的发展,实现各种设备的互联互通已经成为人们的迫切需求,而实现家庭网络互联互通的关键是家庭网络的中间件技术。业界各大厂商都提出了自己的解决方案,其中以微软提出的UPnP最具有发展前途,也获得了最广泛的支持,目前UPnP基本是家庭网络设备必须支持的特性之一。UPnP是通用即插即用(Universal Plug and Play)的缩写,主要用于设备的智能互联互通,使用UPnP协议不需要设备驱动程序,它可以运行在目前几乎所有的操作系统平台上,使得在办公室、家庭和其他公共场所方便地构建设备互联互通成为可能。本文介绍了
阅读全文
摘要:1) 获取远程主机的端口信息和识别主机操作系统(Get info about remote host ports and OS detection)nmap -sS -P0 -sV -O <target> < target > 可以是独立IP, 一个主机名 或一个子网-sS TCP SYN扫描(也叫半开或隐蔽扫描)-P0 选项允许你关闭ICMP ping-sV 选项启用版本检测-O 表示试图识别远程操作系统其它选项:-A 选项启用OS指纹和版本检测-v 使用两次-v查看细节信息nmap -sS -P0 -A -v < target>2) 获取开放指定端口的服
阅读全文
摘要:一.linux内核网络栈代码的准备知识1. linux内核ipv4网络部分分层结构:BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件主要有:/net/socket.c /net/protocols.c etcINET socket层:BSD socket是个可以用于各种网络协议的接口,而当用于tcp/ip,即建立了AF_INET形式的socket时,还需要保留些额外的参数,于是就有了struct sock结构。文件主要有:/net/ipv4/protocol.c /net/ipv4/af_inet.
阅读全文
摘要:一、什么是HTTP协议 HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和Web服务器之间的数据交换。我们在使用IE或Firefox浏览网页或下载Web资源时,通过在地址栏中输入,开头的4个字母http就相当于通知浏览器使用HTTP协议来和host所确定的服务器进行通讯。 HTTP协议诞生于上世纪90年代初;第一个被广泛使用的版本是HTTP0.9。这个最初的版本非常简陋,它只向服务器发送一个非常简单的请求,而服务器也...
阅读全文
摘要:原文:http://xiexiaohui.com.host2.ugocn.com/index.php/archives/34转载请注明出处。来自 hello xiexh (xiexiaohui0921@163.com)这是进公司写的一个练手程序,程序功能为解析由Wireshark生成的pcap文件。实现步骤:1)用Wireshark软件抓包得到test.pcap文件2)程序:分析pcap文件头 -> 分析pcap_pkt头 -> 分析帧头 -> 分析ip头 -> 分析tcp头 -> 分析http信息#include<stdio.h>#include&l
阅读全文
摘要:转自:http://imzc.net/archives/181/%E8%A7%A3%E6%9E%90pcap%E6%96%87%E4%BB%B6%E5%8F%8A%E6%BA%90%E7%A0%81/下面pcap文件格式介绍是在网上转的,根据理解,写了个程序来进行解析pcap文件,后续再实现合并pcap功能(wireshark已经自带命令行合并pcap文件工具,在这里只是为了分析pcap文件和学习)。==========================默认的*.pcap文件保存格式。Pcap文件头24B各字段说明:Magic:4B:0x1A 2B 3C 4D:用来标示文件的开始Major:2B
阅读全文
摘要:HTTP 请求报文l HTTP Command: //方法字段,说明其使用的是GET 方法l URI: / //URL 字段,发送请求至保存该网站的服务器。l HTTP Version: //http 协议版本字段,用是的http/1.1 版本l Accept: //指示可被接受的请求回应的介质类型范围列表。l Accept-Language: //限制了请求回应中首选的语言为简体中文,否则使用默认值。l Accept-Encoding: //限制了回应中可接受的内容编码值,指示附加内容解码方式为gzip,deflate.l User-Agent: //定义用户代理,即发送请求的浏览器类型为M
阅读全文
摘要:目前主要的端口扫描技术有以下几种:1.TCP connect Scan(TCP连接扫描)这种方法也称之为“TCP全连接扫描”。它是最简单的一种扫描技术,所利用的是TCP协议的3次握手过程。它直接连到目标端口并完成一个完整的3次握手过 程(SYN、SYN/ACK和ACK)。操作系统提供的“connect()”函数完成系统调用,用来与目标计算机的端口进行连接。如果端口处于侦听状 态,那么“connect()”函数就能成功。否则,这个端口是不能用的,即没有提供服务。TCP连接扫描技术的一个最大的优点是不需要任何权限,系统中的任何用户都有权利使用这个调用。另一个好处是速度快。如果对每个目标端口以线性的
阅读全文
摘要:前言:在很多比较各种网络模型的文章中,但凡提到select模型时,都会说select受限于轮询的套接字数量,这个数量也就是系统头文件中定义的FD_SETSIZE值(例如64)。但事实上这个算不上真的限制。C语言的偏方:在C语言的世界里存在一个关于结构体的偏门技巧,例如:typedefstruct_str_type{int_len;char_s[1];}str_type;str_type用于保存字符串(我只是举例,事实上这个结构体没什么用处),乍看上去str_type只能保存长度为1的字符串('\0')。但是,通过写下如下的代码,你将突破这个限制:intstr_len=5;str
阅读全文
摘要:/* ************************************************************************ * Filename: recv.c * Description: * Version: 1.0 * Created: 2011年12月03日 20时52分08秒 * Revision: none * Compiler: gcc * Author: YOUR NAME (), * Company: * ***********...
阅读全文
摘要:为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”算法,再后来在TCP NewReno中又对“快速恢复”算法进行了改进,近些年又出现了选择性应答( selective acknowledgement,SACK)算法,还有其他方面的大大小小的改进,成为网络研究的一个热点。TCP的拥塞控制主要
阅读全文
摘要:关于TCP慢启动和拥塞避免的题sourceurl:http://bbs.51cto.com/thread-698868-1-1.html
阅读全文