Linuxc下的SOCKET网络编程课件

上传人:我*** 文档编号:145146391 上传时间:2020-09-17 格式:PPT 页数:29 大小:377KB
返回 下载 相关 举报
Linuxc下的SOCKET网络编程课件_第1页
第1页 / 共29页
Linuxc下的SOCKET网络编程课件_第2页
第2页 / 共29页
Linuxc下的SOCKET网络编程课件_第3页
第3页 / 共29页
Linuxc下的SOCKET网络编程课件_第4页
第4页 / 共29页
Linuxc下的SOCKET网络编程课件_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《Linuxc下的SOCKET网络编程课件》由会员分享,可在线阅读,更多相关《Linuxc下的SOCKET网络编程课件(29页珍藏版)》请在金锄头文库上搜索。

1、网络编程,IPV4协议分析,IPv4包头结构,IPv4包头结构,版本 IP头中前四位标识了IP的操作版本,比如版本4或版本6 Internet头长度 头中下面4位包括头长度,以32位为单位表示 服务类型 总长度( Total Length) 标识( Identifier ) 每个IP报文被赋予一个惟一的16位标识,用于标识数据报的分段 分段标志(Fragmentation Flag) 下一个域包括3个1位标志,标识报文是否允许被分段和是否使用了这些域,IPv4包头结构,分段偏移(Fragment Offest ) 8位的域指出分段报文相对于整个报文开始处的偏移。这个值以64位为单位递增 生存时

2、间( TTL ) IP报文不允许在广域网中永久漫游。它必须限制在一定的TTL内 协议 8位域指示IP头之后的协议,如VINES、TCP、UDP等 校验和( checksum ) 校验和是16位的错误检测域。目的机、网络中的每个网关要重新计算报文头的校验和,就如同源机器所做的一样 源IP地址 源计算机的IP地址 目的IP地址 目的计算机的IP地址 填充 为了保证IP头长度是32位的整数倍,要填充额外的0,TCP协议分析,TCP包头结构,图3-3 TCP数据在IP数据报中的封装,TCP包头结构,图3-4 TCP包首部,TCP包头结构,TCP源端口 16位的源端口域包含初始化通信的端口号 源端口和源

3、IP地址的作用是标识报文的返回地址 TCP目的端口 16位的目的端口域定义传输的目的 这个端口指明报文接收计算机上的应用程序地址接口,TCP包头结构,TCP序列号 32位的序列号由接收端计算机使用,重组分段的报文成最初形式 TCP应答号 TCP使用32位的应答( ACK )域标识下一个希望收到的报文的第一个字节,TCP包头结构,数据偏移 这个4位域包括TCP头大小 以32位数据结构或称为“双字”为单位 保留 6位恒置0的域 为将来定义新的用途保留 标志 6位标志域,每1位标志可以打开一个控制功能 这六个标志是:紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志,TC

4、P包头结构,窗口大小 目的机使用16位的域告诉源主机,它想收到的每个TCP数据段大小。用于TCP协议的流量控制 校验和 TCP头也包括16位的错误检查域“校验和”域 紧急 紧急指针域是一个可选的16位指针,指向段内的最后一个字节位置,这个域只在URG标志设置了时才有效。 选项 至少一字节的可变长域标识哪个选项。,TCP包头结构,数据 域的大小是最大的MSS,MSS可以在源和目的机器之间协商 填充 其目的是确保空间的可预测性、定时和规范大小 这个域中加入额外的零以保证TCP头是32位的整数倍,建立一个TCP连接,结束一个TCP连接,网络编程基础知识,字节序列转换,每一个机器内部对变量的字节存储顺

5、序不同(有的系统是高位在前,底位在后,而有的系统是底位在前,高位在后 ),而网络传输的数据大家是一定要统一顺序的。所以对与内部字节表示顺序和网络字节顺序不同的机器,就一定要对数据进行转换。,字节序列转换,#include uint16_t htons(uint16_t hostshort); 功能:将主机字节顺序转换为网络字节顺序。 返回值:成功返回转换后的字节序。,地址格式转换,#include #include #include int inet_pton(int af, const char *src, void *dst); 功能:将点分格式的地址字符串转换为网络字节序整型数。 返回值

6、:成功返回1,错误返回-1 参数: af:转换格式AF_INET(IPV4)或AF_INET6(IPV6) src:点分格式的地址 dst:转换后的整型变量的地址,地址格式转换,#include #include #include const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt); 功能:将网络字节序整型转换为点分格式的IP地址 返回值:成功返回转换后地址,失败返回NULL 参数: af:转换格式AF_INET(IPV4)或AF_INET6(IPV6) src:整型变量地址 des:用来存储转换后数

7、据的地址 cnt:存储空间大小,网络编程基础,socket概述 Linux中的网络编程通过socket接口实现。socket既是一种特殊的IO,它也是一种文件描述符。一个完整的socket 都有一个相关描述协议,本地地址,本地端口,远程地址,远程端口;每一个socket 有一个本地的唯一socket 号,由操作系统分配。,网络编程基础,套接字有三种类型: 流式套接字(SOCK_STREAM) 流式的套接字可以提供可靠的、面向连接的通讯流。它使用了TCP协议。TCP 保证了数据传输的正确性和顺序性。 数据报套接字(SOCK_DGRAM) 数据报套接字定义了一种无连接的服务,数据通过相互独立的报文

8、进行传输,是无序的,并且不保证可靠,无差错。使用数据报协议UDP协议。 原始套接字。 原始套接字允许对低层协议如IP或ICMP直接访问,主要用于新的网络协议实现的测试等。,基于数据流的socket编程流程,网络编程相关函数,socket 系统调用,#include #include int socket(int family, int type, int protocol); 功能:socket 函数创建一个用于网络通信的套接字,并返回该套接字的整数描述符。 返回值:成功返回正数,失败返回-1. 参数: family 是协议或地址族( 对于TCP/IP 为PF_INET ,也可使用AF_INE

9、T ) type 是服务的类型(对于TCP 为SOCK_STREAM,对于UDP为SOCK_DGRAM) protocol 是使用的协议号,或是用0 指定family 和type 的默认协议号。,bind 系统调用,#include #include int bind(int sockfd, const struct sockaddr * localaddr, socklen_t addrlen); 功能:bind 为一个套接字指明一个本地IP 和协议端口号。 返回值:成功则返回0 ,失败返回 1 。 参数: sockfd 是由socket 调用创建一个套接字描述符 localaddr 是一个

10、地址结构,指定一个IP 地址和协议端口号 addrlen 是地址结构的字节数大小。 struct sockaddr sa_family_t sa_family; char sa_data14; ,listen 系统调用,#include int listen(int sockfd, int queuelen); 功能:服务器使用listen 使套接字处于被动状态(准备接受联入请求)。 返回值:成功则返回0 ,错误返回 1 。 参数: sockfd 是一个由socket 调用创建的套接字描述符 queuelen 是连接请求的队列大小,accept 系统调用,#include #include i

11、nt accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 功能:服务器调用socket 创建一个套接字,用bind 指定一个本地IP 地址和协议端口号,然后用listen 使套接字处于被动状态,并设置连接请求队列的长度。accept 从队列中取走下一个连接请求(或一直在那里等待下一个连接请求的到达),为请求创建一个新套接字,并返回新的套接字描述符。 accept 只用于流套接字(如TCP 套接字)。 返回值:成功返回一个非负套接字描述符。错误返回 1。 参数: sockfd 是是由socket 函数创建的一个套接字描述符

12、。 addr 是一个地址结构的指针。accept 在该结构中填入远程机器的IP 地址和协议端口号。 addrlen 初始指定为struct sockaddr结构体大小的存放地址。,connect 系统调用(客户端),#include #include int connect(int sockfd, const struct sockaddr * addr, socklen_t addrlen); 功能:connect 允许调用者为先前创建的套接字指明远程端点的地址。如果套接字使用了TCP ,connect 就使用三次握手建立一个连接。 返回值:成功返回0 ,错误返回 1 。 参数: sockfd 是一个套接字的描述符 addr 是远程机器端点地址 addrlen 是struct sockaddr结构体的大小,2种网络服务器编程模式,迭代服务器 并发服务器,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号