收藏 分销(赏)

第2章-网页前端基础.ppt

上传人:精*** 文档编号:7518665 上传时间:2025-01-07 格式:PPT 页数:32 大小:2.26MB 下载积分:12 金币
下载 相关 举报
第2章-网页前端基础.ppt_第1页
第1页 / 共32页
第2章-网页前端基础.ppt_第2页
第2页 / 共32页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样,*,*,网页前端基础,2025/1/7 周二,1,认识,HTTP,协议,目录,认识,Python,网络编程,2,小结,3,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个,socket,。,套接字是,socket,的通常叫法,用于描述,IP,地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。,Python,中,Socket,库为操作系统的,socket,实现提供了一个,Python,接口。,Python,网络编程,Socket,库,套接字(,socket,),socket,库中整合了多种协议类型。,Python,网络编程,Socket,库,1.socket,协议类型,socket,协议类型,描述,socket.AF_UNIX,用于同一台机器上的进程通信(本地通信),socket.AF_INET,用于服务器与服务器之间的网络通信,socket.AF_INET6,基于,IPV6,方式的服务器与服务器之间的网络通信,socket.SOCK_STREAM,基于,TCP,的流式,socket,通信,socket.SOCK_DGRAM,基于,UDP,的数据报式,socket,通信,socket.SOCK_RAW,原始套接字,普通的套接字无法处理,ICMP,、,IGMP,等网络报文,而,SOCK_RAW,可以;其次,SOCK_RAW,也可以处理特殊的,IPV4,报文;此外,利用原始套接字,可以通过,IP_HDRINCL,套接字选项由用户构造,IP,头,socket.SOCK_SEQPACKET,可靠的连续数据包服务,服务器端,Socket,函数:,socket,库中的服务器端函数仅供服务器使用。,Python,网络编程,Socket,库,2.socket,函数,语法格式,描述,socket.bind(address),将套接字绑定到地址,在,AF_INET,协议下,以,tuple(host,port),的方式传入,如,socket.bind(host,port),,其中,host,为绑定的地址,,port,为监听的端口,socket.listen(backlog),开始监听,TCP,传入连接,,backlog,指定在拒绝链接前,操作系统可以挂起的最大连接数,该值最少为,1,,大部分应用程序通常设为,5,socket.accept(),接受,TCP,链接并返回(,conn,address,),其中,conn,是新的套接字对象,可以用来接收和发送数据,,address,是链接客户端的地址,客户端,Socket,函数:,socket,库中的客户端函数仅供客户端使用。,Python,网络编程,Socket,库,2.socket,函数,语法格式,描述,socket.connect(address),连接到,address,处的套接字,一般,address,的格式为,tuple(host,port),,若连接出错,则返回,socket.error,错误,socket.connect_ex(address),功能与,socket.connect,相同,但成功返回,0,,失败返回,error,的值,公共,Socket,函数:,socket,库中的公共函数即可在服务器端使用也可在客户端使用,为通用函数。,Python,网络编程,Socket,库,2.socket,函数,语法格式,描述,socket.recv(buffsize,flag),接受,TCP,套接字的数据,数据以字符串形式返回,,buffsize,指定要接受的最大数据量,,flag,提供有关消息的其他信息,通常可以忽略,socket.send(string,flag),发送,TCP,数据,将字符串中的数据发送到链接的套接字,返回值是要发送的字节数量,该数量可能小于,string,的字节大小,socket.sendall(string,flag),完整发送,TCP,数据,将字符串中的数据发送到链接的套接字,但在返回之前尝试发送所有数据。成功返回,None,,失败则抛出异常,socket.recvfrom(bufsize,flag),接受,UDP,套接字的数据,与,recv,函数类似,但返回值是,tuple(data,address),。其中,data,是包含接受数据的字符串,,address,是发送数据的套接字地址,socket.sendto(string,flag,address),发送,UDP,数据,将数据发送到套接字,,address,形式为,tuple(ipaddr,port),,指定远程地址发送,返回值是发送的字节数,socket.close(),关闭套接字,公共,Socket,函数:,socket,库中的公共函数即可在服务器端使用也可在客户端使用,为通用函数。,Python,网络编程,Socket,库,2.socket,函数,语法格式,描述,socket.getpeername(),返回套接字的远程地址,返回值通常是一个,tuple(ipaddr,port),socket.getsockname(),返回套接字自己的地址,返回值通常是一个,tuple(ipaddr,port),socket.setsockopt(level,optname,value),设置给定套接字选项的值,socket.getsockopt(level,optname,buflen),返回套接字选项的值,公共,Socket,函数:,socket,库中的公共函数即可在服务器端使用也可在客户端使用,为通用函数。,Python,网络编程,Socket,库,2.socket,函数,语法格式,描述,socket.settimeout(timeout),设置套接字操作的超时时间,,timeout,是一个浮点数,单位是秒,值为,None,时表示永远不会超时。超时时间应在刚创建套接字时设置,因为它们可能用于连接的操作,如,s.connect(),socket.gettimeout(),返回当前超时值,单位是秒,如果没有设置超时则返回,None,socket.fileno(),返回套接字的文件描述,socket.makefile(),创建一个与该套接字相关的文件,TCP,连接由客户端发起,服务器对连接进行响应。,建立一个服务器,服务器进程需要绑定一个端口并监听来自其他客户端的连接。,若有客户端发起连接请求,服务器就与该客户端建立,Socket,连接,随后的通信就通过此,Socket,连接进行。,服务器依赖服务器地址,服务器端口,客户端地址,客户端端口这,4,项来唯一确定一个,Socket,连接。,使用,Socket,进行,TCP,编程,建立服务器端的,TCP,连接,具体步骤如下。,在,Python,中创建一个基于,IPv4,和,TCP,协议的,Socket,。,绑定监听的地址和端口,地址使用本机地址,“,127.0.0.1,”,或,“,local host,”,,使用大于,1024,的端口。,调用,listen,方法开始监听端口,传入的参数指定等待连接的最大数量,设定为,5,。,创建一个,tcp,函数,该函数在连接建立后,服务器端首先发出一条表示连接成功的消息,然后等待客户端数据,再加上欢迎信息发送给客户端。若客户端发送,exit,字符串,则直接关闭连接。,通过一个循环接受来自客户端的连接,使用,accept,函数等待并返回一个客户端的连接,每个连接都分配一个新线程来处理。,使用,Socket,进行,TCP,编程,1.,服务器端,TCP,连接,在服务器端,TCP,连接建立后,建立客户端,TCP,连接进行测试,具体步骤如下。,与服务器端的协议保持一致,也建立一个基于,IPv4,和,TCP,协议的,Socket,。,与服务器端建立连接,连接的地址与端口需与服务器端保持一致。,使用,recv,函数接受服务器提示信息,之后再使用,send,函数发送数据至服务器,可看到服务器返回的结果。,使用,Socket,进行,TCP,编程,2.,客户端,TCP,连接,TCP,建立的连接可靠,通信双方以流的形式互相传送数据。相对,TCP,协议,,UDP,则是面向无连接的协议。,使用,UDP,协议时,无需建立连接的过程,仅需知道对方的,IP,地址及端口号,便可直接发送数据包,但无法保证能顺利传达到。,虽然用,UDP,传输数据不可靠,但其传输速度比,TCP,快,对于不要求可靠到达的数据,就可以使用,UDP,协议。,UDP,传输通常应用在通讯实时性要求更高于可靠性场景,例如网络游戏。,使用,Socket,进行,UDP,编程,UDP,连接与,TCP,连接类似,也分为服务器端和客户端,不同的是,UDP,连接无需调用,listen,方法,直接接受来自任何客户端的数据。,建立,UDP,连接,服务器端同样需要绑定地址与端口。,使用,recvfrom,方法返回数据及客户端的地址与端口。,当服务器收到数据后,直接调用,sendto,把数据用,UDP,发给客户端。,使用,Socket,进行,UDP,编程,1.,服务器端,UDP,连接,客户端使用,UDP,连接时同样需要先创建,socket,。,之后无需使用,connect,方法,直接用,sendto,方法发送数据至服务器建立,UDP,连接,服务器端同样需要绑定地址与端口。,UDP,连接与,TCP,连接可同时使用同一端口互不冲突,两者使用的端口是独立绑定的。,使用,Socket,进行,UDP,编程,2.,客户端,UDP,连接,1,认识,HTTP,协议,目录,认识,Python,网络编程,2,小结,3,爬虫在爬取数据时将会作为客户端模拟整个,HTTP,通信过程,该过程也需要通过,HTTP,协议实现。,HTTP,请求过程如下。,由,HTTP,客户端向服务器发起一个请求,创建一个到服务器指定端口(默认是,80,端口)的,TCP,连接。,HTTP,服务器从该端口监听客户端的请求。,一旦收到请求,服务器会向客户端返回一个状态,比如,“,HTTP/1.1 200 OK,”,,以及返回的响应内容,如请求的文件、错误消息、或其它信息。,HTTP,请求方式与过程,在,HTTP/1.1,协议中共定义了,8,种方法(也叫,“,动作,”,)来以不同方式操作指定的资源,常用方法有,GET,、,HEAD,、,POST,等。,HTTP,请求方式与过程,1.,请求方法,请求方法,方法描述,GET,请求指定的页面信息,并返回实体主体。,GET,可能会被网络爬虫等随意访问,因此,GET,方法应该只用在读取数据,而不应当被用于产生,“,副作用,”,的操作中,例如在,Web Application,中,HEAD,与,GET,方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回具体的内容,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中该资源的相关信息(元信息或称元数据),POST,向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据会被包含在请求中,这个请求可能会创建新的资源或修改现有资源,或二者皆有,PUT,从客户端上传指定资源的最新内容,即更新服务器端的指定资源。,HTTP,协议采用了请求响应模型。,客户端向服务器发送一个请求报文,请求报文包含请求的方法、,URL,、协议版本、请求头部和请求数据。,服务器以一个状态行作为响应,响应的内容包括协议的版本、响应状态、服务器信息、响应头部和响应数据。,HTTP,请求方式与过程,2.,请求(,request,)与响应(,response,),客户端与服务器间的请求与响应的具体步骤如下。,连接,Web,服务器:,由一个,HTTP,客户端发起连接,与,Web,服务器的,HTTP,端口(默认为,80,)建立一个,TCP,套接字连接。,发送,HTTP,请求:,客户端经,TCP,套接字向,Web,服务器发送一个文本的请求报文。,服务器接受请求并返回,HTTP,响应:,Web,服务器解析请求,定位该次的请求资源。之后将资源复本写至,TCP,套接字,由客户端进行读取。,释放连接,TCP,连接:,若连接的,connection,模式为,close,,则由服务器主动关闭,TCP,连接,客户端将被动关闭连接,释放,TCP,连接;若,connection,模式为,keepalive,,则该连接会保持一段时间。,客户端解析,HTML,内容:,客户端首先会对状态行进行解析,之后解析每一个响应头,最后读取响应数据。,HTTP,请求方式与过程,2.,请求(,request,)与响应(,response,),HTTP,状态码是用来表示网页服务器响应状态的,3,位数字代码,按首位数字分为,5,类状态码。,常见,HTTP,状态码,1.HTTP,状态码种类,状态码类型,状态码意义,1XX,表示请求已被接受,需接后续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束,2XX,表示请求已成功被服务器接收、理解并接受,3XX,表示需要客户端采取进一步的操作才能完成请求。通常用来重定向,重定向目标需在本次响应中指明,4XX,表示客户端可能发生了错误,妨碍了服务器的处理。,5XX,表示服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器以当前的软硬件资源无法完成对请求的处理。,HTTP,状态码共有,67,种状态码,常见的状态码如下。,常见,HTTP,状态码,2.,常见,HTTP,状态码,常见状态码,状态码含义,200 OK,请求成功,请求所希望的响应头或数据体将随此响应返回。,400 Bad Request,由于客户端的语法错误、无效的请求或欺骗性路由请求,服务器不会处理该请求,403 Forbidden,服务器已经理解该请求,但是拒绝执行,将在返回的实体内描述拒绝的原因,也可以不描述仅返回,404,响应,404 Not Found,请求失败,请求所希望得到的资源未被在服务器上发现,但允许用户的后续请求,500 Internal Server Error,通用错误消息,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理,不会给出具体错误信息,503 Service Unavailable,由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是暂时的,并且将在一段时间以后恢复,HTTP,头部信息(,HTTP header fields,)是指在超文本传输协议(,HTTP,)的请求和响应消息中的消息头部分。头部信息定义了一个超文本传输协议事务中的操作参数。在爬虫中需要使用头部信息向服务器发送模拟信息,通过发送模拟的头部信息将自己伪装成一般的客户端。,HTTP,头部信息,HTTP,头部类型按用途可分为:通用头,请求头,响应头,实体头。,通用头:,既适用于客户端的请求头,也适用于服务端的响应头。与,HTTP,消息体内最终传输的数据是无关的,只适用于要发送的消息。,请求头:,提供更为精确的描述信息,其对象为所请求的资源或请求本身。新版,HTTP,增加的请求头不能在更低版本的,HTTP,中使用,但服务器和客户端若都能对相关头进行处理,则可以在请求中使用。,响应头:,为响应消息提供了更多信息。例如,关于资源位置的描述,Location,字段,以及关于服务器本身的描述使用,Server,字段等。与请求头类似,新版增加的响应头也不能在更低版本的,HTTP,版本中使用。,实体头:,提供了关于消息体的描述。如消息体的长度,Content-Length,,消息体的,MIME,类型,Content-Type,。新版的实体头可以在更低版本的,HTTP,版本中使用。,HTTP,头部信息,1.HTTP,头部类型,HTTP,头字段根据实际用途被分为,4,种类型:通用头字段(,General Header Fields,),请求头字段(,Request Header Fields,),响应头字段(,Response Header Fields,),实体头字段(,Entity Header Fields,)。,HTTP,头部信息,2.,常用头字段,字段名,说明,示例,Accept,可接受的响应内容类型(,Content-Types,),Accept:text/plain,Accept-Charset,可接受的字符集,Accept-Charset:utf-8,Accept-Encoding,可接受的响应内容的编码方式,Accept-Encoding:gzip,deflate,Accept-Language,可接受的响应内容语言列表,Accept-Language:en-US,Cookie,由之前服务器通过,Set-Cookie,设置的一个,HTTP,协议,Cookie,Cookie:$Version=1;Skin=new;,Referer,设置前一个页面的地址,并且前一个页面中的连接指向当前请求,意思就是如果当前请求是在,A,页面中发送的,那么,referer,就是,A,页面的,url,地址,Referer:zh.wikipedia.org/wiki/Main_Page,User-Agent,用户代理的字符串值,User-Agent:Mozilla/5.0(X11;Linuxx86_64;rv:12.0)Gecko/20100101Firefox/21.0,HTTP,是一种无状态的协议,客户端与服务器建立连接并传输数据,在数据传输完成后,本次的连接将会关闭,并不会留存相关记录。,服务器无法依据连接来跟踪会话,也无法从连接上知晓用户的历史操作。这严重阻碍了基于,Web,应用程序的交互,也影响用户的交互体验。,某些网站需要用户登录才进一步操作,用户在输入账号密码登录后,才能浏览页面。对于服务器而言,由于,HTTP,的无状态性,服务器并不知道用户有没有登录过,当用户退出当前页面访问其他页面时,又需重新再次输入账号及密码。,熟悉,Cookie,为解决,HTTP,的无状态性带来的负面作用,,Cookie,机制应运而生。,Cookie,本质上是一段文本信息。,当客户端请求服务器时,若服务器需要记录用户状态,就在响应用户请求时发送一段,Cookie,信息。,客户端浏览器会保存该,Cookie,信息,当用户再次访问该网站时,浏览器会把,Cookie,做为请求信息的一部分提交给服务器。,服务器对,Cookie,进行验证,以此来判断用户状态,当且仅当该,Cookie,合法且未过期时,用户才可直接登录网站。,熟悉,Cookie,1.Cookie,机制,Cookie,由用户客户端浏览器进行保存,按其存储位置可分为内存式存储和硬盘式存储。,内存式存储将,Cookie,保存在内存中,在浏览器关闭后就会消失,由于其存储时间较短,因此也被称为非持久,Cookie,或会话,Cookie,。,硬盘式存储将,Cookie,保存在硬盘中,其不会随浏览器的关闭而消失,除非用户手工清理或到了过期时间。由于硬盘式,Cookie,存储时间是长期的,因此也被称为持久,Cookie,。,熟悉,Cookie,2.Cookie,的存储方式,客户端与服务器间的,Cookie,实现过程的具体步骤如下。,客户端请求服务器:,客户端请求网站页面,服务器响应请求:,Cookie,是一种字符串,为,key=value,形式,服务器需要记录这个客户端请求的状态,在响应头中增加一个,Set-Cookie,字段。,客户端再次请求服务器:,客户端会对服务器响应的,Set-Cookie,头信息进行存储。,当再次请求时,将会在请求头中包含服务器响应的,Cookie,信息。,熟悉,Cookie,3.Cookie,的实现过程,1,认识,HTTP,协议,目录,认识,Python,网络编程,2,小结,3,本章介绍了,Python,中的底层,Socket,库,及运用,socket,库建立,TCP,和,UDP,连接。并对超文本传输协议(,HTTP,)及其相关机制进行了简要介绍。对本章做小结如下。,Socket,库提供多种协议类型和函数,可用于建立,TCP,和,UDP,连接。,HTTP,协议基于,TCP,协议进行客户端与服务器间的通讯,由客户端发起请求,服务器进行应答。,HTTP,状态码由,3,位数字构成,按首位数字可分为,5,类状态码。,HTTP,头部信息为,HTTP,协议的请求与响应消息中的消息头部分,其定义了该次传输事务中的操作参数。,Cookie,机制可记录用户状态,,服务器可依据,Cookie,对用户状态进行记录与识别。,小结,配套的课程视频、实训资源、实训环境等资源:,https:/edu.tipdm.org/course/179,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服