linux socket学习笔记(第三章)
IP地址是一个32位的二进制数,它由点分十进制记法表示,每一个十进制数代表一个8位无符号整型数,所以范围在0-255之间。
一个IP地址分为网络地址和主机地址,网络地址区分不同网络,主机地址区分相同网络中不同主机。不同的IP地址类他们的主机网络地址也是不固定的,A,B,C类地址定义了某一主机特定的IP地址,D类为组播地址,E类为保留今后所用。具体的划分是: 分类 最低 最高 网络位 主机位
A 0.0.0.0 127.255.255.255 7 24
B 128.0.0.0 191.255.255.255 14 16
C 192.0.0.0 223.255.255.255 21 8
D 224.0.0.0 239.255.255.255 28 N/A
E 240.0.0.0 247.255.255.255 27 N/A
网络掩码的作用在于把网络地址从IP地址中提取出来,实际上代表网络掩码的IP号与某一特定的IP地址进行“按位与”。 分类 最低 最高 网络掩码
A 0.0.0.0 127.255.255.255 24
B 128.0.0.0 191.255.255.255 16
C 192.0.0.0 223.255.255.255 8
以下是对IP地址进行检查和分类的源代码
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(int argc, char **argv)
{
int x;
struct sockaddr_in adr_inet;
int len_inet;
unsigned msb;
char class;
char *netmask;
static struct {
unsigned char ip[4];
} addresses[] = {
{ {
44, 135, 86, 12}}, { {
127, 0, 0, 1}}, { {
172, 16, 23, 95}}, { {
192, 168, 9, 1}},};
for (x = 0; x < 4; ++x) {
memset(&adr_inet, 0, sizeof(adr_inet));
adr_inet.sin_family = AF_INET;
adr_inet.sin_port = htons(9000);
memcpy(&adr_inet.sin_addr.s_addr, addresses[x].ip, 4);
len_inet = sizeof(adr_inet);
msb = *(unsigned char *) &adr_ine
相关文档:
Linux的系统调用是通过中断来实现的,从用户态进入系统态。用户态和系统态有很清晰的区分,保证了安全。系统调用表是系统调用的跳转表。使用寄存器传递参数,而不是栈,因为用户态是无法访问系统栈的。地址错误是通过页面异常来处理的。
Linux内核并不支持真正意义上的线程,
LinuxThreads
是用与普通进程具有同样内核 ......
来源: ChinaUnix博客 日期: 2007.10.08 13:29 (共有0条评论) 我要评论
一、必须先装vmware tools
1、以ROOT身份进入LINUX
2、按下 CTRL+ALT组合键,进入主操作系统,点击VMWARE状态栏安装提示,或者点击 SETTING菜单下的ENABLE VMWARE TOOLS子菜单。
3、确认安装VMWARE TOOLS。
&nbs ......
三、VMA和PAGE结构 和mmap函数
1.page 主要成员
atomic_t count;
//这个页的引用数. 当这个 count 掉到 0, 这页被返回给空闲列表.
void *virtual;
//如果页被映射,则表示这页的内核虚拟地址; 否则, NULL.
unsigned long flags;
//描述页状态的一套位标志. 这些包括 ......
许多刚接触Linux的网络管理员发现,他们很难由指向点击式的安全配置界面转换到另一种基于编辑复杂而难以捉摸的文本文件的界面。本文列出七条管理员能够也应该可以做到的步骤,从而帮助他们建立更加安全的Linux服务器,并显著降低他们所面临的风险。
请任何大型机构的网络管理员对Linux和网络操作系统(如Windows NT或No ......