收藏 分销(赏)

linux下网络聊天工具的设计和实现.doc

上传人:二*** 文档编号:4575391 上传时间:2024-09-30 格式:DOC 页数:43 大小:438KB
下载 相关 举报
linux下网络聊天工具的设计和实现.doc_第1页
第1页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、可编辑版Linux课程设计Linux下聊天工具的设计与实现课题: Linux下网络聊天工具的设计与实现姓名:郭思奎 学号: 22111440111 班级: 2014级通信工程班 指导教师: 董志诚 设计时间: 2017.06.30 38 / 43可编辑版摘 要这个毕业论文整体采用在linux平台下,在同一局域网内实现聊天功能。整体框架主要分为服务端和客户端两个部分,设置好ip和端口号,在Linux下编译和调试两主大块程序,实现服务端和各个客户端的连接,然后以服务端作为中继转实现客户端之间的通信。由于服务端只有一个,而客户端可以有任意多个,所以服务端采用了链表来管理多个客户端的信息,客户端的信息

2、发送通过封装在结构体中进行传输。本设计采用TCP/IP协议保证连接可靠,并在项目管理中采用linux流行的gcc和makefile编译,提高了编译和调试效率,加快了项目的完成速度。由于要模拟多个客户端,所以在运行的环境中需要在PC机上再克隆一个虚拟系统来操作多个客户端。本次设计的聊天工具采用字符串命令行的方式进行通信,主要实现了五个功能:新用户的注册与登录,用户之间一对一的聊天,用户之间群聊,用户之间文件加密传输,用户之间聊天记录保存。经过测试,程序运行可靠,能满足在linux中实现网络聊天的要求。关键词 linux,socket,gedit,服务端,客户端,网络编程可编辑版ABSTRACTT

3、his thesis gets the realization of chat in the same LAN under the Linux platform. The overall framework is divided into two parts: server and client. Set up the IP and port number, compile and debug two main bulk programs in the Linux and realize the connection between the server and the clients, an

4、d then realize the communication between clients by relying on server. Since there is only a server, but are multiple clients, so the server adopts a linked list to manage multiple clients information, and the information of clients is packed into struct to transfer. This design adopts the TCP/IP pr

5、otocol to ensure reliable connection, and uses the Linux gcc and makefile compiler in project management, which improves the compiling and debugging efficiency, and speeds up the project completion. Due to the simulation of multiple clients, so it needs to clone a virtual system in the PC machine to

6、 operate multiple clients in the running environment. The chat tool of the design works by using the method of character stringcommand line, which mainly accomplishes five functions: new users registration and login, biunique chat between users, users group chat, file encryption and transmission bet

7、ween users, users chat record retention. After the test, the program is reliable, and can meet the requirements of network chat in Linux.KeywordsLinux, socket, gedit, server, client, network programming可编辑版目 录摘 要IABSTRACTII1 绪论11.1研究背景11.1.1 Linux的介绍11.1.2 linux的发展史21.1.3 socket介绍21.2 研究意义31.3 国内外研究

8、现状32 需求分析52.1 功能需求52.2 性能需求52.3模块划分52.4 模块调用关系62.5 系统总流程图62.6 文件信息安全83 linux网络编程93.1 socket概念及功能93.2 socket类型93.3 socket函数103.3.1 API功能介绍103.3.2 套接口地址结构103.3.3 基本转换函数133.3.4 socket编程流程133.4 TCP/IP协议143.4.1 OSI概述143.4.2 TCP/IP 协议概述153.4.3 TCP/IP层次结构173.4.4 TCP通信184 文件传输加密及相关技术204.1 文件描述符描述204.2 文件操作函

9、数204.3 DES加密算法204.3.1 密钥计算过程214.3.2 初始置换ip和逆初始置换ip214.3.3 P置换和扩充置换E224.3.4 F函数和S盒置换224.4 linux线程通信234.5 链表245 具体实现255.1 登录和注册实现255.1.1 注册实现255.1.2 登录实现255.2 私聊和群聊265.2.1 私聊265.2.2 群聊265.3 文件传输和DES加密275.4 错误方案解决306 运行效果316.1 编译操作316.2 注册和登录运行效果图316.3 私聊和群聊效果图336.4 文件传输效果图346.5 文件内容加密效果图35结束语36参考文献37致

10、 谢38可编辑版1 绪论随着Internet的快速发展和普及,网络已经遍布世界各个角落。由于网路的快速便捷,使得人们深深的爱上了它,因此网络在人们的交流中显得越来越重要,使得人们的交流方式也变得越来越丰富。由于市场的需求和发展空间的很大,各种通信软件迅速成长。比如现在的QQ,MSN,微信,微博等网络聊天软件。通过网络,人们可以迅速的了解各种有用信息,使人们足不出门就可以了解天下大事。并且不管两个人离的有多远,都可以随时保持联系,因此拉近了人与人之间的距离。更重要的是,当遇见一些自然灾害使得电话通讯不好使用时,这些网络聊天工具就发挥了极大作用。这些软件功能都很完善,作为即将毕业的大学生,可以模拟

11、实现这些软件的部分功能,已达到自己对网络的理解和锻炼自己的编程能力,因此本次毕业论文设计主要研究的就是在linux开发平台上模拟局域网的网络聊天,使一个服务器与多个客户端之间建立链接并发送信息。这次毕业设计能够使我更加熟悉linux下编程操作,而更重要的是掌握socket编程,熟悉tcp和udp协议,掌握单链表的用法。1.1研究背景1.1.1 Linux的介绍在本次设计中是在linux系统中完成的,所以首先需要了解linux系统的来龙去脉。Linux是在Unix的基础上修改实现的,其主要的改变就是内核源码在网上完全公开。所有人都可以把下载的内核源码拿来直接用或者任意的修改,并且经修改过后的源码

12、也必须是公开的。经过几年的发展,linux已经有很大的改变,所以现在linux有很多版本,但它们都遵循Linux最初的内核。Linux系统的可移植性很高而且投资相对于其它系统而言较低,所以各种类型的计算机硬件设备中都选择安装linux系统,特别是现在很热的嵌入式设备中。在现在的IT行业中,Linux就是一种表示内核,是大家普遍都认同的说法,因为linux是使用GNU 工程中各种工具和数据库的一种操作系统。Linux得名于计算机业余爱好者Linus Torvalds。Linux支持各种各样的软件包括大量免费软件,因此为用户提供了很大的方便。Linux在其创始人开发过后,就由世界上各种IT精英爱好

13、者共同开发,提出他们自己的看法并进行修改,作为一个操作系统,它具有Unix、Mac、Windows和WindowsNT同样的功能。从本质上讲,Linux是Unix系统的克隆,在源码级上兼容绝大部分的Unix标准,它遵循POSIX规范。只要是使用linux就不得不提到GNU,GNU项目开始于1984年,旨在开发一个类似 Unix、并且是自由软件的完整操作系统:GNU系统。GNU 是GNU Not Unix的递归缩写。由于GNU操作系统的核心是linux,所以GUN的使用正在一步步变大。Linux操作系统在早期开发和使用中有许多软件比如:gcc编译程序、make编译管理程序、gas汇编程序、bas

14、h命令解释程序等等。GNU和linux是相互依存的,没有GNU linux就是一个简单的框架,毫无使用之处,同时没有linux GNU也不会受到人们的欢迎。Linux 操作系统作为一个开源的操作系统被很多IT同行的人所认同,它能够吸引人最大的地方就是下载内核源码不需要成本。只要使用遵循使用原则就可以任意使用并修改它的源代码。1.1.2 linux的发展史Linux的创始人,是一名叫Linus Torvalds的芬兰大学生。他当时发现了Unix系统的一些薄弱功能给他带来了很多的不便,于是他决定在Unix的基础上继续开发出来有别于Unix系统的操作系统,该系统弥补了Unix系统的缺点,同时又添加了

15、新功能。通过他不懈的努力,在linux内核中能实现一些基本的应用程序。由于Linux一开始就把Linux的源代码放在网络上,引起了很多的爱好者的注意,因此这些爱好者也加入到linux内核开发中,随着越来越多的高水平的爱好者加入,该系统的发展迅速膨胀,很快各种版本的linux产生。由于大量的增添和修改,使linux的文件框架越来越大,越来越稳定,而且实现了基本的TCP/IP功能,使得linux在Internet中迅速成长。经过二十多年的发展,现在Linux系统已经以成熟的一面展现在人们面前。现在的Linux内核更加稳定和健全,而且获取内核源码更加的简单实用,所以现在的商家抓住这些特点,开始大量普

16、遍的运用linux系统。由于linux到目前为止几乎没有被木马和病毒所困扰,所以也把它当作一种强壮而安全的防火墙。刚开始linux系统进入过后只是命令字符界面,还没有一个成型的桌面系统。一个系统要受到人们的欢迎,必须要图形界面,并且图形界面要美观且操作简单。所以桌面上的Linux也在不断的完善之中。现在推行出来的ubuntu,centos等图形界面都很受人们的喜爱,可以和微软的界面系统一比高下。由于linux系统内核小,兼容性好,效率高,稳定性强等特点,所以几乎在各个行业都能看见linux的身影,比如:军事,金融,电信以及政府。当今计算机领域比较巨型的服务器大多采用LINUX操作系统。可见LI

17、NUX在网络和分布式系统的应用将是很有前景的。Linux以后必将成为一种新的系统潮流。1.1.3 socket介绍在网络中聊天以及发送信息等需求,几乎都要用到网络编程中的socket,所以有一切皆socket一说。Linux系统中有很多关于网络编程的函数库,因此linux支持各种类型的套接字。接着就描述一下套接字,Socket接口是TCP/IP网络的一个重要连接,在该操作系统内核中定义了Socket接口和各种函数之间的调用关系,通过这个接口我们可以实现许多网络上的应用程序。对于Internet上的TCP/IP网络编程,首先要理解Socket接口。该套接口是TCP/IP协议中最常用的的接口。Li

18、nux中一切都是文件,所以套接字通信就是一种特殊的I/O,也就说明它是一种文件描述符,所以对socket的操作就是对socket的读写实现。服务端和客户端这两个进程要进行通信,需要socket提供端点来实现它们之间的互相通信。套接字也是一种面向c/s结构的思路,不同的套接字对应不同的服务端和客户端,服务端的套接字号是所有客户端都能识别的,任何客户端随机申请套接字都能与服务端建立连接。常用的Socket类型有两种:流式Socket SOCK_STREAM和数据报式SocketSOCK_DGRAM。1.2 研究意义随着互联网技术的发展,互联网应用越来越丰富。人们的联系方式也变得越来越多样化。譬如在

19、Internet上,有QQ、MSN、微信、微博等网络聊天软件,方便了距离相离很远是人们之间进行交流。刚开始这些软件只是为了方便人们交流而开发的一种娱乐方式,但是随着发展和市场的需求,这些工具的功能多样化使得它们在市场上带来了很多的经济利益,因而使得聊天功能越来越强大。作为一名即将毕业的大学生,可以通过这次的论文设计,巩固自己的C语言和数据结构知识,以及熟悉一个新系统Linux和Linux中的命令,socket编程,网络协议,高级网络编程等等,更重要的是锻炼了自己动手编程能力和面对问题怎样去分析和解决的能力。1.3 国内外研究现状随着网络的发展,通信网络成为了我们现代社会发展的重要桥梁。最近几年

20、云一说法已经在人们的思想中成为一种定局,不管是有线还是无线,他们之间的网络通信将是人们很关注的问题。由于网络通信的畅通,使得人们彼此之间的通信变得快捷和方便。这是因为人类的需求,国内外出现了很多的聊天工具。比如国内的QQ和国外的MSN,以及最近很红火的微信和facebook。而对于QQ而言,它是以服务端作为中继并且接收客户端发来的信息,服务器总控制客户端,这样客户端之间就可以采用不面向连接的方式进行通信,提高效率。当客户端之间没办法连接时,才由服务器进行中转通信。在Internet网络上使用TCP/IP协议进行传输,要想客户端与客户端能进行正常的通信,他们彼此要和服务端先建立起连接,然后通过与

21、服务器的TCP连接进行中转通信。通过这两个具有代表性的聊天工具,可以看出根据自身情况,国内和国外研究的方向是有一定区别的。由于套接字的类型还是比较多,所以在不同的操作系统中必须要有相应的套接字函数库。除此之外由于不同商家为了获利,生产出各种有竞争的产品,导致市场上出现了不同型号的pc机,并且运用了不同的操作系统,这样就对通信带来了很大的麻烦,所以提出了tcp/ip协议来解决这样的问题。以前几乎所有的套接字都是运用在windows系统下的,但是随着目前全球Linux系统开发的速度非常的快,使得socket套接字在linux系统中用的越来越多,其中以美国为首的发达国家最为积极。由于linux在中国

22、是最近几年的新词,所以中国的活跃程度相对还要低很多。尽管活跃度较低,但是linux下的socket通信在各行各业中迅速成长起来。由于网络的壮大,在Internet上通过网络通信会变得越来越复杂,所以在局域网内的通信在某些环境下将更受人们欢迎。比如公司和学校的局域网通信,以及在相同局域网内的无线快速分配动态ip等。可编辑版2 需求分析2.1 功能需求该聊天工具是在linux平台下进行开发与实现的,它适合于局域网内所有人进行通信和交流。由于这个系统采用了tcp/ip协议和socket接口,所以主框架采用c/s架构。从总体来讲,该聊天系统主要包含服务端和客户端。服务端功能实现模块:(1) 保存新用户

23、注册的相关信息(2) 验证登录用户的信息(3) 接收和转发用户聊天信息功能(4) 系统查看在线用户以及剔除指定用户客户端功能实现模块:(1) 选择操作模式(2) 输入指令进行相应的功能(3) 客户端接收服务端的信息,然后通过消息队列发送到display端,让display终端显示出信息内容(4) 客户端彼此发送文件时,对文件的内容进行加密处理前面是服务端和客户端单独运行模块,下面是服务端和客户端共同完成通信:(1) 客户端向服务端发送服务请求,验证用户信息(2) 服务端验证完后向客户端发送响应信息(3) 发信客户端向服务端发送指令信息,请求相应操作(4) 服务端转发信息到收信客户端2.2 性能

24、需求 高效性和可靠性:在一个pc机上一个服务端和多个客户端同时开启,对pc机cpu性能要求有点高,所以设计的程序应该最大限度的提高系能,减少系统的没有必要的消耗。如果在操作不当,或者由于系统原因,比如端口被占用等,要使程序能够尽量安全的退出。 程序模块兼容性好:对于程序的主框架需要添加各种功能来完善,这必然就会产生模块和主框架之间的融合性,所以在编写程序时,因注意对函数和变量的规范。 最后程序应该使每个人都容易理解,并且很容易进行操作。2.3模块划分系统结构图如下: 主模块 私 聊 聊 天 记 录 文件DES加密 群 聊 注 册 登 录 传输文件图2.1 聊天模块划分图2.4 模块调用关系模块

25、在整体框架中的位置如下图: 未注册用户入口 已注册用户入口 登录文件传输 私聊 文件加密 群聊 聊天信息保存图2.2模块位置关系图2.5 系统总流程图Socket编程几乎是采用的C/S模式,该模式是基于局域网内进行通信的基础架构,它可以使用任何的通信协议,并且在通信的过程中能充分发挥客户端的处理能力,使客户端响应速度加快。所以,该系统总体采用C/S模式。 开始 打开服务端,处于监听状态 客户端登陆是否注册 注册否是是客户端之间进行交流私聊群聊发送文件是否加密解密接收正确数据接收错误数据信息保存文件 关闭交流 关闭客户端 关闭服务端否图2.3 系统总流程图2.6 文件信息安全每天网络中都要进行大

26、量的数据传输,如果对于这些数据的保密措施没有做好,那么将对个人及企业带来很大的麻烦,因此信息安全问题也越来越受到人们的关注,人们希望自己在网络上传输的信息不能被别人查看,特别是一些具有重要资料的文件内容。信息的安全关系到人们的利益,所以对文件的内容进行保护是十分重要的。而对文件内容保护的关键技术就是将文件内容在网络传输中进行加密,然后解密。这次对数据的加密,采用的是DES加密算法。DES算法是一种对称算法,采用的是分组数据加密技术,该算法速度快,且能对大量数据进行加密。其DES在设计中的大概原理是,当发送文件客户端发送文件时,先将文件的数据进行加密,然后通过socket套接字发送到接收端,接收

27、端接收到文件,将接收到的文件加密数据进行解密,如果加密密钥和解密密钥完全相同,接收端就能接收发送过来的正确数据,否则就是错误数据。当然这里只是局域网内简单的文件数据加密,在现实生活中各种加密遍布生活的每一个角落,比如现在很热点的无线和无线云等都需要各种加密措施保护数据传输。基于这种趋势,加密算法在以后的网络发展中的地位将会一步步的提升。可编辑版3 linux网络编程3.1 socket概念及功能概念:我们把socket直接翻译过来的意思就是插座,听起来挺古怪的,但是它的作用就类似于这个插座的作用。作为了解socket的人都有另一种喊法:套接字。它包含有IP地址和端口号的信息,是通信的必要条件。

28、套接字就是一个文件,是int型数字,它与文件描述符共用一段数值空间0-65535。应用程序中使用套接字来调用套接口,套接字可以认为是指向套接口的指针。Socket是网络传输层供给应用层的编程接口,它提供了许多函数和例程,程序员可以使用它们来开发TCP/IP网络应用程序。套接字归根结底就是文件描述符。使用Socket进行数据传输的简要步骤如下:建立一个Socket,返回该套接字的描述符;按要求配置socket的端口和ip地址,将socket连接到服务端和客户端;按要求通过socket发送和接收数据;关闭此socket。功能:在Internet上的主机大多数情况都会有很多应用程序,每种应用程序对应

29、着一个服务相当与就是客户端。每种服务都打开一个Socket,并把服务端和客户端指定绑定到系统中的同一个端口上,而且这个端口必须相同且不能为系统所占用的端口。进程之间的通信需要端点这样的标志,socket就提供了这种标志。所以不同进程之间要通过socket提供的端点才能使进程之间相关联起来进行数据传输。服务端和客户端的数据通信,我们可以这样理解,就是把客户端套接字里面的内容传输到服务端套接字里面去,两个套接字建立一种关联,该关联应该包含多个元素用来建立多个Socket,使多个客户端与指定的ip和端口号建立联系。这里值得一提的是,socket 是面向客户/服务器模型而设计的面对不同客户端和服务端程

30、序提供不同的socket系统调用。Socket实际上是网络传输层和应用层之间的桥梁。客户向内核任意请求一个socket,系统会立刻为之分配一个socket号,服务器拥有全局公认的 socket ,所有在局域网或者在Internet网上的客户端可以进行连接请求。socket利用C/S模式很好地解决了不同进程之间数据传输的问题,所以它可以在本地局域网上进行通信,也可以通过互联网在世界范围内通信。3.2 socket类型主要有三种类型:流式套接字:流套接字用在提供面向连接、可靠的数据传输环境中。这种套接字类型能达到数据传输的稳定可靠性。流套接字能够保证数据传输的准确和可靠性,原因在于其使用了TCP协

31、议。 数据报套接字:该类型套接字适用于无连接的环境中。对数据是否成功传达,不做检测,所以数据丢失风险很大,也无法保证顺序地接收到数据。这就是我们所说的udp协议。数据报最大长度为64KB。 原始套接字 :允许对较低层的协议,如IP,ICMP进行直接访问。用于检验新的协议和服务中配置的新装备。因此,如果要访问其他协议发送数据必须使用原始套接字。 3.3 socket函数3.3.1 API功能介绍 Socket作用:向系统注册一个套接字。格式:int socket。参数说明:add_f:表示地址族,可以是AF_UNLX和AF_INT。这里我们要使用AF_INT。mode:网络程序所采用的通信协议,

32、可以取SOCK_STREAM或SOCK_DGRAM。其中,SOCK_STREAM表明使用的是TCP协议,提供可靠连接;SOCKE_DGRAM表明使用的是UDP协议,提供不可靠连接。deal:一般默认为0。 bind作用:用来设置名称,具体设置如下:Struct sockaddr_in server_addr;server_addr.sin_family=AF_INET;/协议类型,这里是TCP/IP协议server_addr.sin_port=htons;/指定端口号 server_addr.sin_addr.s_addr=htonl;/表示任意IP这里有个小知识需要我们关注一下,不然在运行程

33、序时可能报错。问题就是当申明的时候是用的Struct sockaddr,而在使用的时候总是强制转换成struct sockaddr_in。而对于sin_port和sin_addr.s_addr需要转化成网络字节优先顺序。格式:int bind。参数说明:b_fd:绑定的套接字符。server_addr:用来存放源主机信息比如IP地址和端口。Addrlen:设置结构大小长度。 listen和accept作用:监听客户端连接请求,接收客户端请求。格式:int listen。格式:int accept 。参数说明:s:服务端监听客户端的套接字符。Backlog:表示接入队列允许的连接数目,大多数系统

34、允许20个,也可以自定义510个。参数说明:s1:服务端接收客户端的套接字符。Addr:包含主机地址数据的结构。Addrlen:表示地址的长度。 connet作用:将socket连接至serv_addr指定的网络地址。格式:int connect。参数说明:sockfd:客户端的描述符。serv-addr:表示来访目的端口和ip地址套接字的数据结构。Addrlen:表示地址的长度。 send和recv作用:发送和接收信息。格式:int send 。 int recv 。参数说明:Sockfd:指定写入数据的套接字描述符。Sockfd1:指定读出数据的套接字描述符。Msg:存入写入数据存放的缓冲

35、区。Len:数据长度。Flags:一般设置为0。Buf:读出数据存放的缓冲区。Len1:buf的长度。 close 作用:关闭文件描述符。格式:Close。参数信息:Sockfd:关闭服务端或者客户端的描述符。3.3.2 套接口地址结构Linux中支持很多的套接口地址结构,这里只说明了IPV4套接口地址结构。在这些地址机构中包括了几个很重要的网络信息,它们是:本地主机端口,目的主机端口,通信协议,本地协议地址,目的主机地址。这几个协议在网络连接中起到重要作用。/*用来存储套接字地址*/struct sockaddrunsigned short sa_family; /地址族 char sa_d

36、ata14;sa_family一般都是AF_xxx的形式,主要用来表示所选的是那种协议。通常大多用的是都是AF_INET,表示TCP/IP协议。sa_data是按照字节存放的,存放的信息只能是字节序转换后的ip地址和端口号。在代码的实现过程中几乎不再用struct sockaddr结构体,而是用struct sockaddr_in结构体来代替。该结构体及与其有关的结构如下:struct sockaddr_in short int sin_family;unsigned short int sin_port; struct in_addr sin_addr;unsigned char sin_z

37、ero8;struct in_addr unsigned long s_addr;typedef struct in_addr union structunsigned char s_b1,s_b2,s_b3,s_b4; S_un_b;struct unsigned short s_w1,s_w2; S_un_w;unsigned long S_addr; S_un; IN_ADDR;sin_family说明使用的协议,如AF_INIT。sin_port 把转化后的port number存放在其中。sin_addr 把in_addr里面存放的的ip信息转换后存放在其中。sin_zero通常情况

38、下未使用,如果使用记住用bzero或memset函数将其置换为0。3.3.3 基本转换函数 网络字节顺序在每一个pc机上对变量的字节顺序存储不同,也就是我们所谓的大端字节序和小端字节序。由于IP地址是按照网络字节序存放的, Internt上数据以大端字节序在网络上传输,但是在内部是小端字节序存放的,所以在Internet上传输数据时需要对数据进行字节序转换,否则系统无法自动识别获取数据。 具体转化函数Ntons:将网络字节顺序转换成unsigned short 型数据。Htons:将主机 unsigned short 型数据转换成网络字节顺序。Htonl:将主机 unsigned int 型数

39、据转换成网络字节顺序。Ntohl:将网络字节顺序转换成unsigned int型数据。3.3.4 socket编程流程本次设计中网络编程采用的是c/s架构,即一个服务端和客户端端。由于套接字之间的API存在着一定的相关联,所以套接字之间的流程主要可以分为三个步骤:服务端处于监听状态,客户端发送请求,连接成功并通信。详细的过程为首先服务端调用socket函数创建一个套接字,然后把协议,端口号,ip信息通过bind函数进行绑定。以上操作完后服务端就开始监听客户端的请求,并设置监听的最大数目。当客户端发送链接请求时,服务端就调用accept函数接受客户端的请求。然后对于客户端来说,也是要先调用soc

40、ket函数创建客户端的套接字,这里是用的tcp协议,所以可以不用bind函数。接着调用connect函数与服务端建立连接。当服务端和客户端建立连接时,可以通过彼此之间的套接字描述符来进行数据传输。其中一方通过send函数把数据写入数据缓冲区,有TCP层负责写向网络层进行传输,另一方通过recv函数从缓冲区内读出数据,这样就完成了服务端与客户端之间的数据传输。当双方数据传输完成后,由函数close关闭各自的套接字,使客户端和服务端通信中断。具体流程图如下:Socket创建套接字Socket创建套接字Bind配置本地端口和ipBind配置本地端口和ipListen监听和接收请求Accpet接收请求

41、和建立连接Connect与服务器连接Recvh和send接收和发送信息Send和recv发送和接收信息Close关闭套接字Close关闭套接字服务端 客户端图3.1 socket流程图3.4 TCP/IP协议3.4.1 OSI概述 1、OSI功能描述:我们清楚的了解到OSI并不是一个网络结构,因为它没有定义每个层拥有的具体服务和协议,它只告诉我们每一层该做什么样的工作。但是ISO为所有层提供了标准,每个标准都有自己内部的标准协议。由于OSI参考模型过于复杂,现在流行的因特网体系已经不再使用OSI的表示层和会话层,但是这里还是需要介绍一下OSI模型及其七层层次结构。OSI即开放式通信系统互联参考

42、模型,是国际标准化组织提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。 OSI拥有7个层次如下:应用层:为应用软件提供接口,使应用程序能够使用网络服务。表示层:标准化此层以下各层所传递的信息。会话层:允许不同机器上的用户之间建立会话。运输层:负责建立端到端的连接,保证报文在端到端之间的传输。主要包括TCP和UDP传输。网络层:负责将分组数据从源端传输到目的端,为网络设备提供逻辑地址,进行路由选择、分组转发。数据链路层:在不可靠的物理链路上,提供可靠的数据传输服务,把帧从一跳结点移动到另一跳结点。此层包括组帧、物理编址、流量控制、差错控制、接入控制。(7) 物理层:把数据

43、链路层传来的帧转换为比特流进行传输。 2、OSI 七层体系结构OSI体系结构图如下:面向应用层应用层表示层会话层传输层面向数据传输网络层数据链路层物理层图 3.2 OSI七层结构3.4.2 TCP/IP 协议概述 1、TCP/IP定义TCP/IP全称Transport Control Protocol/Internet Protocol,即传输控制协议/网际协议。是国际互联网Internet采用的协议标准。TCP/IP协议早期用于ARPANet网络,后来开放后用于民用,诞生了Internet。TCP/IP是一种异构网络互连的通信协议,它实现了不同网络之间的互相通信。同样在局域网内的不同网络也是适合的。运行TCP/IP协议的网络是一种采用包或称分组交换的网络。TCP/IP协议是用100多种协议组成的协议栈。TCP协议:传输控制协议,在TCP/IP体系结构中属于传输层,它提供全双工的和可交付的服务。要注意的是TCP协议是面向字节的。IP协议:互联网络协议,在TCP/IP体系结构中属于网络层,提供数据包协议的服务,负责网际主机间无连接、不纠错的网际寻址及数据包传输。 2、TCP/IP工作原理 首先源主机通过应用层服务如fttp等服务将一串字节流传给传输层; 传输层将字节流分成TCP段,加上TCPXX交给互联网络IP层;3

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服