socket pro
/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的更多相关文章
- Path Analyzer Pro出现raw socket问题
使用windows7,8以及10平台运行一个traceroute liketools软件,名为Path Analyzer Pro 2.7,遇到raw socket问题,如图: 原因是raw socke ...
- socket编程
一.socket地址的数据类型及相关函数 socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4.IPv6.UNIX Domain Socket.然而各种网络协议的地址格式并 ...
- 计算机病毒实践汇总六:IDA Pro基础
在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索.敬请批评指正! 1. IDA使用 (1)搜索.下载并执行IDA Pro,对可执行程序lab05-01.dll进行装载,分别以图形 ...
- Mac Pro 解压安装MySQL二进制分发版 mysql-5.6.30-osx10.11-x86_64.tar.gz(不是dmg的)
没有mac的root密码,当前用户有sudo权限,所以想以root身份执行的命令都加了sudo. 是否存在 _mysql 用户和用户组,并查看用户 _mysql 是不是用户组 _mysql 的成员. ...
- Windows Socket 最大连接数
Socket 编程时,单机最多可以建立多少个 TCP 连接,受到操作系统的影响. Windows 下单机的TCP连接数受多个参数影响: 最大TCP连接数 [HKEY_LOCAL_MACHINE \Sy ...
- [Arduino] 基于Xbee Pro和网络技术的智能公交系统设计
转自:http://www.21ic.com/app/rf/201112/99474.htm 引言 公共交通具有个体交通无法比拟的强大优势,优先发展城市公共交通系统是解决大.中城市交通问题的最佳途径. ...
- NodeJS+Express+Socket.io的一个简单例子
关键字:NodeJS,Express,Socket.io. OS:Windows 8.1 with update pro. 1.安装NodeJS:http://nodejs.org/. 2.初始化一个 ...
- TCP SOCKET中backlog参数的用途是什么? ---图解
recv_queue中的包大小,为内核的包大小,而不是ip包大小. 如果发出去的包太大,需要修改write_queue和tx_queue两个参数,tx_queue主要是流量控制. 多进程必须在sock ...
- Qt学习 之 Socket通信(世界上最简单的例子了)
最近写大作业用到Qt的Socket部分,网上关于这部分的资料都太过复杂,现在总结一下一些简单的应用.有机会可以给大家讲讲用Socket传送文件的代码. 这里主要讲解如何实现TCP和UDP的简单通信. ...
随机推荐
- JavaScript 类私有方法的实现
一:将私有方法移出模块,因为模块内部的所有方法都是对外可见的. class Widget { foo (baz) { bar.call(this, baz); } // ... } function ...
- Graph Databases—The NOSQL Phenomenon阅读笔记
本章内容着重对了NOSQL和RDBMS(关系型数据库管理系统)的不同,以及其各自背后设计时考虑的因素.然后接下来,着重讲述了NOSQL的4种分类方法.下面我们将对重要知识点进行汇总. 1.We def ...
- HTML5 API's (Application Programming Interfaces)
New HTML5 API's (Application Programming Interfaces) The most interesting new API's are: HTML Geoloc ...
- Android软键盘强制弹出,隐藏输入法.
本文实例讲述了Android实现弹出键盘代码,是一个非常实用的功能.代码非常简洁.分享给大家供大家参考. 具体功能代码如下: ? 1 2 3 4 5 6 7 8 Timer timer = new T ...
- Nicholas C. Zakas(JS圣经:JavaScript高级程序设计作者)如何面试前端工程师
Original Post:Interviewing the front-end engineerNicholas C. Zakas,2010年1月5日翻译完成:2010年1月7日,最后更新:2010 ...
- TypedArray和obtainStyledAttributes使用
在编写Android自定义按钮示例基础上,如果要指定字体大小产生这样的效果: 其实是不需要自定义变量的,可以直接使用TextView的配置属性: <com.easymorse.textbutto ...
- R语言编程艺术# 矩阵(matrix)和数组(array)
矩阵(matrix)是一种特殊的向量,包含两个附加的属性:行数和列数.所以矩阵也是和向量一样,有模式(数据类型)的概念.(但反过来,向量却不能看作是只有一列或一行的矩阵. 数组(array)是R里更一 ...
- Spinner( 微调) 组件
本节课重点了解 EasyUI 中 Spinner(微调)组件的使用方法,这个组件依赖于ValidateBox(验证框)组件. 一. 加载方式Spinner(微调)组件是其他两款高级微调组件的基础组件, ...
- OD: Register, Stack Frame, Function Reference
几个重要的 Win32 寄存器 EIP 指令寄存器(Extended Instruction Pointer) 存放一个指针,指向下一条等待执行的指令地址 ESP 栈指针寄存器(Extended St ...
- lvm拉伸逻辑卷分区小总结
文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/vg_znl-lv_root ...