wjlkoorey258

2016年7月24日

(十一)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【上】

摘要: 预备知识:part1: 初见getopt_long() 在分析iptables源码时,作为命令解析的核心函数getopt_long()不得不提。随便百度或google搜索关于该函数的介绍有很多例子和解释,这里我只举一例,目的是让大家了解传递给iptables命令的每个参数是如何被正确识别并... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(946) 评论(0) 推荐(0)

(十)洞悉linux下的Netfilter&iptables:网络地址转换原理之SNAT

摘要: 源地址转换:SNAT SNAT主要应用于下列场景: 这种情况下,我们只有一个公网地址A,而又有三台主机需要同时上网,这时就需要SNAT了。它的主要作用是将那些由私网发来的数据包skb的源地址改成防火墙的公网地址A,这是因为目的主机在响应源地址为私网地址的数据包时,私网地址不能在网络... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(398) 评论(0) 推荐(0)

揭开网络编程常见API的面纱【上】

摘要: Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作。 1、socket(family,type,protocol) 当我们在开发网络应用... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(125) 评论(0) 推荐(0)

Linux网络编程:原始套接字的魔力【续】

摘要: 如何从链路层直接发送数据帧 本来以为这部分都弄完了,结果有朋友反映说看了半天还是没看到如何从链路层直接发送数据。因为上一篇里面提到的是从链路层“收发”数据,结果只“收”完,忘了“发”,实在抱歉,所以就有这篇续出来了。 上一节我们主要研究了如何从链路层直接接收数据帧,可以通过... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(288) 评论(0) 推荐(0)

Linux网络编程:原始套接字的魔力【下】

摘要: 可以接收链路层MAC帧的原始套接字 前面我们介绍过了通过原始套接字socket(AF_INET, SOCK_RAW, protocol)我们可以直接实现自行构造整个IP报文,然后对其收发。提醒一点,在用这种方式构造原始IP报文时,第三个参数protocol不能用IPPROTO_IP... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(1522) 评论(0) 推荐(0)

Linux网络编程:原始套接字的魔力【上】

摘要: 基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(543) 评论(0) 推荐(0)

Linux网络编程:基于UDP的程序开发回顾篇

摘要: 基于无连接的UDP程序设计 同样,在开发基于UDP的应用程序时,其主要流程如下: 对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流程基本差不多。对比面向连接的TCP程序,服务端少了listen和accept函数。前面我们也说过listen函数最主要的作用... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(169) 评论(0) 推荐(0)

Linux网络编程:基于TCP的程序开发回顾篇

摘要: 面向连接的TCP程序设计 基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程: 其实按照上面这个流程调用系统API确实可以完全实现应用层程序的开发,一点问题没有。可随着时间的推移,你会觉得这样子的开发毫无激情。为什么TCP的开发就要按照这样的流程来呢?... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(562) 评论(0) 推荐(0)

Linux环境下网络编程杂谈

摘要: 今天我们说说“Pre-网络编程”。内容比较杂,但都是在做网络应用程序开发过程中经常要遇到的问题。 一、大端、小端和网络字节序 小端字节序:little-endian,将低字节存放在内存的起始地址; 大端字节序:big-endian,将高字节存放在内存的其实地址。 例如,数字in... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(174) 评论(0) 推荐(0)

SNMP从入门到开发:进阶篇

摘要: 管理信息库:MIB 我们要扩展mib首先必须清楚mib是如何定义的,用的什么语言,有哪些约定,遵循哪些规则等等。这些基本东西掌握过后,我们就可以很轻松的来写自己的mib文件了。 所谓管理信息库,或者MIB,就是所有代理进程包含的、并且能够被管理进程进行查询和设置的信息的集合,或者叫管理对象的集... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(526) 评论(0) 推荐(0)

导航