linux操作系统及程序设计5范例.ppt

  1. 1、本文档共98页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
物理层 面向物理传输媒体,屏蔽媒体的不同 链路层 面向一条链路,成帧和无差错传输 网络层 分配地址、面向多条链路、路由和流量控制 传输层 面向两台主机通信,处理可靠传输细节,无差错、无失序传输 会话层 面向一次会话,协调双方的交互、同步 表示层 面向通信内容的表示,大家认同的描述方式 应用层 面向建立在通信基础上的应用,为应用提供通信服务 面向连接的可靠传输 端到端、建立/断开连接 正确、顺序传送数据 协议关注问题 IP数据报的丢失、重复、失序、延迟 发送和接收速度的匹配 系统重启动,一方连接信息丢失 网络拥塞 无连接 不需要在通信前建立连接 不使用控制报文 传输开销低 面向报文 不将报文分割,也不合并 UDP报文大小直接影响网络利用率 过小造成报头比率过大 过大造成MTU分片 尽力而为、任意交互 一对一、一对多、多对一和多对多 TCP/UDP端口号作为服务器程序标识 服务器启动时,首先在本地主机注册所使用的TCP/UDP端口号 客户通过与服务器指定的TCP端口建立连接(或直接向服务器指定的UDP端口发送信息)来访问特定服务 运行服务器程序的主机收到信息后,将其转交给注册该端口的服务器程序处理 服务器程序 被动等待请求并做出响应 客户程序 主动向服务器发出服务请求 系统资源要求不高 在处理一个请求时其他请求必须等待 主要针对于面向无连接的客户/服务器模型 系统资源要求较高 实时性和灵活性是该方案的最大特点 主要针对于面向连接的客户/服务器模型 BSD Socket是通用接口,支持各种网络工作形式 INET Socket支持包括TCP/IP协议在内的Internet地址族 网络通信协议基础 Socket基本编程技术 Socket高级编程技术 Socket接口是应用程序与TCP/IP协议栈的接口 定义一组函数/例程,支持TCP/IP网络应用程序开发 与数据通信相关的系统调用是read()/write() 是一种文件描述符 一个套接字描述一个通信连接的一端 两个通信程序中各自有一个套接字来描述自己的 Socket不是TCP/IP标准的组成部分,但已成为事实上的工业标准 UNIX系列系统提供Socket Windows系列、Macintosh系列、Solaris等亦提供 形式 (IP, PORT) 网络进程标识 协议, 本地地址, 本地端口 网间通信标识 协议, 本地地址, 本地端口, 远程地址, 远程端口 端口分类 公认端口 小于256的端口作为保留端口 注册端口 动态和/或私有端口 socket() 创建一个新的Socket close() 关闭一个Socket bind() 将服务器(IP, Port)赋予Socket listen() 等待到来的客户连接请求(TCP) accept() 接受客户连接请求并建立连接(TCP) connect() 向服务器发出连接请求 send()/recv() 发送/接收数据 字节顺序 大端模式(big ? endian):高字节放到高地址上 小端模式(little ? endian):高字节放到低地址上 主机字节顺序(HBO,Host Byte Order) 不同的机器HBO不相同,与CPU设计有关 Motorola 68k系列,HBO与NBO相同 Intel x86系列,HBO与NBO相反 网络字节顺序(NBO,Network Byte Order) 使用统一的字节顺序,避免兼容性问题 解决兼容性问题途径 往网络上发送前:转换成网络字节序 从网络接收数据:转换成主机字节序 头文件 #include netinet/in.h 函数原型 uint32_t htonl(uint32_t hostlong); 把32位值从主机字节序转换成网络字节序 uint16_t htons(uint16_t hostshort); 把16位值从主机字节序转换成网络字节序 uint32_t ntohl(uint32_t hostlong); 把32位值从网络字节序转换成主机字节序 uint16_t ntohs(uint16_t hostshort); 把16位值从网络字节序转换成主机字节序 说明 h代表host,n代表 network s代表short,l代表long 功能 创建一个套接字 #include sys/socket.h 函数原型 int socket(int domain, int type, int protocol); 参数说明 domain:通信协议族,即地址族 type:套接字类型 protocol:通信协议 常设置为0 ,由内核根据指定的类型和协议族使用默认的协议 返回值 成功时,返回一个大于等于0的文件描述符 失败时,返回一个小于0的值 流套接字(SOC

文档评论(0)

1112111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档