网络基础和SOCKET.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络基础和SOCKET

第八章 网络基础和SOCKET 本章目标 了解TCP/IP协议族 了解TCP和UDP协议的优缺点 掌握TCP三次握手 掌握SOCKET TCP通信过程中SOCKET API函数调用次序 掌握SOCKET UDP通信过程中SOCKET API函数调用次序 远程通信的基础 通信双方 双方共同约定和遵循的协议 A机 B机 约定/协议 异地进程通信 协议层为双方的主机上通信进程分配“端口”和缓冲区,以便异地进程间的通信 协议层:类似于物流公司 端口:类似于物流公司两地的加盟点 缓冲区:类似于加盟点的囤放货物平台 TCP/IP协议概述 TCP/IP是互联网的基础 OSI参考模型与TCP/IP参考模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 应用层 传输层 网络层 网络接口层 OSI参考模型 TCP/IP参考模型 图1 OSI参考模型与TCP/IP参考模型对应关系 图2 OSI参考模型与TCP/IP参考模型对应关系 TCP/IP协议族 TCP/IP 实际上是一个一起工作的通信家族,为网际数据通信提供通路。为讨论方便可将 TCP/IP 协议组大体上分为三部分: 1.Internet 协议(IP) 2.传输控制协议(TCP)和用户数据报文协议(UDP) 3.处于TCP 和UDP 之上的一组协议专门开发的应用程序。它们包括:TELNET,文件传送协议(FTP),域名服务(DNS)和简单的邮件传送程序(SMTP)等许多协议。 应用层协议: Telnet 文件传送协议(FTP 和TFTP) 简单的文件传送协议(SMTP) 域名服务(DNS)等协议。 应用层协议 网络编程基础 socket概述 为了简化开发通信程序的工作,由Berkely学校开发了一套网络通信程序的API函数标准 socket标准被扩展成window socket和unix socket linux中的网络编程通过socket接口实现。Socket既是一种特殊的IO,它也是一种文件描述符。一个完整的Socket 都有一个相关描述{协议,本地地址,本地端口,远程地址,远程端口};每一个Socket 有一个本地的唯一Socket 号,由操作系统分配。 流式套接字(SOCK_STREAM) 流式的套接字可以提供可靠的、面向连接的通讯流。它使用了TCP协议。TCP 保证了数据传输的正确性和顺序性。 数据报套接字(SOCK_DGRAM) 数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。使用数据报协议UDP协议。 原始套接字。 原始套接字允许对低层协议如IP或ICMP直接访问,主要用于新的网络协议实现的测试等。 SOCKET分类 套接字地址结构 struct sockaddr { unsigned short sa_family; /* address族, AF_xxx */ char sa_data[14]; /* 14 bytes的协议地址 */ }; sa_family 一般来说, IPV4使用“AF_INET”。 sa_data 包含了一些远程电脑的地址、端口和套接字的数目,它里面的数据是杂溶在一起的。 sockaddr_in地址结构 struct sockaddr_in { short int sin_family; /* Internet地址族 */ unsigned short int sin_port; /* 端口号 */ struct in_addr sin_addr; /* Internet地址 */ unsigned char sin_zero[8]; /* 添0(和struct sockaddr一样大小)*/ }; 这两个数据类型是等效的,可以相互转换,通常使用sockaddr_in更为方便 字节序列转换 因为每一个机器内部对变量的字节存储顺序不同(有的系统是高位在前,底位在后,而有的系统是底位在前,高位在后 ),而网络传输的数据大家是一定要统一顺序的。所以对与内部字节表示顺序和网络字节顺序不同的机器,就一定要对数据进行转换。 htons()——“Host to Network Short” 主机字节顺序转换为网络字节顺序(对无符号短型进行操作2bytes) htonl()——“Host to Network Long”  主机字节顺序转换为网络字节顺序(对无符号长型进行操作4bytes) ntohs()——“Network to Host Short” 网络字节顺序转换为主机字节顺序(对无符号短型进行操作2bytes) ntohl()——“Network to Host Long ” 网络字节顺序转换为主机字节顺序(对无符号长型进行操作4by

文档评论(0)

sandaolingcrh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档