版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第13章网络编程第13章网络编程了解网络编程的体系结构。掌握IP地址和端口号的概念。理解socket编程和运行流程。了解UDP和TCP协议。了解多进程并发服务器。了解其他并发服务器。主要内容13.1网络概述 13.2socket网络编程基础 13.3基于UDP的网络聊天通信13.4基于TCP的数据转换 13.5TCP并发服务器13.6I/O多路转接服务器 13.7上机实践:1对1聊天程序 13.1网络概述13.1.1网络体系结构5了解网络编程,能说出什么是网络体系结构
先定一个小目标!网络编程网络编程是计算机科学中的一个重要分支,它指的是在计算机网络上进行通信的软件开发过程。网络编程是Web应用程序、云服务和移动应用程序中不可或缺的部分。初识网络编程6网络体系结构通信系统的整体设计,它为网络硬件、软件、协议、存取控制和拓扑提供标准。一般采用分层结构模式。ISO/OSI和TCP/IP模型ISO/OSI:各大厂商都在定义自己的通信规则,导致市场混乱,缺乏统一的标准,于是国际标准化组织(ISO)于20世纪70年代末期开始研究统一的、开放的通信模型。TCP/IP:1974年,TCP/IP(TransmissionControlProtocol/InternetProtocol,传输控制协议/网际协议)协议被提出,慢慢地通过竞争战胜其他一些网络协议的方案。网络体系结构7网络体系结构8ISO/OSI模型应用层:OSI模型的最高层,它直接面向用户的应用程序。表示层:处理数据的表示方式,包括数据的编码、解码、加密、解密、压缩和解压缩等。会话层:建立、管理和终止应用程序之间的会话。传输层:上层应用提供端到端的可靠数据传输服务。网络层:在不同的网络之间进行路由选择和数据包转发。链路层:将物理层提供的比特流组织成帧,并进行错误检测和纠正。物理层:物理层主要负责在物理介质上传输原始的比特流。9TCP/IP模型应用层。提供各种网络服务,如电子邮件、文件传输、远程登录等。传输层。提供端到端的通信,负责数据包的发送和接收。它包括TCP(传输控制协议)和UDP(用户数据报协议)两种协议。网络层。负责数据的路径选择和逻辑地址寻址,以确保数据能够在网络中正确传输。这一层包括IP协议、ARP协议、ICMP协议等。数据链路层。负责建立和管理物理连接,传输比特流,并进行差错处理。网络体系结构网络体系结构10TCP/IP模型与ISO/OSI模型比较结构与应用。TCP/IP协议分为四层,注重实践,有成熟的产品,并成为工业标准。而OSI则有七层,注重理论,仅是个参考模型。网络互联问题。OSI一开始主要针对广域网,后来才意识到网络互联的重要性,才在网络层中划分了个子层来实现IP的功能。而TCP/IP一开始就注重网络互联的重要性,并单独为IP设置一个层次。层次与功能。OSI模型的网络层既提供面向连接的虚电路服务,又提供无连接的数据报服务。传输层只提供面向连接的服务。而TCP/IP模型的网络层只提供无连接的服务,但在传输层上同时支持两种通信模式。层次之间。OSI对层次与协议做了明确的规范,通信时,上层只能使用下一层提供的服务,不可以跨层。而TCP/IP并未明确定义,甚至也未明确定义网络接口层的功能。通信时,上层可直接使用更低层提供的服务,允许跨层。数据封装。OSI模型的数据封装必须具有完整的封装。而TCP/IP支持跨层封装。协议与模型的关系。OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型。13.1.2网络数据传输流程11了解网络编程,能说出什么是网络传输的整个过程
先定一个小目标!分层作用应用层:提供各种网络服务,如电子邮件、文件传输、远程登录等。传输层:提供端到端的通信,负责数据包的发送和接收。它包括TCP(传输控制协议)和UDP(用户数据报协议)两种协议。网络层:负责数据的路径选择和逻辑地址寻址,以确保数据能够在网络中正确传输。这一层包括IP协议、ARP协议、ICMP协议等。数据链路层:负责建立和管理物理连接,传输比特流,并进行差错处理。TCP/IP数据传递流程12层级封装封装:在数据传输过程中,每一层都执行特定的功能,下一层为上一层提供服务,以确保数据能够可靠、有效地传输。每一层都有特定的协议族,会在用户数据上加上协议头信息。而对下一层来说,上一层的头信息是“用户数据”的一部分。。解封:数据封装好后,会通过网路发送至对方。对方会一层层地“剥掉”协议头信息,从而获得最终的数据。TCP/IP数据传递流程1313.1.3网络应用架构14了解网络编程,能说出B/S和C/S架构的不同
先定一个小目标!B/S架构和C/S架构15两种架构B/S模式指的是浏览器(Browser)/服务器(Server)模式。C/S模式指的是客户端(Client)/服务器(Server)模式。C/S模式下的Client是多样的,如即时聊天工具、大型客户端游戏等等。而B/S模式下的Client只有一种——浏览器。从本质上说,B/S模式属于C/S模式。由于Web(WorldWideWeb,万维网)在Internet中发展过程中,起到了关键性的作用,所以一般情况下将基于浏览器的C/S模式(即B/S模式)分成一个类别。B/S架构和C/S架构1613.1.4IP地址和端口号17能正确理解IP和端口号
先定一个小目标!IP与端口号的作用18IP和端口号的作用在计算机网络中,两台或多台计算机设备是通过IP地址和端口号来识别对方并进行通信的。其中IP地址是网络中每个设备的唯一标识符,用于确定数据包在网络中的路由和目的地。而端口号则是运行在计算机上特定应用程序或服务的唯一标识符,用于区分同一台计算机上不同应用程序之间的通信。IP与端口号的作用19IP和端口号的作用在计算机网络中,两台或多台计算机设备是通过IP地址和端口号来识别对方并进行通信的。其中IP地址是网络中每个设备的唯一标识符,用于确定数据包在网络中的路由和目的地。而端口号则是运行在计算机上特定应用程序或服务的唯一标识符,用于区分同一台计算机上不同应用程序之间的通信。IP地址(InternetProtocoladdress)是网络中计算机设备的唯一标识,计算机以及其他的网络设备之间的通信就是靠IP地址来识别对方的位置。端口则用于标识计算机或网络设备上提供的特定网络服务的具体进程。IP加上端口号就可以标识网络中的唯一进程。IP与端口号的作用20计算机网络通过IP寻找到对方主机IP与端口号的作用21计算机网络通过端口找到对应的应用程序(进程)13.2socket网络编程基础13.2.1socket套接字23了解socket编程,能编写socket程序
先定一个小目标!socketsocket本意是电源插口、插孔,但在计算机编程中,中文往往翻译成“套接字”。socket是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。socket是计算机之间进行通信的一种约定或一种方式,通过socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。初识socket24初识socket25进行网络开发之前需先导入socket模块。importsocket初识socket26编写socket程序是,需要使用socket模块中socket()方法就可以开启服务器和客户端。socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None)socket函数的参数及其描述27参数描述family用于指定地址族,默认值为AF_INET(指定IP格式为IPv4)。该项参数还可设置为AF_INET6(指定IP格式为IPv6)和AF_UNIX(只能用于单一的UNIX进程通信)type指定socket的通信方式,默认值为SOCK_STREAM(流式套接字,用于TCP通信)。该项参数还可以设置为SOCK_DGRAM(数据报式套接字,用于UDP通信)和SOCK_RAW(原始套接字,用于处理ICMP、IGMP等网络报文,或需要用户构造IP头部的通信中)proto用于指定与特定的地址家族相关的协议,默认值为0,表示有系统根据地址格式和套接字类型自动选择合适的协议fileno套接字文件描述符,默认值为None,表示由系统分配初识socket初识socket28创建套接字importsocket#导入socket模块s_tcp=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建基于TCP的套接字s_udp=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#创建基于UDP的套接字13.2.2
socket通信流程29理解socket编程的通信过程
先定一个小目标!socket通信30socket通信流程socket的通信流程通常遵循“打开—读/写—关闭”模式。socket的通信步骤因协议不同而不同。TCP/IP协议的传输层中最为常见的两个协议分别是传输控制协议TCP(TransmissionControlProtocol)和用户数据报协议UDP(UserDatagramProtocol)。socket通信31TCP通信流程TCP协议是面向连接的、可靠的、基于字节流的传输层通信协议,应用程序在使用之前,需要先建立TCP连接。TCP通过校验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。socket通信32TCP通信步骤详解socket()方法用于创建socket。服务器和客户端,都需要创建一个socket。bind()方法用于服务绑定。服务器需要为其socket绑定一个具体的IP地址和端口号,以便客户端能够找到它。listen()用户设置监听。服务器socket进入监听状态,等待客户端的连接请求。connect()方法用于客户端发起请求连接。accpet()方法用于接收客户端的连接请求。recv()和send()方法用于数据传输。连接建立后,客户端和服务器就可以通过这两个方法,进行数据的读写操作,实现双向通信。close()方法用于关闭socket。当通信完成后,客户端和服务器都需要关闭各自的socket,释放资源。socket通信33UDP通信流程UDP是一个无连接的协议,它仅提供面向事务的简单的不可靠信息传送服务。当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。socket通信34UDP通信步骤详解socket()方法用于创建socket。服务器和客户端,都需要创建一个socket。服务器端创建时,需要指定参数type=socket.SOCK_DGRAM。recvfrom()方法用于接收对方发送过来的信息,它也为阻塞模式。sendto()方法用于向对方发送数据,发送数据时,仅需要将数据发送至网路,无须关心对方是否收到。13.2.3socket内置方法35采用socket内置方法进行编程
先定一个小目标!socket内置方法36服务器端内置方法方法描述bind()绑定地址(host、port),以元组(host、port)的形式表示listen()开始TCP监听accept()被动接受TCP客户端连接,(阻塞式)等待连接的到来socket内置方法37客户端内置方法方法描述connect()主动连接服务器,若错误,则抛出异常connect_ex()connect()方法的扩展版本,出错时返回出错码,而不是抛出异常socket内置方法38公共内置方法方法描述recv()接收TCP数据,数据以字符串形式返回send()发送TCP数据,将string中的数据发送到连接的套接字sendall()完整发送TCP数据,完整发送TCP数据recvfrom()接收UDP数据sendto()发送UDP数据close()关闭套接字getpeername()返回连接套接字的远程地址getsockname()返回套接字自己的地址settimeout(timeout)设置套接字操作的超时期gettimeout()返回当前超时期的值fileno()返回套接字的文件描述符应用案例:扫描开放端口编程实现扫描目标主机上的开放端口39思考:如何采用socket实现上述功能
【分析】(1)扫描端口:扫描一个端口是否开放的最直接的办法是,向目标主机的特定端口发送TCP连接请求,若对方主机有响应则表示该端口为开放端口,反正则为关闭端口。。(2)函数选择:在Python的socket模块中,connect()方法用于建立与指定地址的套接字的连接,但当无法连接时,会抛出异常。而connect_ex()方法也用于建立与指定地址的套接字的连接,但它在连接失败时不会引发异常,而是返回一个错误码。这个错误码通常是非零的,表示连接失败的原因。若连接成功,则返回0。应用案例:扫描开放端口40
【实现】(1)首先定义IP和扫描的port范围。(2)依次建立客户端向port发送连接请求。(3)若返回零,则存入列表。应用案例:扫描开放端口4113.3基于UDP的网络聊天通信13.2.3UDP通信43学会使用socket编写UDP聊天程序
先定一个小目标!需求分析建立基于UDP协议的服务器。客户端和服务器端相互发送数据。UDP聊天程序44服务器端代码回路IP(127.0.0.1)是一个特殊的IP地址,也被称为本地回环地址或localhost。它表示计算机本身,主要用于网络软件测试以及本地机进程间通信。UDP聊天程序45客户端代码UDP聊天程序46运行结果要先启动服务器端进程,再启动客户端进程。如果客户端与服务器端不在一台机器上,在网络交差的环境下,双方发送的消息有可能会丢失,这并非程序出现BUG。UDP聊天程序4713.4基于TCP的数据转换13.2.4TCP通信49学会使用socket编写TCP通信程序
先定一个小目标!需求分析建立基于TCP协议的服务器。客户端和服务器端相互发送数据。TCP通信程序50服务器端代码socket.SOCK_STREAM表明此socket对象是基于TCP协议的。listen()方法设置TCP监听,参数的含义是指定在拒绝连接之前,操作系统可以挂起的最大连接数量。该值至少为1,通常情况下设置5。accpe()方法的作用是接收来自客户端的TCP连接,此函数默认为阻塞模式。recv()方法和send()方法分别为接收和发送数据。由于TCP数据在传递之前就已经建立连接,因此不需要在这两个函数中指定对方的地址。TCP聊天程序51客户端代码connect()方法用于向服务器发送连接请求。close()方法用户关闭socket,正常关闭时会向对方发生-1。址。TCP聊天程序52运行结果与UDP程序一样,要先启动服务器端进程,再启动客户端进程。与UDP不一样,TCP协议会保障消息送达,如果网络不佳,连接端口,则程序会中断或者抛出异常。TCP聊天程序5313.5TCP并发服务器13.5.1单进程非阻塞服务器55了解进程的概念,了解非阻塞模式服务器
先定一个小目标!并发服务器TCP并发服务器是一种能够同时处理多个客户端连接请求的服务器模型。它使用TCP协议进行通信,并且可以在同一时刻响应多个客户端的请求。在TCP并发服务器中,当一个客户端请求到达时,服务器并不直接处理该请求,而是创建一个新的子进程或线程来处理该请求。TCP并发服务器模型通常用于需要处理大量并发连接的场景,如Web服务器、文件服务器等。通过合理地配置和管理服务器资源,TCP并发服务器可以提供高效、稳定的服务。并发服务器概念56单进程非阻塞服务器单进程非阻塞服务器是一种服务器设计模式,它使用一个进程来处理多个客户端的请求,而不会因等待某个客户端的请求完成而导致其他客户端的请求被阻塞。。在单进程非阻塞服务器中,通常会使用非阻塞套接字(non-blockingsocket)来实现。非阻塞套接字在发送或接收数据时,若没有数据可用,则会立即返回一个错误,而不是阻塞进程的执行。并发服务器概念57代码setblocking(False)是将socket对象设置成非阻塞模式。在非阻塞模式下,若没有socket连接请求,则accpet函数会抛出异常,程序会中断。解决的方案是,将accpet语句写到try-except语句块中。当无连接请求时,程序不会停止;当有连接请求时,accpet语句会正常执行。recv()方法与accpet()方法类似,在非阻塞模式下,若没有接收数据,则也会抛出异常,因此也要写到try-except语句块中。编写单进程非阻塞的TCP服务器5813.5.2多进程并发服务器59了解多进程并发服务器
先定一个小目标!多进程并发服务器并发执行:即多个任务或者操作在同一时间段内同时或几乎同时进行。并发执行的TCP服务器分为两种,一是多进程并发,二是多线程并发。多进程并发服务器60多进程并发服务器Process函数的作用是创建子进程,它有两个参数:target是目标函数,即子进程的入口函数;args是子进程入口函数的参数。start函数是启动子进程。join函数是等待子进程结束。多进程并发服务器61多线程并发服务器一个进程可以包含多个线程线程是计算机执行的最小单位通过threading.Thread来启动线程多线程并发服务器6213.6
I/O多路转接服务器13.6.1select并发服务器64了解IO多路复用的概念
先定一个小目标!IO多路复用I/O多路转接服务器,也被称为多任务I/O服务器,其主要思想是由内核来代替应用程序监视客户端的连接,而不是由应用程序自己进行监视。这样可以更有效地处理多个客户端的并发连接。。。I/O多路转接可以显著提高服务器的处理能力和效率,因为它避免了为每个客户端连接创建单独的进程或线程,从而减少了CPU和内存的使用。同时,由于内核负责监视连接,因此应用程序可以专注于处理请求,而无需担心连接管理的问题。现I/O多路复用的主要方法包括select、poll和epoll。这些方法都允许服务器同时阻塞多个I/O操作,然后等待这些操作中的任何一个完成。。IO多路复用概念65select并发服务器select并发服务器是一种基于多路I/O转接的服务器模型,其核心思想在于利用多任务处理机制(如多线程或多进程)为每个客户端创建一个任务来处理,从而极大地提高服务器的并发处理能力。select并发服务器主要依赖于select函数,这是一个用于在一组文件描述符上进行异步I/O多路复用的系统调用。select并发服务器可以同时监视多个文件描述符,等待其中任何一个文件描述符准备就绪(如读就绪或写就绪),然后进行相应的操作。IO多路复用概念66编写select并发服务器6713.6.2epoll并发服务器68了解epoll并发服务器
先定一个小目标!epoll并发服务器epoll是Linux操作系统提供的一种事件通知机制,它是I/O多路复用技术中的一种实现方式,特别适用于处理大量并发连接的情况。与传统的select和poll相比,epoll具有更高的性能和扩展性。ep
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省衡阳市常宁市第一中学2025-2026学年高一下学期5月期中考试历史试卷
- 广播电视播音员主持人资格考试(广播电视播音主持业务)试题及答案(定西2026年)
- 【安徽】2025年高考安徽卷物理高考真题文档版
- 2022年6月福建省地理高中学生学业基础会考(扫描版)参考答案
- 2025-2030年校园招聘大使行业跨境出海战略分析研究报告
- 2025-2030年时装衬布行业商业模式创新分析研究报告
- 自由场固定观测强震仪器企业数字化转型与智慧升级战略分析报告
- 塑解剂DBD行业商业模式创新分析报告
- 新形势下电子元器件及设备行业顺势崛起战略制定与实施分析报告
- 2026年北京市海淀区初三二模语文试卷(含答案)
- 张承志《北方的河》
- GB/T 8539-2000齿轮材料及热处理质量检验的一般规定
- GB/T 6175-20162型六角螺母
- 11466现代企业人力资源管理概论第11章
- 给排水工程量计算规则及定额使用注意事项
- 盆腔炎中医护理的方案课件
- 外国城建史-第10章-文艺复兴与巴洛克时期的城市课件
- 培训道路运输从业考试系统
- 教师师德师风年度考核登记表
- 化学原料药产品公司绩效管理制度
- Q∕SY 01128-2020 录井资料采集处理解释规范
评论
0/150
提交评论