net
Alan0521
这个作者很懒,什么都没留下…
展开
-
Linux Socket编程(不限Linux)
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有转载 2012-03-12 17:20:15 · 485 阅读 · 0 评论 -
ARP, Address Resolution Protocol
ARP, Address Resolution Protocol----====http://www.networksorcery.com/enp/protocol/arp.htm转载 2012-05-28 10:09:35 · 1470 阅读 · 0 评论 -
TCP序列号和确认号详解
在网络分析中,读懂TCP序列号和确认号在的变化趋势,可以帮助我们学习TCP协议以及排查通讯故障,如通过查看序列号和确认号可以确定数据传输是否乱序。但我在查阅了当前很多资料后发现,它们大多只简单介绍了TCP通讯的过程,并没有对序列号和确认号进行详细介绍,结合实例的讲解就更没有了。近段时间由于工作的原因,需要对TCP的序列号和确认号进行深入学习,下面便是我学习后的一些知识点总结,希望对TCP序列号和确转载 2012-06-03 17:06:32 · 1274 阅读 · 0 评论 -
你所不知道的传输层
1. 传输层的主要功能是什么?2. 传输层如何区分不同应用程序的数据流?3. 传输层有哪些协议?4. 什么是UDP协议?5. 为什么有了UDP,还需要TCP?6. 什么是TCP协议?7. 怎么理解协议和程序?8. TCP是否真的有链接?9. 链接是如何建立的(逻辑上)?10. 所谓的建立TCP链接开销很大,具体是指什么?11. 三次握手的目的是什么?12转载 2012-06-03 18:10:03 · 815 阅读 · 0 评论 -
TCP中32位序号详解
首先解释一段截取的网络数据认识一下。(由a_la_lei解释)1、-> syn(这一步是初始化发送端的ISN。理论上,它的数据字段没有任何值,消耗的是一个虚字节)TCP: Sequence number = 4071231308TCP: Acknowledgement number = 02、TCP: Sequence number = 1191340143TCP: A转载 2012-06-03 23:07:20 · 2549 阅读 · 0 评论 -
TCP握手协议
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端转载 2012-05-22 22:17:25 · 1058 阅读 · 0 评论 -
TCP握手/挥手的过程分析
TCP连接建立在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。服务器必须准备好接受外来的连接。这通过调用socket、 bind和listen函数来完成,称为被动打开(passive open)。第一次握手:客户通过调用connect进行主动打开(active open)。这引起客户TCP发送一个SYN(表示同步)分节(SYN=J),它告诉服务器客户将在连转载 2012-05-22 22:21:43 · 678 阅读 · 0 评论 -
基于Linux下的UDP编程
基于Linux下的UDP编程一. Linux下UDP编程框架使用UDP进行程序设计可以分为客户端和服务器端两部分。1.服务器端程序包括:Ø 建立套接字Ø 将套接字地址结构进行绑定Ø 读写数据Ø 关闭套接字2.客户端程序包括:Ø 建立套接字Ø 读写数据Ø 关闭套接字3.服务器转载 2012-05-22 21:37:55 · 598 阅读 · 0 评论 -
基于Socket的UDP和TCP编程介绍
一、概述TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议。TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(stream socket)的一种。UDP:用户数据报协议。UDP是一种无连接协议。UDP套接口是数据报套接口(datagram socket)的一种。二、T转载 2012-05-22 21:40:11 · 952 阅读 · 0 评论 -
基于Linux下的TCP编程
基于Linux的TCP网络编程一.Linux下TCP编程框架TCP网络编程的流程包含服务器和客户端两种模式。服务器模式创建一个服务程序,等待客户端用户的连接,接收到用户的连接请求后,根据用户的请求进行处理;客户端模式则根据目的服务器的地址和端口进行连接,向服务器发送请求并对服务器的响应进行数据处理。1.服务器端程序包括Ø 建立套接字( so转载 2012-05-22 21:36:17 · 664 阅读 · 0 评论 -
TCP
1. IntroductionAt the Transport Layer (equivalent to Layer 4 in the OSI model), two protocols exist:TCP (Transfer Control Protocol) - breaks information into datagrams and sends them, carryi转载 2012-05-22 22:14:30 · 1256 阅读 · 0 评论 -
IP头、TCP头、UDP头详解以及定义
一、MAC帧头定义/*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{ char m_cDstMacAddress[6]; //目的mac地址 char m_cSrcMacAddress[6]; //源mac地址 short m_cType; //上一层协议类型,如0x0800代表上转载 2012-05-25 09:45:19 · 2483 阅读 · 0 评论 -
TCP、UDP、ICMP、IP header
Figure 1. IPv4 headerFigure 2. TCP headerFigure 3. UDP headerFigure 4. ICMP header====http://my.oschina.net/xngiser/blog/14350转载 2012-05-25 17:19:52 · 2652 阅读 · 0 评论 -
EPON:ONU注册流程简介
ONU注册,即新连接或者非在线的ONU接入PON网络的过程。其主要流程如下所示: 1 首先,该过程由OLT发起,在广播信道上周期性产生合法的发现时间窗口。该消息中包含发现窗口的时间和长度。2 ONU接收到消息后等待该周期的开始,然后向OLT发送REGISTER_REQ消息3 OLT在接收到REGISTER_REQ消息后,为该ONU分配LLID,并将转载 2012-06-14 23:56:38 · 9707 阅读 · 0 评论 -
组播MAC地址
MAC地址是以太网二层使用的一个48bit(6字节十六进制数)的地址,用来标识设备位置。MAC地址分成两部分,前24位是组织唯一标识符(OUI, Organizationally unique identifier),后24位由厂商自行分配。 MAC地址有单播、组播、广播之分。单播地址(unicast address)表示单一设备、节点,多播地址或者组播地址(multicast addr转载 2012-06-18 11:46:59 · 1655 阅读 · 0 评论 -
Vlan 技术
VLAN(Virtual Local Area Network),是一种通过将局域网内的设备逻辑地而不是物理地划分成一个个网段从而实现虚拟工作组的技术。IEEE于1999年颁布了用以标准化VLAN实现方案的IEEE 802.1Q协议标准草案。 虚拟局域网(VLAN),是指网络中的站点不拘泥于所处的物理位置,而可以根据需要灵活地加入不同的逻辑子网中的一种网络技术。 基于交换式以太转载 2012-07-04 23:38:23 · 1956 阅读 · 0 评论 -
Hub/Switch/Router工作原理
Hub/Switch/Router都是网络设备,但它们在网络中的位置及工作方式是不一样的。#t4N&e0p@5P:n0 1).Hub不是某些英文单词的缩写,而是一个英文单词,即集线器的意思,它是一个纯物理层设备,它工作于OSI七层网络参考模型的第一层。Hub工作示意图如下所示:中国通信人博客Z"G,L,v:` a&qa5c +L{^h"转载 2012-07-04 22:44:29 · 2867 阅读 · 0 评论 -
TCP头校验和计算算法详解
当发送IP包时,需要计算IP报头的校验和:1、 把校验和字段置为0;2、 对IP头部中的每16bit进行二进制求和;3、 如果和的高16bit不为0,则将和的高16bit和低16bit反复相加,直到和的高16bit为0,从而获得一个16bit的值;4、 将该16bit的值取反,存入校验和字段。◆当接收IP包时,需要对报头进行确认,检查IP头是否有误,算法同上2、3步,然转载 2012-05-04 14:27:15 · 1835 阅读 · 0 评论 -
Linux下如何获取网卡信息
有时候,写程序的时候需要获取计算机的网络信息,比如IP地址、电脑名称、DNS等信息。IP地址和电脑名称是比较容易获取到的,而要想获取地址掩码、DNS、网关等信息就有些麻烦了。在Windows下我们一般都是通过从注册表读取这些信息。在Linux怎么做呢?其实,Linux下更加容易一些。因为我们可以拿现成的程序看它的源代码。通过阅读其源代码找到解决该问题的方法。那么,看哪个程序的源代码呢?如果你使转载 2012-04-28 11:35:13 · 1620 阅读 · 0 评论 -
Linux下获取第一个网络接口名称的函数实现
以下代码摘自开源程序--------iftop /* This is a list of interface name prefixes which are `bad' in the sense * that they don't refer to interfaces of external type on which we are * likely to wa转载 2012-04-27 17:51:19 · 2009 阅读 · 0 评论 -
ioctl Socket Control Operations
PurposePerforms network related control operations.Syntax#include int ioctl (fd, cmd, .../* arg */) int fd;int cmd; int ... /* arg */DescriptionThe socket ioctl commands per转载 2012-03-12 16:14:23 · 2392 阅读 · 0 评论 -
Linux中利用RAW SOCKET直接通过网卡收发数据
问题背景:公司原来为了搜索局域网内的网络视频解码器开发了一个Decoder Finder,用的是UDP广播的方式。现在韩国的客户发现当IP地址和PC不在同一网段时,无法搜索到decoder,人家还找了一个他们的软件,暴强,就算是IP地址全是0,照搜不误。问题分析:PC端,其实也就是用winpcap,直接和网卡通信,把消息包发出来,并且在接受响应。这样数据包不经过IP和UDP协议栈,转载 2012-03-14 15:45:11 · 11220 阅读 · 1 评论 -
一个linux UDP网络通讯的例子源代码(server、client方式)
服务器端代码#include #include #include #include #include #include #include #include int main(int argc, char *argv[]){int sock;//sendto中使用的对方地址struct sockaddr_in toAddr;//在recvfro转载 2012-03-14 14:26:15 · 624 阅读 · 0 评论 -
PF_PACKET 相关基础知识
PACKET(7)Section: PACKET(7) (Linux)Updated: Programmer'sIndexReturn to Main Contents NAME分组(也译为数据包),PF_PACKET - 在设备层的分组接口译注:PF_PACKET 中的 PF 是 protocol family(协议族)的缩写。 SYNOPSI转载 2012-03-14 17:30:46 · 1243 阅读 · 1 评论 -
Linux / Unix Command: packet
Linux / Unix Command: packet Command Library NAMEpacket, PF_PACKET - packet interface on device level. SYNOPSIS#include sys/socket.h>#include features.h> /* for th转载 2012-03-15 13:31:34 · 1036 阅读 · 0 评论 -
单播、组播、广播、组播以及泛洪的区别
很多学员都在问,单播、组播、广播的定义以及区别,费功夫给大家讲一下,希望对大家的学习有帮助。 一、什么是组播1、组播的特点1)什么是组播?组播是一种数据包传输方式,当有多台主机同时成为一个数据包的接受者时,出于对带宽和CPU负担的考虑,组播成为了一种最佳选择。2)组播如何进行工作? 组播通过把224.0.0.0-239.255.255.255的D类地址作为目的地址,有转载 2012-03-15 09:47:15 · 3607 阅读 · 0 评论 -
路由器原理及路由协议
本文通过阐述TCP/IP网络中路由器的基本工作原理,介绍了IP路由器的几大功能,给出了静态路由协议和动态路由协议,以及内部网关协议和外部网关协议的概念,同时简要介绍了目前最常见的RIP、OSPF、BGP和BGP-4这几种路由协议,然后描述了路由算法的设计目标和种类,着重介绍了链路状态法和距离向量法。在文章的最后,扼要讲述了新一代路由器的特征。——近十年来,随着计算机网络规模的不断扩大,大型转载 2012-03-15 10:23:27 · 1208 阅读 · 0 评论 -
Linux原始套接字之ARP协议实现
1. ARP协议介绍 ARP(AddressResolutionProtocol)地址解析协议用于将计算机的网络地址(IP地址32位)转化为物理地址(MAC地址48位)[RFC826].ARP协议是属于链路层的协议,在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核(如驱动)必须知道目的端的硬件地址才能发送数据。当转载 2012-03-14 15:54:05 · 2282 阅读 · 0 评论 -
链路层套接字PF_PACKET简介
在linux环境中要从链路层(MAC)直接收发数据帧,可以通过libpcap与libnet两个动态库来分别完成收与发的工作。虽然它已被广泛使用,但在要求进行跨平台移植的软件中使用仍然有很多弊端。这里介绍一种更为直接地、无须安装其它库的从MAC层收发数据帧的方式,即通过定义链路层的套接字来完成。Packet套接字用于在MAC层上收发原始数据帧,这样就允许用户在用户空间完成MAC之上各转载 2012-03-14 15:55:16 · 811 阅读 · 0 评论 -
linux sock_raw原始套接字编程
sock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket 1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)发送接收ip数据包2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP|E转载 2012-03-14 15:30:09 · 1191 阅读 · 0 评论 -
Linux Socket的一些小结
今天中午看了一下socket()中各参数的意思,以及各种组合的相关含义,现归纳一些raw_socket使用组合,以备查阅: (1)当socket()中第一个参数为AF_INET(等价于PF_INET)时,表示的是获取从网络层开始的数据:socket(PF_INET,SOCK_RAW,......): 当接收包时,表示用户获得是完整的包含IP报头的数据包,即数据从IP头转载 2012-03-14 17:06:53 · 1770 阅读 · 0 评论 -
原始套接字
实际上,我们常用的网络编程都是在应用层的报文的收发操作,也就是大多数程序员接触到的流式套接字(SOCK_STREAM)和数据包式套接字(SOCK_DGRAM)。而这些数据包都是由系统提供的协议栈实现,用户只需要填充应用层报文即可,由系统完成底层报文头的填充并发送。然而在某些情况下需要执行更底层的操作,比如修改报文头、避开系统协议栈等。这个时候就需要使用其他的方式来实现。 一 原始套转载 2012-03-14 17:19:40 · 1068 阅读 · 0 评论 -
MAC地址解析-广播地址、组播地址和单播地址的特征
MAC地址分成三类,分别是广播地址、组播地址和单播地址。首先,FF:FF:FF:FF:FF:FF毫无疑问是广播地址。每个网卡出厂时被分配唯一一个单播地址,头24位是设备制造厂商的编号,由IEEE(电气与电子工程师协会)分配,后24位是设备厂商为网卡制定的唯一编号。例如08:00:20:0A:8C:6D是单播地址的例子,其中08:00:20是著名的CPU厂商AMD的编号。单播地址的特征是头8位的最低转载 2012-03-15 10:50:10 · 20019 阅读 · 2 评论 -
MII/MDIO接口详解
本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在10/100模式下和1000M模式下的设计方法。MII接口提供了MAC与PHY之间、PHY与STA(Station Management)之间的互联技术,该接口支持10Mb/s与100Mb/s的数据传输速率,数据传输的转载 2012-03-21 21:35:00 · 1256 阅读 · 0 评论 -
用setsockopt()来控制recv()与send()的超时
在send(),recv()过程中有时由于网络状况等原因,收发不能预期进行,而设置收发超时控制:在Linux下需要注意的是时间的控制结构是struct timeval而并不是某一整型数,以下是来自于网上一篇文章中的摘录,它是这样写的:int nNetTimeout=1000;//1秒,//设置发送超时setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO,转载 2012-04-27 15:48:58 · 1174 阅读 · 0 评论 -
简单分析一下socket中的bind
在最开始接触bind的时候,只是在写基于tcp的server端的时候,知道在listen之前需要先bind一下,用来确保socket能在某个固定的端口监听。而bind的时候,函数参数中的端口填自己将要绑定的端口就行;而IP地址,需要填本机的IP,但是也可以用一个宏INADDR_ANY代替,用这个宏就可以不用查找本机的IP,它就可以代替本机的IP。当时只觉得这个INADDR_ANY比较神奇,但是由于转载 2012-04-27 17:50:27 · 1927 阅读 · 0 评论 -
wireshark过滤语法总结
做应用识别这一块经常要对应用产生的数据流量进行分析。抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后参考。(脑子记不住东西)wireshark进行过滤时,按照过滤的语法可分为协议过滤和内容过滤。对标准协议,既支持粗粒度的过滤如HTTP,也支持细粒度的、依据协议属性值进行的过滤如tc转载 2012-07-20 15:05:54 · 674 阅读 · 0 评论