- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux C语言实现网络通信简介 蔡晋 智能研究所 2013-01-21 主要内容 TCP/IP协议概述 Socket基础编程 域套接字 一、TCP/IP协议概述 OSI参考模型及TCP/IP参考模型 负责应用程序的网络访问,通过端口号来识别各个不同的进程。 负责端对端之间的通信会话连接与建立。传输协议的选择根据数据传输方式而定。 负责将数据帧封装成IP数据包,并运行必要的路由算法。 负责将二进制流转换为数据帧,并进行数据帧的发送和接收。数据帧是独立的网络信息传输单元。 TCP TCP(Transmission Control Protocol,传输控制协议):为应用程序提供可靠的通信连接,实现了从一个应用程序到另一个应用程序的数据传递。适合于一次传输大批数据的情况,并适用于要求得到响应的应用程序。 建立一次TCP连接需三次握手,基本过程是服务器先建立一个套接口并等待客户端的连接请求,然后顺序进行三次握手: 第一次握手:当客户端调用 connect进行主动连接请求时,客户端TCP发送一个SYN,告诉服务器客户端将在连接中发送的数据的初始序列号; 第二次握手:当服务器收到这个SYN后也给客户端发一个SYN,里面包含了服务器将在同一连接中发送的数据的初始序列号; 第三次握手:最后客户再回送一个带有确认顺序号和确认号的数据段来确认服务器发的SYN。 到此为止,一个TCP连接被建立。 TCP 三次握手 TCP数据报头 UDP(User Datagram Protocol,用户数据报协议):是一种无连接协议,不需要像TCP那样通过三次握手来建立一个连接。且不对传送包进行可靠的保障,适合于一次传输少量数据,其可靠性由应用层来负责。同时,一个UDP应用可同时作为应用的客户方或服务器方。 UDP比TCP能更好地解决实时性的问题,包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都使用UDP协议。 UDP数据报头 UDP 二、 Socket基础编程 socket概述 socket概念: 在Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符,是一种常用的进程之间通信机制,通过它不仅能实现本地机器上的进程之间的通信,而且能够实现不同机器上的进程之间的通信。 socket类型: (1)流式socket(SOCK_STREAM):使用TCP协议 (2)数据报socket(SOCK_STREAM):使用数据报协议UDP (3)原始socket:主要用于一些协议的开发 流式socket和数据报socket的区别:前者在通信之前必须先建立连接,并且只能和一方通信;而后者在通信之前不用先建立连接,并且可以和多方通信。 socket bind recv/read close close recv/read connect socket send/write send/write 传输数据 传输数据 accept listen bind 等待客户连接请求的到来 三次握手过程建立TCP连接 服务器端 客户端 TCP协议socket编程的流程图 …… …… … socket recvfrom sendto bind close close recv connect socket send send/sendto recv/recvfrom 在connect之后也可以用 read和write 或 或 传输数据 传输数据 UDP协议socet编程的流程图 … … … 进行socket编程的基本函数 socket():用于建立一个socket连接。可以指定socket类型等信息。在建立了socket连接之后,可对socketaddr或socketaddr_in进行初始化,以保存所建立的socket信息。 bind():用于将本地IP地址绑定到端口号,主要用于TCP的连接,在UDP的连接中不用。 listen():用于创建一个等待队列,在其中存放未处理的客户端连接。 connect():在TCP中用于与服务器端建立连接,而在UDP中connect()的作用是限定该套接字只能和指定的一方通信,即未使用connect之前,可以和任意的地址通信,而connect之后只能和一方通信。在TCP中一个socket只能connect一次,而在UDP中一个socket可以connect多次。 accept():用于等待并接收客户端的连接请求,它通常从等待队列中取出第一个未处理的连接请求。 send()和recv():分别用于发送和接收数据,可以用在TCP中,也可以用在UDP中。 ? sendto()和re
您可能关注的文档
- 人教版语文六年级上册《1.山中访友》课件.ppt
- 人教版语文四年级下册语文园地五.ppt
- 人教版选修四第四单元第2课《圣雄甘地》课件.ppt
- 人教版马的世界.ppt
- 人教版高一语文必修一第3课《大堰河──我的保姆》教学课件(共37张).ppt
- 人教版高中化学必修二课件3.4.1.ppt
- 人教版高中历史选修三第三课课件.ppt
- 人教版高中数学课件:7.4.3简单的线性规划.ppt
- 人教版高中数学课件:函数的单调性.ppt
- 人教版高中数学课件:棱柱.ppt
- 机电技术教育设计基于UG下的钢丝包装机的虚拟装配.doc
- 机械设计制造及其自动化论文汽车火花点火系统电磁干扰的抑制方法.doc
- 机械设计制造及其自动化论文基于solidworks的轴承架模拟仿真.doc
- TGXSES0004-2023 土壤和沉积物 6种醚类化合物的测定 吹扫捕集 气相色谱-质谱法.pdf
- DB62T4735-2023 动物诊疗机构医疗废弃物处置技术规范.pdf
- TZS0344-2022 数字化无掩模激光直写光刻机.pdf
- 安徽省建设用地使用标准编制说明.pdf
- DB62T4492-2022 枸杞品种甘杞1号.pdf
- TSDSES-化工材料-再生环戊酮.pdf
- DB4403T涉河建设项目防洪评价和管理技术规范.pdf
文档评论(0)