网络传输协议介绍

一.网络传输中为什么需要协议

            在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑

     在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的

     口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太

     大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法

     的用电线把电脑连接到了一起。

            但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不

     能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。

     TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP

     协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外

     语一样,就可以和其他的计算机终端做自由的交流了。

     摘自:https://www.cnblogs.com/fengzanfeng/articles/1339347.html

                          

     下图为上图的补充:

              扩展知识点之面向连接的协议和面向非连接的协议:

              面向连接的协议是指通信双方在通信时,要事先建立一条通信线路,其有三个过

              程:建立连接、使用连接和释放连接,如TCP协议;面向非连接是指在正式通信

              前不必与对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信

              非常相似:你在发短信的时候,只需要输入对方手机号就OK了,比如UDP协议,

              QQ就是使用UDP协议。

二.HTTP协议

    关于http比较全面的一篇文章:

    https://developer.mozilla.org/zh-CN/docs/Web/HTTP

    没有看完,太枯燥

    1.HTTP协议由两部分程序实现:一个客户机程序和一个服务器程序,它们运行在不同

       的端系统中,通过交换HTTP报文进行会话。HTTP定义了这些报文的格式,以及客

       户机和服务器是如何进行报文交换的,即:Web客户机是如何向Web服务器请求Web

       页面,以及服务器如何将Web页面传送给客户机。

    2.Http协议是建立在TCP协议基础之上的。

       当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP

       建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP

       连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。

       所谓的无状态,就是没有记忆能力,是指浏览器每次向服务器发起请求的时候,不是

       通过一个连接,而是每次都建立一个新的连接,即每次请求都是一个全新的连接。

       如果是一个连接的话,服务器进程中就能保持住这个连接并且在内存中记住一些信息

       状态。而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住任何状态,

       成为无状态连接。假如某个特定的客户机在短短的几秒钟内两次请求同一个对象,服

       务器并不会因为刚刚为该用户提供了该对象就不再做出反应,而是重新发送该对象,

       就像该服务器已经完全忘记不久之前所做过的事一样。所以在Java Web编程中引入了

       Session,用来保持特定客户端状态。

       HTTP同时又是无连接的,也叫短连接。无连接的含义是限制每次连接只处理一个请

       求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可

       以节省传输时间。早期这么做的原因是 HTTP 协议产生于互联网,因此服务器需要处

       理同时面向全世界数十万、上百万客户端的网页访问,但每个客户端(即浏览器)与

       服务器之间交换数据的间歇性较大(即传输具有突发性、瞬时性),并且网页浏览的

       联想性、发散性导致两次传送的数据关联性很低,大部分通道实际上会很空闲、无端

       占用资源。因此 HTTP 的设计者。随着时间的推移,网页变得越来越复杂,里面可能

       嵌入了很多图片,这时候每次访问图片都需要建立一次 TCP 连接就显得很低效。后来,

       HTTP的持久连接被提出用来解决这效率低的问题,关于持久连接请看本节4。

    3.HTTP连接同样需要经历三次握手和四次分手

       因为HTTP协议是建立在TCP协议之上的,所以同时需要考虑三次握手和四次分手。

    4.HTTP可以是持久连接也可以是非持久连接,HTTP 1.1起默认是持久连接。

       如果每个请求/响应对,都是经一个 单独的TCP连接 发送,该应用程序被称为使用

       非持久连接;如果所有的请求及相应的响应都经 相同的TCP连接 发送,则该应用

       程序被称为使用持久连接。

       HTTP 1.0中,通过Connection: Keep-alive标识是持久连接。

       HTTP 1.1中,默认就开启持久连接,除非HTTP首部有Connection: Close

       客户端根据这些标识去识别服务器是否支持持久连接。

       为什么要使用持久连接:

              随着时间的推移,html页面变得复杂了,里面可能嵌入了很多图片,这时候每

       次访问图片都需要建立一次tcp连接就显得低效了。因此持久连接被提出用来解决效

       率低的问题。从HTTP/1.1起,默认都开启了持久连接,保持连接特性,简单地说,

       当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关

       闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。

       持久连接不会永久保持连接,它有一个保持时间,可以在不同的服务器软件

     (如Apache)中设定这个时间。虽然这里使用TCP连接保持了一段时间,但是这个时

       间是有限范围的,到了时间点依然是会关闭的,所以我们还把其看做是每次连接完成

       后就会关闭。后来,通过Session, Cookie等相关技术,也能保持一些用户的状态。

       但是还是每次都使用一个新的连接,依然是无状态连接。

       服务器处理非持久连接和持久连接的步骤,请看:

       https://blog.youkuaiyun.com/liqing19850102/article/details/12041491

    5.HTTP报文

       HTTP报文:它是HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的

                           元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据

                           部分。这些报文都是在客户端、服务器和代理之间流动。

       HTTP报文的流动方向:一次HTTP请求,HTTP报文会从“客户端”流到“代理”再流到

                                             “服务器”,在服务器工作完成之后,报文又会从“服务器”流

                                             到“代理”再流到“客户端”。

       报文的语法:所有的HTTP报文都可以分为两类,请求报文和响应报文。请求和响

                            应报文的基本报文结构大致是相同的,只有起始行的语法有所不同。

       请求报文:它会向Web服务器请求一个动作

              请求报文的格式:

                      请求行: <method> <request-URL> <version>

                      请求头:   <headers>

                      主体:   <entity-body>

       响应报文:它会将请求的结果返回给客户端。

              响应报文的格式:

                      起始行:  <version> <status> <reason-phrase>

                      头部:    <headers>

                      主体:    <entity-body>

       HTTP报文的参数说明:

              * 方式(method):客户端希望服务器对资源执行的动作,是一个单独的词,比

                                          如,GET、POST或HEAD

              * 请求URL(request-URL):要直接与服务器进行对话,只要请求URL是资源的

                                                         绝对路径就可以了,服务器可以假定自己是URL的

                                                         主机/端口。

 

              * 版本(version):报文所使用的HTTP版本。其格式:

                                         HTTP/<主要版本号>.<次要版本号>

              * 状态码(status-code):状态码是三位数字,描述了请求过程中所发生的情况。

                                                    每个状态码的第一位数字都用于描述状态的一般类别

                                                    (比如,“成功”、“出错”等等)。

              * 原因短语(reason-phrase):数字状态码的可读版本,包含行终止序列之前的

                                                            所有文本。原因短语只对人类有意义,因此,尽

                                                            管响应行HTTP/1.0 200 NOT OK和

                                                            HTTP/1.0 200 OK中原因短语的含义不同,但同

                                                            样都会被当作成功指示处理。

              * 头部(header):可以有零个或多个头部,每个首部都包含一个名字,后面跟

                                         着一个冒号(:),然后是一个可选的空格,接着是一个值,最

                                         后是一个CRLF首部是由一个空行(CRLF)结束的,表示了头

                                         部列表的结束和实体主体部分的开始。

              关于HTTP协议的报文还有很多内容,这里就不一一列举了,请看:

              https://www.cnblogs.com/zhuifeng/p/4072248.html

    6.  http方法和含义

         GET:查询

         POST:创建

         PUT:修改

         DELETE:删除

    7.  HTTP常见状态码和含义

         2XX:表示成功

         3XX:表示重定向,需要进一步的操作以完成请求

         4XX:客户端错误,请求包含语法错误或无法完成请求

         5XX:服务器错误,服务器在处理请求的过程中发生了错误

 

 

         400       Bad Request        客户端请求的语法错误,服务器无法理解

                出现场景:

                       前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装

         401      未经授权的错误

                     未经授权的错误意味着访问系统需要身份验证的,而在请求中没有给予正当的认证

                     凭据(密码,token等)。这意味着服务器需要身份验证密码才能访问所请求的文

                     件或者资源。这也意味着服务器无法将您识别为具有正确身份验证的用户。

         403       Forbidden            服务器理解请求客户端的请求,但是拒绝执行此请求

                出现场景

                https://zhidao.baidu.com/question/189449429.html

                                                  网站设计人员可设置"您所请求的资源无法找到"的个性页面

         404 文件找不到

         405       Method Not Allowed      客户端请求中的方法被禁止

                出现场景

                        前端发送请求的方法和后端接收请求的方法对应不上,例如后端需要的是GET方

                        法,而前端使用了POST方法,会出现该错误。

 

三.Tcp协议

     1.TCP的三次握手和四次分手

      (1)一些概念补充

               Tcp(传输控制协议)层的一些flag字段,SYN、FIN、ACK、PSH、RST、URG。

               它们的含义是:

                      SYN表示建立连接,当SYN=1同时ACK=0的时,表明这是一个连接请求的

                                                       报文段;SYN=1,ACK=1时,时一个响应的报文段。

                      FIN表示关闭连接。

                      ACK表示响应,ACK是确定收到的字段,用来解决丢包的问题当ACK=1的

                                               时候“确认字号”(期望收到对方下一个报文段的第一个数据

                                               字节的编号)才有效。

                      PSH表示有 DATA数据传输。

                      RST表示连接重置。

                其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,

                它表示的就是建立连接之后的响应,如果只是单个的一个SYN,它表示的只是

                建立连接。TCP的几次握手就是通过这样的ACK表现出来的。但SYN与FIN是

                不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。RST

                一般是在FIN之后才会出现为1的情况,表示的是连接重置。一般地,当出现FIN

                包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和

                SYN+ACK包时,我们认为客户端与服务器建立了一个连接。PSH为1的情况,

                一般只出现在 DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP

                数据包内容被传递。TCP的连接建立和连接关闭,都是通过请求-响应的模式完

                成的。

      (2)三次握手   

               为了理解三次握手,首先先了解为什么要三次握手:

                       信道是不可靠的,但是我们要建立可靠的连接发送可靠的数据,也就是数据

                       传输是需要可靠的。在这个时候三次握手是一个理论上的最小值,并不是说

                       是tcp协议要求的,而是为了满足在不可靠的信道上传输可靠的数据所要求

                       的。

                       如果不使用三次握手会怎么样呢?(这个解释不对)

                              第一次:首先A发送一个(SYN)到B,意思是A要和B建立连接进行通信。

                                             如果是只有一次握手的话,这样肯定是不行的,A压根都不知

                                             道B是不是收到了这个请求。    

                              第二次:B收到A要建立连接的请求之后,发送一个确认(SYN+ACK)给

                                             A,意思是收到A的消息了,B这里也是通的,表示可以建立连

                                             接。

                                             如果只有两次通信的话,这时候B不确定A是否收到了确认消

                                             息,有可能这个确认消息由于某些原因丢了,这会导致B误认

                                             为可以建立连接了,白白等待A端往过发消息。

                              第三次:A如果收到了B的确认消息之后,再发出一个确认(ACK)消息,

                                            意思是告诉B,这边是通的,然后A和B就可以建立连接相互通

                                            信了。

               超时重试机制:

                       如果第一个包,A发送给B请求建立连接的报文(SYN)如果丢掉了,A会周期

                       性的超时重传,直到B发出确认(SYN+ACK);

                       如果第二个包,B发送给A的确认报文(SYN+ACK)如果丢掉了,B会周期性的

                       超时重传,直到A发出确认(ACK);

                       如果第三个包,A发送给B的确认报文(ACK)如果丢掉了,

               三次握手的具体步骤:

                      第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据

                                            包到服务器,主机B由SYN=1知道,A要求建立联机。主机A进入

                                            SYN_SEND状态等待服务器确认。

                      第二次握手:主机B收到请求后要确认联机信息,向A发送

                                            ack number=(主机A的seq+1),syn=1,ack=1,随机产生

                                            seq=7654321的包。主机B进入SYN_RECV状态。

                      第三次握手:主机A收到后检查ack number是否正确,即第一次发送的

                                            seq number+1,以及位码ack是否为1,若正确,主机A会再发送

                                            ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值

                                            与ack=1则连接建立成功。完成三次握手,主机A与主机B开始传

                                            送数据。主机A和主机B进入ESTABLISHED状态。

      (3)四次分手

               首先了解一下TCP为什么要四次分手:

                       TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是

                       全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没

                       有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这

                       个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表

                       示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;

                       当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,

                       就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连

                       接。
               四次分手过程:

                      第一次分手:主机1,向主机2发送一个FIN报文段;此时,主机1进入

                                           FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了。

                      第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,

                                            主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关

                                            闭请求;

                      第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入

                                            LAST_ACK状态;

                      第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然

                                            后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,

                                            就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明

                                            Server端已正常关闭,那好,主机1也可以关闭连接了。

     2.HTTP和TCP

        HTTP是一种短连接,每次请求建立连接,请求结束后断开连接;TCP是一种长连接。

     3. HTTP请求的Method

       (1)GET(查) 

                       GET 方法的首要目的是获取资源。当然您也可以走野路子,不过在这里

                seaconch并不提倡。

                方法特点:

                       --  参数可见

                       --  数据类型只允许 ASCII

                           关于为什么GET可以传中文(中文不是ASCII的)

                           如果你的 Get 请求中有非 ASCII 字符,会在请求之前进行转码,得到没有非

                           ASCII 字符的 URL,比如使用URLencode(),然后去发起 Get 请求,这样请

                           求的路径里不是没有非ASCII。 

                       --  可以被缓存

                           GET 方法支持缓存,当本次请求允许被缓存时,会将资源存值本地 cache ,

                           在未过期的情况下直接取本地 cache;缓存过期后视情况而定。

                       --  可以保存书签

                           当我们访问某一个网站的频率特别高的时候,肯定添加到书签,那其实书签

                           就是依靠 GET 方法来保存的

                       --  请求长度会受限于所使用的浏览器与服务器

                           不同的浏览器对于 GET 请求长度的限制也是不同的,注意这是 浏览器 / 服务

                           器(IE、Chrome、Apache、IIS等) 对于长度的限制,而不是 HTTP 协议

       (2)POST(增)

                方法特点:

                       POST 方法的首要目的是 提交,POST 方法一般用于添加资源。

                       --  数据类型,不限,不像GET必须是ASCII。

                       --  POST 请求与 GET 请求不同,他会首先提交 HEAD 信息,待得到 100 响应

                           后,才会再次将 DATA 提交

                       --  不限制请求长度

                           对于 POST 方法这种以 提交 为首要目的的方法,肯定是不可以限制请求长度

                           的。

                       --  参数不可见

                       --  不能收藏为书签

                       --  不可以被缓存

          GET方法是POST方法的区别:

              --  get参数通过url传递,post放在request body中。

              --  get请求在url中传递的参数是有长度限制的,而post没有。

              --  GET产生一个TCP数据包;POST产生两个TCP数据包。

       (3)HEAD(查)

                HEAD方法用于获取报头信息,HEAD 方法与 GET 方法类似,但并不会返回响应主

                体例如检查 cache 是否被修改,是否过期,HEAD方法与 GET 方法类似,但并不会

                返回响应主体使用场合没有GET多。比如下载前使用HEAD发送请求,通过

      ContentLength响应字段,来了解网络资源的大小;或者通过LastModified响应字段

                来判断本地缓存资源是否要更新。 

       (4)OPTIONS 

                OPTIONS 方法的首要目的是 Priflight Request(预检请求)

                https://cloud.tencent.com/developer/news/397683

 

       (5)PUT 与 PATCH(改)

                PUT 对后台来说 PUT 方法的参数是一个完整的资源对象,它包含了对象的所有字段

                PATCH 对后台来说 PATCH 方法的参数只包含我们需要修改的资源对象的字段

       (6)DELETE(删)

                方法一般用于删除资源

                用于删除资源

         注:其实虽然我们都说 POST(增) DELETE(删)PUT(改)GET(查),但其实真正

                我们是如何实现方法的是随意的,也就是你完全可以用 GET 删除资源,DELETE 增

                加资源,所以说还有些没想明白的同学到这里就可以释然了,毕竟规定是死的,人是

                活的,但是按照规定是好的,不按规定也是可以的。

四.socket

     1.socket介绍

        socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,

        socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户

        来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。Socket是处

        于传输层的,主要有UDP和TCP两个协议。

     2.socket和HTTP相比较

      (a)Socket传输的特点:

               优点:

               * 传输数据为字节级,传输数据可自定义,数据量小(对于手机应用讲:费用低)

               * 传输数据时间短,性能高

               * 适合于客户端和服务器端之间信息实时交互

               * 可以加密,数据安全性强

               缺点:

               * 需对传输的数据进行解析,转化成应用级的数据

               * 对开发人员的开发水平要求高

               * 相对于Http协议传输,增加了开发量

      (b)HTTP传输的特点

               优点:

               * 基于应用级的接口使用方便

               * 程序员开发水平要求不高,容错性强

               缺点:

              * 传输速度慢,数据包大(Http协议中包含辅助应用信息)

              * 如实时交互,服务器性能压力大。

              * 数据传输安全性差

      (c)各数据传输方式的适用范围

               Socket传输适用范围:

               Socket 传输方式适合于对传输速度,安全性,实时交互,费用等要求高的应用中,

               如网络游戏,手机应用,银行内部交互等

               基于Http协议传输的适用范围:

               基于http协议传输的特点:基于http协议传输方式适合于对传输速度,安全性要求不

               是很高,且需要快速开发的应用。如公司OA系统,互联网服务等。

      (d)socke和http的区别

               HTTP为短连接、socket为长连接,socket可以实现很多协议,但是经常使用的是TCP

               协议。

               很多情况下,都是需要服务器端向客户端主动推送数据,保持客户端与服务端的实时

               同步。若双方是 Socket 连接,可以由服务器直接向客户端发送数据;若双方是HTTP

               连接,则服务器需要等客户端发送请求后,才能将数据回传给客户端。

五.FTP

     文件传输协议,用于上传或下载文件。FTP使用两个并行的TCP连接来传输文件,一个是控

     制连接(control connection),一个是数据连接(data connection)。 控制连接用于在两个

     主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“put”和“get”文件的命

     令;数据连接用于实际传输一个文件,FTP的控制连接是持久连接,数据连接是非持久连接。

     * FTP服务器必须在整个会话期间保留用户的状态(state)信息。

       FTP服务器必须把特定的用户账户与控制连接联系起来,随着用户在远程目录树上移动,

       服务器必须追踪用户在远程目录树上的当前位置。对每个活动着的用户会话的状态进行追

       踪,可以对FTP会话总数进行限制

转载于:https://www.cnblogs.com/jialanshun/p/10749449.html

传输层协议-TCP各个字段含义 本文通过具体的数据包说明TCP协议每个字段的含义和实际的作用 阅读详情

相关推荐

Gamit 数据处理,相关的文件配置

一、处理前准备 1、在主文件夹内新建test项目文件,项目内新建brdc、igs和rinex三个文件夹,分别存放广播星历,精密星历几观测值文件,所用的命令分别为sh_get_nav、sh_get_orbits和sh_get_rinex (若文件为.Z,用gunzip命令解压,若仍为d,用命令sh_crx2rnx -f 命令解压为o文件) 2、进入test项目文件夹,链接tables,运行 sh_setup -yr 2015 -apr itrf08_com.apr 3、生成station.info文件。 将t

CodeDoraemon的博客 3375

什么是网络协议?为什么需要网络协议?底层原理是什么?

网络协议通过分层设计,将复杂的通信过程分解为不同的层次,每一层负责不同的功能,从而实现了数据的传输和通信的可靠性。在互联网上,不同的计算机和设备可能使用不同的操作系统、硬件和软件,因此需要一组共同的规则和标准,使它们能够相互通信和交换数据。网络协议规定了数据的格式、传输方式、错误检测和纠正方式、通信终端的地址以及如何建立、维护和结束通信等方面的内容。总之,网络协议是计算机网络中非常重要的基础设施,它使得不同的计算机和设备能够互相通信和交换数据,为我们的日常生活和工作提供了便利。

长风破浪会有时的博客 1929

使用 Mid360 从零开始搭建实物机器人入门级导航系统 —— 基于 Fast_Lio 和 Move_Base

本文详细介绍了如何使用Mid360机器人从零开始搭建一个基于Fast_Lio和Move_Base的入门级导航系统。通过配置 ROS2、集成激光雷达、IMU、Fast_Lio、Move_Base 等模块,我们成功构建了一个能够实现自动导航的机器人系统。在实际开发中,随着需求的变化,你可以不断调整参数、优化路径规划算法、增加新的传感器等,逐步提升机器人的智能与功能。

小蜗牛的珍贵百宝箱 3563

http请求与响应,TCP三次握手&四次分手

从前端发起请求到后台的整个过程,是一个面试中经常遇到的问题。大概的流程想必有一点基础的人都明白,但是要细说,却未必能一一道出来,曾经老师教过的知识也都差不多忘干净了。所以,我上网找了点资料,加上自己的理解,做个记录。 **********************************************************  华丽的分割线 *******************

只是一只程序媛 4万+

别再只接个放大器了!压电传感器测量电路(电压/电荷放大器)的5个实战配置要点

本文深入解析压电传感器测量电路中的5个关键实战配置要点,包括电缆长度选择、输入阻抗匹配、过载保护设计、低频噪声抑制及放大器选型策略。特别针对电压放大器和电荷放大器的应用场景差异提供工程实践建议,帮助工程师有效解决信号失真、噪声干扰等常见问题,提升测量精度和系统可靠性。

weixin_26869081的博客 301

Python速成指南:进阶篇

欢迎来到Python速成指南的进阶篇。如果你已经完成了基础篇的学习(Python速成指南:从零开始的编程之旅-优快云博客),并且对Python的基本概念有了扎实的理解,那么你已经为进入更深层次的Python世界做好了准备。在这个进阶篇中,我们将深入探讨Python的高级特性,并着重于如何在实际工作中应用这些知识。深入理解Python的高级特性掌握在实际项目中常用的技巧和最佳实践提高代码质量和性能了解Python在各个领域的专业应用让我们开始这段激动人心的Python进阶之旅吧!

weixin_44067082的博客 2337

HTTP常见状态码,TCP三次握手和四次分手

HTTP常见状态码 HTTP状态码分类 分类 描述 1** 服务器收到请求,需要请求者继续执行操作 2** 成功,操作被成功接收并处理 3** 重定向,需要进一步的操作以完成请求 4** 客户端错误,请求包含语法错误或无法完成请求 5** 服务器错误,服务器在处理请求的过程中发生了错误 HTTP状态码列表: 1XX 通知 状态码 状态码英文名称 重要程度 描述 100 Continue 中等 客户端应继续其请求,写操作时很少用 2XX 成功 状

jijl 663

C# ArcGIS Engine二次开发——实现“加载shp文件”

private void AddShpDataToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog OpFileDialog=new OpenFileDialog();//OpenFileDialog:打开文件对话框 OpFileDialog.Title="添加矢量数据"; OpFileDialog.Filter="(*.shp)|*.shp";//filter:过滤器;"(*.shp)|*.shp"

weixin_42191203的博客 5254

计算机网络(二)——网络协议基础、TCP/UDP

一、协议的概念 1、什么是协议: 从应用的角度出发,协议可以理解为“规则”,是数据传输和数据的解释的规则。 仅在A、B之间遵守的传输规则称为原始协议。当协议被更多人采用,不断的增加,完善,最终形成一个稳定的、完整的文件传输协议,被广泛应用于各种文件传输过程中,该协议就成为一个标准协议。 2、典型协议: 传输层:常见协议有TCP/UDP协议 应用层:常见的协议有HTTP协议、FTP协议 ...

iotflh的博客 2106

AI工具赋能日常工作的实践指南:以产品经理与程序员为例

AI工具赋能日常工作的实践指南:以产品经理与程序员为例

专注于编程、AI、人工智能等多个领域内容研究和分析 591

DeepLabv3+改进专栏

🔥【DeepLabv3+改进专栏!探索语义分割新高度】🌟 你是否在为图像分割的精度与效率发愁?📢 本专栏重磅推出:✅ 独家改进策略:融合注意力机制、轻量化设计与多尺度优化✅ 即插即用模块:ASPP+升级、解码器。

AIcurator的博客 2575

史上最全最简洁的网络传输协议介绍

1: ICMP(Internet Control Message Protocol,网络控制消息协议)是 TCP/IP 的 核心协议之一,用于在 IP 网络中发送控制消息,提供通信过程中的各种问题反馈。 ICMP 直接使用 IP 数据包传输,但 ICMP 并不被视为 IP 协议的子协议。常见的联 网状态诊断工具比如 ping、traceroute 都依赖于 ICMP 协议。描述 ICMP 的标准文档是 RFC792。 2:TCP(Transmission Control Protocol,传输控...

君君的博客 5483

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

服务器网络传输协议,网络传输方式介绍

网络传输方式主要是取决于所采用的通信协议,无论是点对点传输网络和广播式传输网络,都是一样的,而且与网络拓扑结构也有一定的关系。今天美联科技小编就介绍下,网路传输方式的资讯。1、点对点传输网络在美国服务器点对点传输网络中采用的通信协议都是基于点对点通信的,如SLIP串行线路 Internet协议、PPP点对点协议、 PPPOE基于以太网的点对点协议、PPTP点对点隧道协议等。平时使用的各种 Mode...

weixin_33739591的博客 683

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Ntrip协议与Socket网络传输资源文件介绍

Ntrip协议与Socket网络传输资源文件介绍 去发现同类优质开源项目:https://gitcode.com/ 本仓库提供了一个关于Ntrip协议、TCP和Socket网络传输的资源文件。该文件详细介绍了Ntrip协议的基本原理、TCP协议的应用以及如何通过Socket进行网络传输。此外,文件还涵盖了更新接入点、登录验证等关键协议的实现细节。 资源文件内容概述 Ntrip协议介绍 详细解释...

gitblog_06655的博客 356

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

网络传输协议的介绍——SSE

主要是介绍了sse的用法和场景

weixin_43487532的博客 1736

关于网络传输协议的介绍(TCP、UDP、IP、Http、Socket)

TCP:Transmission Control Protocol,传输控制协议,传输层,是一种基于连接的协议,在收发数据之前必须双方建立可靠的连接。主机A和主机B会进行三次握手(给你发个数据可以吗? 可以,什么时候发? 现在就发,接着吧!)保证数据安全准确。管发管到 UDP:User Data Protocol,用户数据报协议,传输层,是一种基于非连接的协议,不与对方建立连接,

xiyangyang8110的博客 2185

802.1QbbPFC协议标准资源下载介绍:提升网络传输效率的关键技术

802.1QbbPFC协议标准资源下载介绍:提升网络传输效率的关键技术 【下载地址】802.1QbbPFC协议标准资源下载介绍 本项目提供了《802.1Qbb PFC协议标准》的详细资源,深入解析了基于优先级的流量控制协议(PFC)的核心技术与应用。PFC作为802.3x pause的增强版本,显著提升了网络传输的效率与...

gitblog_06747的博客 1074

python网络编程 Socket介绍 UDP网络传输协议

先来想个问题,不同电脑上的进程之间如何通信? 首先通过ip地址找到网络中对应的电脑,然后通过传输协议和端口号来确定这个进程(运行起来的软件),那么数据如何传输需要使用socket来完成,也就是进程之间通信使用socket。 运行的程序或者软件称之为进程,所谓进程间通信是指运行程序之间的数据共享。 所谓的网络编程,就是让在不同的电脑上的软件能够进行数据传递,即进程之间的通信。 网络通信过程(...

二月的博客 341

详解TCP/IP协议第五篇:详细介绍网络传输中的地址

本文是详解TCP/IP协议系列文章中的第五篇,本文详细介绍网络传输中的地址,详细梳理了地址的唯一性和地址的层次。

七叔的博客 1万+

网络传输协议有哪些?

网络传输协议是网络通信中用于规定数据传输格式、顺序和控制机制的规则集合,常见的网络传输协议包括传输控制协议(TCP)、用户数据报协议(UDP)、互联网协议(IP)以及超文本传输协议(HTTP)、文件传输协议(FTP)等应用层协议,每种协议在不同场景下发挥着独特作用。 

weixin_46338972的博客 890

(二)DICOM3.0协议标准的详细介绍

第一章、简介 DICOM3.0协议不单单是DICOM图文件的存储,还包括了DICOM图文件的网络传输协议等等。在目前国内的中文文档中个,大都描述DICOM图文件的存储,而忽视其他方面的东西。导致我们管中窥豹,只见一斑。 要想全面了解DICOM3.0协议,可以去国际医疗机构查看官网,或者看看详细的中文文档,不建议看博客,因为博客上记录的知识,主要还是摘抄源文档的。 ...

xpj8888的博客 1万+

网络协议、网络传输认识

主要介绍了网络协议概念、和网络传输的流程

qq_42392701的博客 1203

App网络传输协议(Json、XML、protobuf)

【原文地址 点击打开链接】 版权声明:本文为博主原创文章,未经博主允许不得转载。 转载请标明出处:一片枫叶的专栏 上一篇文章中我们讲解了如何在App中统计数据,其实现主要分为两种:使用第三方服务统计和自身实现数据统计。一般而言我们使用第三方统计服务已经可以很好的满足我们的也无需求了,只有部分数据敏感型的App,由于其数据敏感性在app中实现数据统计

大神了没 1万+
上一篇: Docker
下一篇: Mbps、Kbps、KBps的关系
anshuo7139
博客等级 码龄10年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值