linux-C语言实现网络通信简介.pptVIP

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

主要内容 TCP/IP协议概述 Socket基础编程 域套接字 一、TCP/IP协议概述 OSI参考模型及TCP/IP参考模型 TCP TCP(Transmission Control Protocol,传输控制协议):为应用程序提供可靠的通信连接,实现了从一个应用程序到另一个应用程序的数据传递。适合于一次传输大批数据的情况,并适用于要求得到响应的应用程序。 建立一次TCP连接需三次握手,基本过程是服务器先建立一个套接口并等待客户端的连接请求,然后顺序进行三次握手: 第一次握手:当客户端调用 connect进行主动连接请求时,客户端TCP发送一个SYN,告诉服务器客户端将在连接中发送的数据的初始序列号; 第二次握手:当服务器收到这个SYN后也给客户端发一个SYN,里面包含了服务器将在同一连接中发送的数据的初始序列号; 第三次握手:最后客户再回送一个带有确认顺序号和确认号的数据段来确认服务器发的SYN。 到此为止,一个TCP连接被建立。 UDP UDP(User Datagram Protocol,用户数据报协议):是一种无连接协议,不需要像TCP那样通过三次握手来建立一个连接。且不对传送包进行可靠的保障,适合于一次传输少量数据,其可靠性由应用层来负责。同时,一个UDP应用可同时作为应用的客户方或服务器方。 UDP比TCP能更好地解决实时性的问题,包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都使用UDP协议。 socket概述 TCP协议socket编程的流程图 accept():用于等待并接收客户端的连接请求,它通常从等待队列中取出第一个未处理的连接请求。 send()和recv():分别用于发送和接收数据,可以用在TCP中,也可以用在UDP中。 ? sendto()和recvfrom():作用与send()和recv()类似。 当用在TCP时,后面的几个与地址有关参数不起作用,作用等同于send()和recv(); 当用在UDP时,可以用在之前没有使用connect()的情况下,这两个函数可以自动寻找指定地址并进行连接。 Socket地址数据结构 socket()函数:建立一个socket连接 bind()函数:将本地IP地址绑定到端口号(TCP) listen()函数:创建一个等待队列 connect()函数:与服务器端建立连接(TCP)或限定该套接字只能和指定的一方通信(UDP) accept()函数:等待并接收客户端的连接请求 send()函数:发送数据 recv()函数:接收数据 sendto()函数 recvfrom()函数 三、域套接字 Linux C语言实现网络通信简介 负责应用程序的网络访问,通过端口号来识别各个不同的进程。 负责端对端之间的通信会话连接与建立。传输协议的选择根据数据传输方式而定。 负责将数据帧封装成IP数据包,并运行必要的路由算法。 负责将二进制流转换为数据帧,并进行数据帧的发送和接收。数据帧是独立的网络信息传输单元。 TCP 三次握手 TCP数据报头 UDP数据报头 二、 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连接 服务器端 客户端 …… …… … socket recvfrom sendto bind close close recv connect socket send send/sendto recv/recvfrom 在connect之后也可以用 read和write 或 或 传输数据 传输数据 UDP协议socet编程的流程图 … … … 进行socket编程的基本函数 socket():用于建立一个socket连

文档评论(0)

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

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

1亿VIP精品文档

相关文档