《套接口概念》PPT课件.ppt
《《套接口概念》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《套接口概念》PPT课件.ppt(27页珍藏版)》请在三一办公上搜索。
1、第二章 套接口概念,套接口简介域和地址簇地址转换函数利用套接口通信,2.1 套接口简介(1),网间进程通信:单机环境:不同进程用进程号(PID)唯一标识 网络环境:与协议、地址、端口有关端口:进程通过系统调用与某端口建立连接后,传输层通过端口与进程通信。端口操作类似一般的I/O操作,可以用读写原语访问,端口号类似于文件描述符。不同协议(如TCP和UDP)可以有相同的端口号,不冲突。地址:网络地址、主机地址、进程标识(端口号),一个完整的网间进程通信需要三元组(协议,本机地址,本机端口号)或五元组标识(协议,本机地址,本机端口号,远程主机,远程端口号)网络字节顺序:不同计算机存放多字节值顺序不同
2、,网络协议中需指定网络字节顺序。,2.1 套接口简介(2),Client/Server模式:网间进程通信的主要模式是客户机/服务器模式。客户程序向服务程序发请求,服务程序接收来自客户程序的请求并处理,处理后把结果回送给客户,服务进程一般是先于客户请求启动的。这两个进程往往通过网络连接在不同机器上,进程间的通信使用网络编程。Socket:应用程序调用编程接口实现网络编程。Socket(套接字)可以在传输层、网际层和数据链路层上进行编程。,2.1 套接口简介(3),Socket的使用 插座的使用,Socket与插座的类比,2.1 套接口简介(4),Socket类型Internet Socket(I
3、nternet地址)UNIX Socket(本地节点路径名)X.25 Socket(X.25地址)只讲Internet Socket,常用类型有:流套接字 SOCK_STREAM:基于TCP协议。数据报套接字 SOCK_DGRAM:基于UDP协议。原始套接字 SOCK_RAM:允许对较低层次协议(如IP、ICMP)直接访问。本地套接字:通过socket技术可以实现不同主机上进程间通信,在单一主机上进程间的通信(IPC)也可用socket技术实现,用于移植远程客户/服务器程序到单一主机上。,2.1 套接口简介(5),使用Socket使用文件描述符 文件描述符是一个和打开的文件相关联的整数,这个文
4、件可以是真正的文件、网络连接、管道、终端等。Socket使用UNIX文件描述符和其他进程通信系统调用。需要一套专用的函数来操作 socket()创建套接口,返回一个文件描述符 connect()、accept()等连接 send()、recv()、read()、write()等读写 close()等关闭套接口,2.2 域和地址族(1),域网络通信需要套接口地址标识自己创建套接口时使用 int socket(int domain,int type,int protocol);AF_INET域使用的数据结构(地址族)通用套接口地址(只是模型)sockaddrInternet(IPv4)套接口地址(
5、AF_INET域)sockaddr_in,取AF_INET,2.2 域和地址簇(2),Socket用到的数据结构(P23)#include(1)存储地址和端口信息的sockaddrstruct sockaddr unsigned short sa_family;/*Internet地址簇,AF_INET*/char sa_data14;/*目标地址和端口信息*/;,通用套接字地址结构图,sin_zero8,IPv4套接字地址结构图,sa_data14,2.2 域和地址簇(2),(2)INET协议簇地址结构sockaddr_in,便于访问struct sockaddr_in unsigned s
6、hort sin_family;/*取AF_INET*/unsigned short sin_port;/*端口号,网络字节顺序*/struct in_addr sin_addr;/*IP地址,网络字节顺序*/unsigned char sin_zero8;/*使用bzero()或memset()全部置0,*/;注:指向sockaddr_in 的指针和指向sockaddr的指针可互换使用。(3)32位IPv4地址结构in_addr struct in_addr unsigned long s_addr;,2.2 域和地址簇(3),说明:在书中或系统内部定义这些数据结构时,定义了很多宏常量或新的
7、类型名,使用时须逐渐认知。如:sockaddr_in、sockaddr及in_addr结构分别定义如下:typedef uint16_t in_port_t;typedef unsigned short sa_family_t;struct sockaddr_in sa_family_t sin_family;in_port_t sin_port;struct in_addr sin_addr;unsigned char sin_zero8;struct sockaddr sa_family_t sa_family;char sa_data14;,2.2 域和地址簇(4),typedef ui
8、nt32_t in_addr_t struct in_addr union struct uint8_t s_b1,s_b2,s_b3,s_b4;_S_un_b;struct uint16_t s_w1,s_w2;_S_un_w;in_addr_t _S_addr;_S_un;#define s_addr _S_un._S_addr;#define s_host _S_un._S_un_b.s_b2;#define s_net _S_un._S_un_b.s_b1;#define s_imp _S_un._S_w.s_w2;#define s_impno _S_un._S_un_b.s_b4;
9、#define s_lh _S_un._S_un_b.s_b3;,2.3 地址转换函数(1),字节顺序的转换(网络字节顺序)主机字节顺序:数据在主机上存放的顺序,与CPU类型和操作系统有关,如16位整数7的存放方式:网络字节顺序:数据在网络上传输的顺序,约定高位在先,故一般需要转换。,InterX86系列芯片低位在先,Sun公司Sparc芯片Solaris系统高位在先,2.3 地址转换函数(2),转换函数:(h:主机host,n:网络network)函数htons():指Host to Network Short函数htonl():指Host to Network Long函数ntohs():
10、指Network to Host Short函数ntohl():指Network to Host Long注:struct sockaddr_in 中sin_port 和sin_addr需转换为网络字节顺序;而sin_family不需转换,只被内核调用,不发送到网络,可以是本机字节顺序。,2.3 地址转换函数(3),初始化一个AF_INET地址 struct sockaddr_in adr_inet;/定义变量adr_inet int adr_len;memset(,2.3 地址转换函数(4),Internet IP地址网络地址主机地址网络掩码例:IP地址:202.113.29.19 网络分类
11、:C类网 网络地址:202.113.29.0 主机地址:*.*.*.19 网络掩码:255.255.255.0 广播地址:202.113.29.255,2.3 地址转换函数(5),处理IP地址 需包含以下头文件:arpa/inet.h、netinet/in.h、sys/socket.h(1)点分十进制格式网络地址函数inet_addr()原型:unsigned long int inet_addr(char*src)例:struct sockaddr_in ina;ina.sin_addr.s_addr=inet_addr(“162.105.32.1”);注:(1)inet_addr()返回的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 套接口概念 接口 概念 PPT 课件
链接地址:https://www.31ppt.com/p-5490839.html