/etc/exports
/tmp目录共享为任何人可以共享并可以进行读写操作

/tmp  *(rw,no_root_squash)

/home/test  192.168.1.*(rw)  *(ro)

/etc/init.d/nfs-kernel-server  start

showmount

-a 参数一般在NFS server上使用,用来显示已经挂载在本机nfs目录客户端机器列表

-e 显示指定的NFS server上export出来的目录

linux自定义网络服务

小的服务程序不经常使用的服务程序 被集成到服务器管理程序中inetd,xinetd

extended internet services daemon 扩展的internet 服务daemon

控制internet服务的应用程序

socket_type 网络套接字类型 流数据包streamTCP dgramUDP seqpacket(可靠有序数据报)

进行自定义网络服务配置

#default:on

#description:The vsftpd server serves vsftpd sessions

service vsftpd

{

  disable = no

  port  = 21

  socket_type  = stream

  protocol  = tcp

  user = root  

server = /usr/sbin/vsftpd

type = unlisted

wait  = no

}

TCP网络编程

socket addree struct 对内核和应用层之间的内存数据传递方式

TCP套接字服务器和客户端编程框架

socket(),bind(),listen(),accept(),connect(),close()数据读取发送

read(),write()

对信号的截取sigpipe sigintsignal

套接字地址结构 address struct

不同的地址结构定义有不同的

进行套接字编程 基本的数据结构

套接字的地址结构定义

socket address struct

进行套接字编程 指定套接字地址参数

不同的protocol family 不同的地址结构

地址结构通常以sockaddr_

通用的套接字数据结构

struct sockadrr {

  sa_family_t sa_family;

  char  sa_data[14]; /*协议簇数据*/

}

实际使用的套接字数据结构

套接字数据结构

网络程序设计  套接字函数都用这个结构作为参数

int bind(int socketfd,  /*套接字文件描述符*/

    const struct sockaddr *my_addr;  /*套接字地址结构*/

    socketlen_t  addrlen;  /*套接字地址结构的长度*/

)

typedef unsigned short ;

struct socketaddr_in { 以太网套接字地址结构

  u8  sin_len;  /*结构struct sockaddr_in length*/

  u8  sin_family;  /*地址簇AF_INET address_family*/

  u16  sin_port;  16位端口号,网络字节序

  struct in_addr sin_addr;  //Ip地址32biy 4Bytes;

  char sin_zero[8];

}

有一个ip地址

struct in_addr sin_addr ip地址

struct in_addr {

  u32  s_addr;

};

sin_len 无符号字符类型,表示结构struct sockaddr_in

unsigned char

struct in_addr

用户层与内核层进行交换过程

向内核传入数据,从内核 读出数据Accept(),recv()

TCP网络编程架构

TCP网络编程架构模式  服务器  客户端

服务器模式创建服务程序,等待客户端用户连接,接收到用户的连接请求,根据用户的请求进行处理

客户端模式根据服务器的地址和端口进行连接

向服务器发送并对服务器的响应进行数据处理

服务器端程序设计模式

Tcp端连接的服务器模式程序设计流程

服务器模式的程序设计流程

套接字初始化

套接字与端口绑定 ,设置服务器的监听连接,接受客户端连接  接收和发送数据并进行数据处理 及数据传输完成的套接字close()

TCP连接的服务器模式程序设计流程

套接字初始化(socket()),套接字与端口绑定(bind()),设置服务器的侦听连接(listen()),接受客户端连接(accept()),接收和发送数据(read(),write()),close()

套接字初始化过程中 根据用户对套接字的需求

确定套接字的选项 网络类型,协议类型和具体的协议标号

根据用户需求 生成一个套接字文件描述符

套接字与端口的绑定,套接字与地址结构进行绑定  网络程序设计的时候  套接字所代表的Ip地址端口号及协议类型

服务器需要满足多个客户端的连接请求,服务器在某个时间仅能处理有限个数的客户端连接请求,服务器需要设置服务器端排队队列的长度

服务器监听 限制客户端中等待服务器处理连接请求的队列长度

服务器接收客户端请求可以从套接字文件

从套接字文件描述符中读取数据或者向文件描述符中发送数据

客户端程序设计模式

套接字初始化(socket()),连接服务器(connect()),读写网络数据(read(),write()).进行数据处理最后关闭close()

客户端程序设计模式流程与服务器的处理模式流程

客户端在套接字初始化  不可进行地址绑定   而是直接连接服务器端

客户端连接服务器的处理过程中,客户端根据用户设置的服务器地址端口号 等parameters与特定的服务器程序进行通信

客户端与服务器的交换过程

客户端与服务器在连接,读写数据,关闭连接   客户端连接,服务器接收  进行three way handshake 建立TCP连接   进行数据交换

close(fd);

创建网络插口函数socket()

网络程序设计中套接字系统调用socket()函数用来获得文件描述符

协议簇domain,协议类型 type,协议编号为protocol的套接字文件描述符,函数调用成功,返回一个表示这个套接字的文件描述符,失败返回-1

#include <sys/types.h>

#include <sys/socket.h>

int socket(int domain,int type,int protocol);

domain设置网络通信的域,通信协议簇,sys/socket.h PF_INET 地址簇,协议簇

地址簇  协议簇  在头文件sys/socket.h AF_INET,PF_INET;

domain PF_UNIX,PF_LOCAL PF_INET ipv4 internet协议

PF_INET6协议

PF_IPX novell

PF_NETLINK   netlink 内核用户界面程序

PF_PACKET 底层

PF_appletalk

函数socket() type设置套接字通信类型

流式套接字sock_STREAM,sock_dgram数据包

sock_stream tcp连接,提供序列化的,可靠的,双向连接的字节流,支持带外数据传输

sock_dgram upd连接,无连接状态的消息

sock_seqpacket序列化包  提供一个序列化可靠双向的基于连接的数据传输通道  数据长度定长 每次调用读系统调用时提供原始网络协议访问

sock_RDM 提供可靠的数据报文

某些协议只有特定类型 protocol 仅  sock_stream

类型为sock_stream 套接字 连接使用connect 进行

read(),write()进行数据传输 connect

sock_dgram raw sendto() recvfrom接收数据

接收来自指定ip地址的发送方数据

sock_packaet专用数据包,直接从设备驱动接收数据

errno()stderr errno.h

fprintf errorno(errno);

进程文件表溢出已经达到进程可以同时打开的文件数上限

enfile 已经达到系统允许打开的文件数量

domain(AF_INET),sock_stream

struct socket{

socket_state  state;  /*socket状态*/

unsigned long  flags;  

const struct proto_ops *ops;

struct fasync_struct  *fasync_list;

struct  file  *file

struct sock  *sk;

wait_queue_head_t  wait;

}

建立套接字文件描述符,需要对套接字进行地址及端口的绑定,数据的接收和发送

addlen struct sockaddr

int bind(int sockfd,const struct sockaddr *my_addr,socklen_t addlen);

bind函数将长度为addlen struct sockadd 类型参数

int bind(int sockfd,const struct sockaddr *my_addr,socklen_t addrlen);

int bind(int sockfd,const struct sockaddr *my_addr,socklen_t addrlen);

socklen_t addrlen;

int sockfd,const struct sockaddr *my_addr;

const struct sockaddr *my_addr 地址 端口ip地址信息;进行地址绑定 地址结构中的ip地址端口

sizeof(struct sockaddr)

struct sockaddr_un {

sa_family_t sun_family;  /*协议簇,AF_UNIX*/

char sun_path[UNIX_PATH_MAX];

}

socket pro的更多相关文章

  1. Path Analyzer Pro出现raw socket问题

    使用windows7,8以及10平台运行一个traceroute liketools软件,名为Path Analyzer Pro 2.7,遇到raw socket问题,如图: 原因是raw socke ...

  2. socket编程

    一.socket地址的数据类型及相关函数 socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4.IPv6.UNIX Domain Socket.然而各种网络协议的地址格式并 ...

  3. 计算机病毒实践汇总六:IDA Pro基础

    在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索.敬请批评指正! 1. IDA使用 (1)搜索.下载并执行IDA Pro,对可执行程序lab05-01.dll进行装载,分别以图形 ...

  4. Mac Pro 解压安装MySQL二进制分发版 mysql-5.6.30-osx10.11-x86_64.tar.gz(不是dmg的)

    没有mac的root密码,当前用户有sudo权限,所以想以root身份执行的命令都加了sudo. 是否存在 _mysql 用户和用户组,并查看用户 _mysql 是不是用户组 _mysql 的成员. ...

  5. Windows Socket 最大连接数

    Socket 编程时,单机最多可以建立多少个 TCP 连接,受到操作系统的影响. Windows 下单机的TCP连接数受多个参数影响: 最大TCP连接数 [HKEY_LOCAL_MACHINE \Sy ...

  6. [Arduino] 基于Xbee Pro和网络技术的智能公交系统设计

    转自:http://www.21ic.com/app/rf/201112/99474.htm 引言 公共交通具有个体交通无法比拟的强大优势,优先发展城市公共交通系统是解决大.中城市交通问题的最佳途径. ...

  7. NodeJS+Express+Socket.io的一个简单例子

    关键字:NodeJS,Express,Socket.io. OS:Windows 8.1 with update pro. 1.安装NodeJS:http://nodejs.org/. 2.初始化一个 ...

  8. TCP SOCKET中backlog参数的用途是什么? ---图解

    recv_queue中的包大小,为内核的包大小,而不是ip包大小. 如果发出去的包太大,需要修改write_queue和tx_queue两个参数,tx_queue主要是流量控制. 多进程必须在sock ...

  9. Qt学习 之 Socket通信(世界上最简单的例子了)

    最近写大作业用到Qt的Socket部分,网上关于这部分的资料都太过复杂,现在总结一下一些简单的应用.有机会可以给大家讲讲用Socket传送文件的代码. 这里主要讲解如何实现TCP和UDP的简单通信. ...

随机推荐

  1. openflow tutorial 开始openflow的学习(一)

    首先不废话介绍openflow了,自己也还搞不清楚究竟是个什么玩意儿,概括不出什么内容来,先做试验,有个大体的感性了解回来再总结吧. 第一步,搭建环境,这一步就是安装工具,不同的系统环境搭建不一致,我 ...

  2. c++大作业--学籍管理系统--

    1.题目描写叙述 学籍管理系统: 依据信息管理系统的业务流程.要求以及所要实现的目标,完毕下面功能: (1)建立学生档案的管理和维护.实现计算机自己主动化管理体制. (2)建立学生成绩管理机制,在计算 ...

  3. Unity 制作虚拟手柄例子

    Unity不愧是收费开发软件,有写好的Joystick(虚拟手柄),使用起来很简单,我们一起来学习一下哈!! 本文源代码Win版的 :http://vdisk.weibo.com/s/BDn59yfn ...

  4. 判断是否是IP地址

    static bool IsIP(QString IP) { QRegExp RegExp("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\ ...

  5. 解决svn状态图标不显示的办法

    SVN是一款出色的代码版本控制工具,大部分开发者都在使用.由于前不久刚做了系统,所以要重装一下SVN,结果就出了问题,问题就是,不管是文件处于什么状态他的提示图标都不显示,这就太不给力了吧.通过搜寻, ...

  6. 输入一个字符串,输出时数字倒序。例如:输入"hello2345wo7654",输出则为"hello5432wo4567"

    public class ReserveString { public static void main(String[] args) { System.out.println("Pleas ...

  7. 在浏览器中就可以写F#程序了,你试试吧

    学习F#有一种简单办法,不需要安装Visual Studio,在浏览器中就可以写F#了,非常方便,进入下面的链接,你可以试试. http://www.tryfsharp.org/Learn

  8. ORACLE基本SQL语句-添加更新数据函数篇

    一.添加数据 /*添加数据*/insert into STU values('stu0004','赵一',18,1,"kc0004");insert into STU(STU_ID ...

  9. explicit 只对构造函数起作用,用来抑制隐式转换。

    class A { private: int a; public: A(int x) :a(x){} void display(){ cout << a << endl; } ...

  10. 随笔: WC2016感想

    在某些时刻,我可以体会到非常复杂的情感,这种情感神秘的来源不能被描述.它非常的复杂.你无法分清,这种情感是来源于一个个神经元控制的情感系统的一时冲动,亦或是你如实地反馈了你所正在感知的外界. 但我曾在 ...