TCP建立连接的三次握手过程
HTTP连接管理
在这里插入片描述状态行:协议版本响应状态码响应状态文本(提示信息)响应头(deaders):头名:值响应体
响应
典型的http会话在像http这样的Client-Server协议中,会话分为三个阶段:1:客户端建立一条TCP连接(如果传输层不是TCP,也可以是其他适合的连接)客户端发送请求并等待应答(请求)服务器处理请求并送回应答,回应包括一个状态码和对应的数据(响应)
请求数据通常是使用POST方法进行发送的,GET方法是没有请求数据的,注意:get请求规范是没有请求数据的,但是有的人它非要带请求数据,规范是不带的请求数据跟上面的消息报头由一个空行隔开。请求体就是请求数据,请求数据其实就是二进制数据。
应用架构
关于每个方法的安全幂等可缓存可以自己去思考,可以点到网站里面一个一个去看
cookies就好比,你要去银行里面去办业务,首先你是不是需要银行的账户,你每次来银行的时候你必须把账户带来,如果你不带账户,银行里面的工作人员不会理你,所以你这个时候你每次来的时候带上cookie,服务器就根据你携带的cookie,如果这个cookie信息相同,cookie里面有某个标志都是一样的的,那服务器就根据你每次携带的cookie来判定你这个请求和另外一个请求是有关联关系的。
OSI模型,它是国际标准化组织(ISO)提出的一个试使计算机在世界范围内互连为网络的标准框架,简称OSI。它总共分为7层,所以也叫网络7层模型,它从下往上分别是,物理层,数据链路层,网络层,传输层,会话层,表达层和应用层。传输过程如下,把服务器省略,假设我们是直连的。信息从一台计算机的应用程序传出到另一台的应用程序需要先从应用层往下到物理层,再从物理层往上到应用层来完成整个通信过程。
A大型网络私有地址10.0.0.0-10.2525255很大的集团网前面一个256表示网络号,后面三个256相乘表示可以容纳的最大主机数B中型网络私有地址1710.0-17325255前面两个256表示网络号,后面两个256表示主机C小型网络私有地址19160.0-191625255前面三个256相乘表示网络号,最后一个表示主机。小型网络里面最多容纳254台电脑,这里面还涉及到子网掩码。注意:最大主机数乘了还要减去减去的是路由和网关,
客户端向服务端发送一个断开连接的请求:我要断开了服务端:我收到了3,服务端:我也要断开了我也收到了TCP协议数据属于传输层,是我们应用程序开发所能达到的最底层,需要有非常专业的计算机知识,一般情况我们不需要直接操作,这里我们知道了三次握手四次挥手即可。
特点:http是简单的,虽然下一代HTTP/2协议将HTTP消息封装到了帧(frames)中(这是新的技术,现在还没有普及),HTTP大体上还是被设计得简单易读,HTTP报文能够被人读懂,还允许简单测试,降低了门槛,对新人很友好。HTTP协议是可扩展的在HTTP/0中出现的HTTPheaders让协议扩展变得非常容易,只要服务端和客户端就新的headers达成语义一致,新功能就可以被轻松加入进来,下次讲项目的时候我们就可以看到有自定义的请求头
响应数据
ip找主机端口找服务程序
请求方法根据http标准,http请求可以使用多种请求方法
例如
TCP协议“三次握手四次挥手”
建立好连接之后,我把数据加密了发给你,你再把响应数据加密了发给我,并且对数据进行加密的密钥都是请求和响应的时候随机生成的(在一次连接都会随机生成一个),所以非常安全。
get请求一般没有请求体(请求体)。URL其实就是网址,前面部分是域名,问号后面部分是参数,一般get请求才会携带这样的参数(当然post也可以),这个叫查询参数。
OSI模型只是描述了一些概念,用来协调进程间通信标准的制定,但并没有提供一个实现的方法说白了就是嘴炮,实际标准是TCP/IP参考模型TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网的整个TCP/IP协议族,里面有很多的协议。TCP/IP协议对我们的七层模型做了一个压缩。从协议分层模型方面讲,从下往上四个层次组成:网络接口层,网络层,传输层,应用层。TCP/IP传输模型并不完全复合OSI的七层参考模型,它和OSI的结构对于如下:TCP/IP协议对我们的OSI七层模型做了压缩它把物理层和数据链路层压缩为网络接口层,网络层还是网络层,传输层还是传输层,会话层和表示层和应用层压缩成了应用层。
扩展:在过去我们发送通达信 通达信 数据接口 c,数据接口 c,http协议的时候,每一次请求都会建立和断开,这个没有效率,所以从http1开始建立长连接,就是连接之后会发送多个请求,经过一段时间如果你没有请求了我就关闭连接,因为建立和关闭连接是需要花很多时间的。这个叫做长连接,现在一般都是长连接(keepalivkeepalive长连接
总结:上面的知识是为了让我们从底层了解网络通信,网络通信涉及物理层和应用层,我们进行软件测试针对的是应用层。不同的客户端和不同的服务端进行数据交互,为了统大家制定了协议,也就是网络传输协议,我们的接口测试主要就是测试网络接口。网络接口我们可以简单地理解为网络协议。目前使用最广泛的网络传输协议是HTTP协议
硬件接口和软件接口硬件接口是指同一计算机不同功能层之间的通信规则称为接口,例如通过usb接口把鼠标与计算机连接起来。软件接口:实现不同软件,或者软件的不同部分之间数据交互的定义,可以是个函数,类又或者是个定义。
互联网传输数据主要用到两个协议:TCP和UDPUDP是无连接的,直接发,不管收到不收到。思考:什么情况用TCP,什么情况用UDP理解小技巧:TCP是打电话,必须接通才能说话,UDP是写信或者发电报,写完投递就可以了,电报发完就可以了,你收没收到我不知道。有可能别人没有收到。
都去读一下,上面提到的要记住,你在做接口自动化调试的时候你碰到了这些状态码你要知道原因是什么你的项目里面肯定不会每个都出现,但是有一些常用的要知道。
URL中文叫统一资源定位符,是用来标识某一处网络资源的地址,在HTTP的上下文中,URL被叫做“网络地址”或连接。或者就是网址,以下面这个URL为例,介绍下普通URL各部分组成,所谓的URL其实就是网址。一个完整的url包含以下几部分:http是浏览器自动给我们加的8080端口是周知端口,也会省略掉
开头重定向这个请求你发送到服务器之后,这个服务器又转发给别人了,重定向到另外一个域名了,会给你一个消息让你向另外一个地址发请求。我没有登录就直接在淘宝搜索,它就会把我重定向到登录的页面。
典型的http会话
POST由于GET方法最多在url中携带1024字节的数据数据量不足,且将数据放到URL中传递太不安全,数据量大时URL也会变得冗长,所以传递数据量大或者安全性要求高的数据的时候,最好使用POST方法来传递,上传数据用post‘
HTTP是超文本传输协议,就是一种组织数据的格式,是用于从万维网服务器传递超文本到本地浏览器的传输协议,http是基于TCP/IP协议的应用层协议超文本传输协议(应用层),默认使用80端口超文本:除了文本外的其他片.文件等
我用这个方法我其实就是告诉我当前的请求要干什么,就是一个语义。
目前几乎所有的商业应用都是基于互联网的,它们一般采用c/s架构,b/s架构,m/s架构或它们的组合c/s架构client客户端(装在用户电脑上的那个软件)server服务端通过这个软件为客户端提供服务。举例:对于jupyterlab来说cmd就是服务端,浏览器就是客户端。通过浏览器向服务程序请求数据,并把对应的数据展示在浏览器上。
ip地址
这是HTTP协议的设计原理,为什么要这么去设计呢?历史原因是因为http最开始设计的时候被用来发送网页的,那个时候技术没有现在那么先进,硬件也没有现在那么好,特别是带宽也比较窄,如果这个时候你的协议还要去记录很多的信息,那么你在传递的时候就不高效,所以通达信 通达信 数据接口 c,数据接口 c,http协议不会把两个请求连接起来,可以简单理解为它不会去记录客户端的信息,它不去记录客户端的信息它就没办法区分同一个客户端发送的多次请求。
安全:比如GET请求就是客户端向服务器获取数据,GET请求它只能获取,那么对于服务器来说,这个GET请求是安全的吗?换个角度!你用GET请求你只能获取我服务器的数据,对于公共资源,它能修改我服务器的数据吗?不可以!不管你发多少次GET请求,我服务器的资源都是不变的,在这个角度看,GET请求改变不了服务器的状态所以它是安全的。如果你说你服务器里面的数据我不能给你看结果被你看到了,那这个是你服务器自身的而不是我们get请求的原因,因为get请求就是要获取数据,那你这个数据需要被别人获取对不对,那你要给别人嘛,所以你不能说为了安全连访问都不让别人访问那没有意义对不对,从这个角度看GET请求改变不了服务器的状态,所以它是安全的。,幂等:同样的请求被执行一次与连续执行多次的效果是一样的,你请求一次和请求十次它的作用是一样的,那么它就是幂等的。换句话说就是幂等方法不应该具有副作用。你发送一次和发送十次对于服务器来说它不改变。,可缓存:我们有些网站它上面会有很多的片,如果你每次打开这个网站,这个片都要去Webserver去下载的话,那其实是非常耗时的,那我们还会有一个缓存机制,有些资源可以被你缓存到本地,你打开这个网页其实它会把这个片下载到本地,那下一次它打开这个网页的时候它会先去看一下这个片有没有变,如果没有变的话,它直接在本地把你这个片展示出来就可以了,而不需要再去服务器下载一遍。
上面的统统都是二进制,或者叫字节类型。在python中二进制数据用byters来表示字节数据,二进制数据在python里面会用bytes来表示,它会把每个字节里面的数据会把它转化成对应的ascii码字符来表示,如果字节里面本身表示的就是ascii码,那么它就直接输出,如果是其他的数据它就会用一个x加上这个字节里面的数的十六进制去表示。它其实就是我们电脑上的数据每个字节里面的数,只不过它的形式不一样
主要用途是:从万维网服务器(也就是我们的web服务器)传递超文本到本地浏览器的传输协议80端口
04url没有这个资源,这个url找不到
有两种HTTP报文的类型,请求与响应,每种都有其特定的格式。请求是由客户端发送给服务端的报文响应就是服务端响应客户端的报文,每种都有特定的格式。
HTTP是无状态,有会话的这个面试可能问HTTP是无状态的:在同一个连接中,两个执行成功的请求之间是没有关系的,这就带来一个问题,用户没有办法在同一个网站中进行连续的交互,比如在一个电商网站里,用户把某个商品加入到购物车中,切换一个页面后再次添加了商品,这两次添加商品的请求之间没有关联,浏览器无法知道用户最终选择了哪些商品,而使用HTTP的头部扩展,HTTPCookies就可以解决这个问题,把Cookies添加到头部中,创建一个会话让每次请求都能共享相同的上下文信息,达成相同的状态。所谓的无状态就是服务器不会去记录两个请求之间的关系,服务器没办法去区分你同一个浏览器先后发过来的请求,就好比打电话,你每次打过来,你对于我都是全新的,我不会记录你的信息,你下次来的时候我还是不认识你,你每次来都是全新的。这就是我们的无状态。如果别人问你http的无状态是什么意思:我们的通达信 通达信 数据接口 c,数据接口 c,http协议本身不会去记录客户端的任何信息,在同一个连接里面,两次成功的请求之间没有关系。
不管是浏览器还是移动端,它其实统统都是客户端,只不过浏览器服务器是一类,对于这一类它的开发方式不一样,它可能只注重服务端开发以及在不同浏览器之间的兼容效果的开发上,所以把这种单独抽出来叫做b/s;移动端目前比较流行的一个是Android,一个是ios,它们的开发方式也是不一样的,所以我们也会把它们抽出来m/s。
PUT和PATCH有什么区别?有可能会问到PUT是全部修改全部替换PATCH只改变某一部分的信息举个例子:比如我有某个商品,商品可能有商品的名称,商品的片,商品的价格,如果我只是改商品的价格,我就用PATCH,因为只需要改价格这一个数据,如果我要把这个商品整个都改了,名称要改,片要改,价格也要改,我们就用PUT请求
最常用的方法是get和post
PUT(大修改)PATCH(小修改)DELE(删除)
请求方法还可以登录mozilla网站可以去看对应的方法,会更加具体。
谷歌浏览器可以监听http请求我一回车我浏览器发送的请求F12打开谷歌开发者调试工具,我访问网址,如果你想监听当前浏览器发送的请求,点到Network里面我一回车,就会出现一条一条的数据,每一条数据就是一个http请求。RequestURL(请求UR:我这次请求,我发送的地址就是这个https:协议s.taobao.com域名(如果后面是周知端口会省略掉)/search路径这个路径是我要搜索问号开始后面所有的内容叫url参数,也叫查询参数。如果在查询参数后面带一个#号,这个就叫做锚点。
b/s,m/s本质上是c/s的一种,只是按照设备单独拿出来分类一下。对于一些大型的商业应用来说,一般又有c/s,又有b/s,还有m/s服务器其实就是功能更强大一点的电脑,和我们普通的电脑没有太多的区别,只不过它性能更高价格更贵,仅此而已,因为所有的程序都是跑在计算机系统上的,所以它本质上还是一个计算机,不管是客户端还是服务端。补充:你去面试的时候或者你在写你的简历的时候,如果你的项目经验比较匮乏,那么这个时候你的系统它有客户端,也可以用浏览器访问,它也有移动端有自己的app,小程序这些,那么你可以把它们拆分为三个项目,因为不同的端你的测试是不一样的,如果你的项目经验比较丰富,那可以写成一个项目,一个项目的不同端的测试。
注意:协议端口分为TCP端口和UDP端口,由于TCP和UDP两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也可以有235端口,两者并不冲突。分类:
一个网页由多个部分组成,浏览器通过互联网向服务端发送请求,我们请求回来的数据可能不是在一个服务器上面的客户端和服务端通过交换各自的信息(与数据流正好相反)进行交互,由像浏览器这样的客户端发出的信息叫做requests(请求),被服务器响应的消息叫做responses(响应)
什么是接口
所以Host请求头就是域名(就是主机和端口号),如果你的主机不是域名,你的端口不是对应的80端口,你就需要自己带上。通过一个域名解析一个IP,当你访问www.baidu.com,这个域名会被DNS域名解析服务器解析成一个IP
请求
端口
HTTP是HyperTextTransferProtocol的缩写,是一个用于传输超媒体文档的应用层协议(最开始通达信 通达信 数据接口 c,数据接口 c,http协议就是发明用来做html这种网页的网络资源的通信)。它是为Web浏览器与Web服务器之间的通信而设计的,但也可以用于其他目的。HTTP遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应。HTTP是无状态协议,这意味着服务器不会在两个请求之间保留任何数据。尽管通常基于TCP/IP层,但它可以在任何可靠的传输层上使用,也就是说,该协议不会像UDP那样静默的丢失消息。RUDP——作为UDP的可靠化升级版本——是一种合适的替代选择。
00服务器错误重大bug(一般上线产品是不允许有500的,这是非常严重的BU
下面这个URL我们叫做路径更恰当
HTTP是一种能够获取如HTML这样的网络资源的protocol(通讯协议)。它是在Web上进行数据交换的基础,是一种client-server协议,也就是说,请求通常是由像浏览器这样的接受方(客户端)发起的。一个完整的Web文档通常是由不同的子文档拼接而成的,像是文本、布局描述、片、视频、脚本等等。
例如请求百度首页的请求报文b’GET/HTTP/0 Host:www.baidu.com ’b:表示是二进制数据(bytes)GET:请求方法,/表示当前路径,表示拿它的首页,协议版本HTP/0,Host:头部字段名:值:www.baidu.com请求数据可以没有,我这是一个get请求所以我没有带请求数据。注意:上面请求百度首页的请求报文的url是/代表根路径,域名没有写路径,就表示请求根路径,在这个报文中的意思就是取Host请求头那个地址的首页。所谓的通达信 通达信 数据接口 c,数据接口 c,http协议就是类似于这样的格式,它怎么组织的就怎么组织,就是对这个数据进行相应格式的组织
特点:面向连接的,可靠的(TCP协议需要先连接才能传数据,传完数据后再断开连接。每次发数据的时候都会校验,发错了就会重新传),基于字节流的传输层应用协议效率低但是可靠(每次发送都会校验),TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和,如果不对的话就得重新传。
HTTP响应的一个例子响应报文包含了下面的元素HTTP协议版本号一个状态码(statuscod,来告知对应请求执行成功或失败,以及失败的原因一个状态信息,这个信息是非权威的状态码描述信息,可以由服务端自行设定,一般情况下都是一致的HTTPheaders,响应报头,与请求头部类似响应体(响应回来具体的数据)
什么是域名?所谓的域名其实就是我们经常说的网址(主机和端口),为什么要有网址呢?因为ip地址是数字不好记忆,你知道百度网站的ip是什么吗?不知道吧,但是你知道他的网址吗,知道吧。你输入www.baidu.com它就帮你打开了百度这个网页,现在大家基本上都是用的https协议,当你在浏览器里面输入这个网址的时候网址后面还会跟一个冒号,冒号后面还会跟一个443端口,如果你是通达信 通达信 数据接口 c,数据接口 c,http协议就是80端口(协议和端口通常浏览器会自动给你加上),像这种周知端口我们不用跟,浏览器自动会处理,如果你有特殊的你就要加,域名和IP会有对应关系,每个地方的网络里面都会有一个DNS服务器,这个DNS服务器它就会去把网址和ip一一对应,当我们在浏览器输入www.baidu.com的时候首先它其实不是向百度网站去发请求,会首先向DNS服务器发请求,它会把这个网址发给DNS服务器,DNS服务器会帮你做DNS解析,解析之后会告诉你www.baidu.com它的ip是多少,那你拿到这个ip之后你再向ip发请求然后拿到数据,这是这样的一个过程。有时候我们说DNS劫持,如果你的电脑DNS被劫持了,那么我就可以给你重定向,你百度.com的时候我就可以把你定到我想要你访问你的那个网址域名就是网址
上中的井号代表锚点:什么是锚点呢?锚点后就是访问后置顶显示的内容,这个锚点我们做接口测试用不到
HTTP定义了一组请求方法,以表明要对给定资源执行的操作,指示针对给定资源要执行的期望动作,虽然他们也可以是名词,但这些请求方法有时被称为HTTP动词,每一个请求方法都实现了不同的语义,但一些共同的特征由一组共享,例如一个请求方法可以是安全,幂等或可缓存。根据http标准,http请求可以使用多种请求方法,你要想实现的功能不同,你就用对应的请求方法
这样就带来一个问题,随着互联网的发展,我们的业务越来越复杂,我就需要在浏览器里面把多个请求联系起来,不然我的服务器怎么判断你这个用户登录还是没有登录呢?所以就有了这样的需求,http虽然是无状态的,但是可以是有会话的,所谓的会话就是浏览器从用户访问某个网站,直到它最后离开这个网站,关闭这个浏览器,这个中间的一来一回一来一回整个的过程我们就称为会话,既然http是无状态的那么它怎样去实现会话呢?这个时候就由我们http的头部扩展就是headers里面的Cooikes就可以解决这个问题,把Cookies添加到头部中,创建一个会话让每次请求都能共享相同的上下文信息,达成相同的状态。
那客户端和服务端是如何进行通信的呢?客户端和服务端进行通信说白了就是两个电脑进行通信,每个电脑的系统不一样,我的是windows你的可能是mac,linux,…它们之间要通信,怎么样统一呢?
TCP协议建立连接的过程(三次握手)跟UDP协议对比TCP协议是安全的,每个包发过去后会确认,确认数据对不对,不对就重新发。所以通过TCP协议传输数据只要传过去就是对的不会出错误比较可靠,但是它的效率比较低大多数数据我们是需要很可靠的,所以只会用TCP去传
OSI七层模型(参考模型)
一次完整的http事务包含以下过程客户与服务器建立连接客户向服务器提出请求也叫http请求服务器接受请求,并根据请求返回相应的文件作为应答也叫http响应客户与服务器关闭连接其实对于建立连接和关闭连接我们不用管,第一和第四我们不用管,我们主要关注第二和第三点,建立和关闭连接是TCP/IP协议去做的,我们http是在tcp基础之上的,那个是底层我们不关心它,我只关心我的客户端向服务器发送了一个请求,然后服务端收到你的请求之后会返回一个响应。这一来一回我们把它称为一次http事物,或者有时候我们就叫一个http请求,其实它包含了两部分,即请求和响应。请求就是我要什么,响应就是我拿回了什么。
客户端向服务端发送一个同步请求:你在吗?我要传数据给你了。(不在就算了,客户端会等,过了一定时间会超时)服务端给个应答,:我在,我准备接收数据了客户端:好的,我们建立连接,马上传数据。当你的客户端服务端建立好连接后它们就可以传数据了直播的时候也会用UDP协议
00说明你的请求有误,可能你的参数,你的url有误
当我们确定ip建立连接后,怎么确定我的数据是传输给哪个程序的呢,这个时候引入端口的概念。pc上的端口一共是65536个2**16四个字节。需要网络通信的程序都要监听端口,比如qq监听到你发送的数据包里面的端口是qq对应的端口,那么这个数据就会被qq收到。其实我们常说的端口也叫协议端口,它总是和ip和TCP协议一起出现。一个ip地址的端口可以有65536个
理解小技巧:可以把端口比作银行的服务窗口,对外服务。现金业务提供一个窗口,非现金业务提供一个窗口,贵宾业务提供一个窗口,用来接待不同的客户。操作系统比这个要复杂得多,同时运行的服务程序非常多,为了能够方便的管理,于是就开了很多的窗口,一个服务程序一个,相互不干扰。
03没有权限,被禁止了
用的比较多的:GET(获取)POST(将数据传递到服务器,新增)PUT(大修改)DELETE(删除)PATCH(小修改)
面试问:get请求能不能携带请求体?->根据HTTP协议它的规范,GET请求是不应该携带请求体的,但是如果你非要带请求体其实也是可以的,因为这是协议。
扩展
在http/1之前我们前面讲通达信 通达信 数据接口 c,数据接口 c,http协议传完成了第三个阶段之后,我们会关闭tcp连接,我们叫短连接,你每发送一个请求,都会先建立一个连接,然后服务器会响应回来,响应回来之后会断开。(因为我们在过去我们网页没有现在那么复杂可能就只有片和html,现在我们随便打开一个网页都会打开几十个上百个请求,如果每次都是打开关闭是非常耗时的所以我们从http/1开始,连接在完成第三阶段后不再关闭,客户端可以再次发起新的请求,这意味着第二步和第三步可以连续进行数次,我们叫长连接,即:客户端和服务端建立一次连接后,可以在这条连接上进行多次请求/响应操作
TCP-打电话又管发又管收比较认真负责但是效率比较低,我传文件给你,用的是TCP协议,要校验,如果我不校验,错一个字节这个文件就完了。如果我们对数据我们要求它完整不能出错,这种我们就用TCP协议。
接口的分类
通达信 通达信 数据接口 c,数据接口 c,http协议是明文传递的,数据在传递的过程中是明文的,包括用户名和密码,用POST请求也没用,别人如果抓你的包,看到的还是明文的。https在数据传递之前要加密,服务端在接收到数据之后会解密,服务端给出的响应也会加密,接收后也需要解密,需要用到第三方证书才会相互信任
通达信 通达信 数据接口 c,数据接口 c,http协议支持自定义请求头,如果你要测试的产品,有自定义请求头,需要手动添加这个请求头。所谓的请求头其实就是一些约定,请求头可以做什么:打个比方:客户端向服务端发送请求,我要告诉你我有一些特点,我要告诉你我是什么操作系统,我只接收什么数据类型。请求头是我们事先定义好的。下面见常见的请求头及作用
跟我们请求的数据,发送的数据是一样的,它会以二进制的数据去返回。响应报文中空行后的内容就是响应数据了。跟发送的数据是一样的,它会以二进制的数据来返回json
当客户端向服务端发起一次请求后,服务端在返回的响应头中会包含一个HTTP状态码,HTTP状态码是由三位数字来表示的,由第一位数字来表示状态码的类型,一般来说有五种类型。100信息响应200ok成功201创建成功
Usere-Agant(用户代理):你发送请求的时候,服务端要知道你的客户端是由哪个软件,什么终端什么操作系统,你是Windows,你是IE,你是谷歌,你还是火狐…你手机,你手机的话是安卓,还是ios,然后你是安卓的话你用的是哪个浏览器,这个用户代理就起这个作用。Accept:你发这个请求的时候你就告诉它你要什么数据。有一些请求它是有的。不用可以去记,后面用到什么请求头就讲什么请求头,请求头其实就是一些约定
ip地址分类
周知端口:操作系统占用的端口,0-1023这些端口不要随便用,其他的端口是可以自己去分配的。通达信 通达信 数据接口 c,数据接口 c,http协议:80端口https:443动态端口:49152-65535之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配注册端口:1024-49152分配给用户或应用程序,当然不是绝对的可以去改,例如3306mysql4723appium
一个完整的HTTP响应报文也由四个部分组成,分别是状态行,消息报头,空行和响应正文
连接管理是一个HTTP的关键话题:打开和保持连接在很大程度上影响着网站和Web应用程序的性能,在HTTP/X里有多种模型:短连接,长连接和HTTP流水线
你每发送一个请求都会建立一个连接,然后去发送这个请求,然后去返回这个请求,然后把它关闭,这个叫短连接,下次你又想发送的时候,建立连接,发送请求,响应请求。。。关闭每次都是这样。
最初设计网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(I即网络ID和主机ID,同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应,intrenet委员会定义了五种IP地址以适合不同容量的网络,ip地址分为ABCDE5类,它们适用的类型分别为:大型网络:中型网络,小型网络,多目地址,备用,常用的是B和C两类,其中A,B,C(如下表格)由internetNIC在全球范围内统一分配,D,E类为特殊地址
b/s架构browser浏览器(浏览器是客户端的一种)直接依赖浏览器厂商的浏览器,不需要额外地去开发客户端,只用去开发后台程序就可以了,可以大大加快开发效率,,我们把以浏览器作为客户端的应用我们称为b/s架构,像网站这种,都是b/s架构。其实所有b/s架构的都可以理解为网站,因为它都可以用浏览器去呈现。
请求数据
tcp和ip是一起的,建立TCP连接是基于IP的客户端和服务端要建立连接,需要IPip地址就是网络上主机的逻辑地址,ip其实就是给我们网络上面每个电脑的编号。日常情况下,每一台联网的pc都必须要有ip,没有ip不能上网,有了ip才能通信。ipv4现在ipv4已经不够用了ip地址是一个32位的二进制数,通常被分隔成四个8位的二进制数,每个八位二进制最多表示256种情况IP地址通常使用点分十进制表示(的形式,其中,abcd都是0-255之间的十进制整数,例如:19161,为了便于寻址以及层次化
HTTPS超文本传输安全协议,是以安全为目标的HTTP通道,简单讲是HTTP的安全版通达信 通达信 数据接口 c,数据接口 c,http协议是基于TCP/IP协议的,而https是在通达信 通达信 数据接口 c,数据接口 c,http协议的基础之上(底层的协议还是http),再加了一层SSL/TLS协议,数据在传输过程中是加密的先建立一个加密通道,你在发送的时候把它加密了,发过去的时候在那边再解密。
断言
超文本传输安全协议https默认是443端口
请求头
请求方法
TCP协议:
现在大多数网站都是https协议,
接口是一种抽象化的概念,通过它可以把不同的事物连接起来,例如插头插座就是接口(插头插座实际上就是电器和电路的连接),我们今天讨论的主要是计算机领域的接口。
根据不同的上下文,可将消息头分为
一个HTTP的method,经常是由一个动词像GET,POST或者一个名词像OPTIONS,HEAD来定义客户端的动作行为。通常客户端的操作都是获取资源或者发送HTMLform表单值,虽然在一些情况下也会有其他操作。要获取的资源的路径,通常是上下文中就很明显的元素资源的URL,它没有protocol,domain,或是TCP的port(en-US)。HTTP协议版本号。为服务端表达其他信息的可选头部headers。对于一些像POST这样的方法,报文的body就包含了发送的资源,这与响应报文的body类似。(请求体)
http报文http/1以及更早的HTTP协议报文都是语义可读的(没有编码,直接用人工都是可以读的)。在HTTP/2中,这些报文被嵌入到了一个新的二进制结构,帧,帧允许实现很多优化,比如报文头部的压缩和复用,即使只有原始HTTP报文的一部分以及HTTP/2发送出来,每条报文的语义依旧不变,客户端回重组原始HTTP/1请求,因此用HTTP/1格式来理解HTTP/2报文依旧有效
http/1以及更早的HTTP协议报文都是语义可读的(没有编码,直接用人工都是可以读的)。在HTTP/2中,这些报文被嵌入到了一个新的二进制结构,帧,帧允许实现很多优化,比如报文头部的压缩和复用,即使只有原始HTTP报文的一部分以及HTTP/2发送出来,每条报文的语义依旧不变,客户端回重组原始HTTP/1请求,因此用HTTP/1格式来理解HTTP/2报文依旧有效有两种HTTP报文的类型,请求与响应,每种都有其特定的格式。请求是由客户端发送给服务端的报文响应就是服务端响应客户端的报文,每种都有特定的格式。
通达信 通达信 数据接口 c,数据接口 c,http协议.
也叫做开放式通信系统参考模型(数据在网络里面是怎样传递的)
http报文
公有地址,是可以直接上网的。私有地址减掉的两个地址是路由和网关我们知道了IP我们解决了我们在互联网上我们要让两台电脑之间进行通信在互联网上我们要找到某一台主机,需要的就是它的IP
概述
Generalheaders:同时适用于请求和响应消息,但与最终消息主体中传输的数据无关的消息头Requestheaders:包含更多有关要获取的资源或客户端本身信息的消息头。Responseheaders:包含有关响应的补充信息,如其位置或服务器本身的消息头Entityheaders:包含有关实体主体的更多信息,比如主体长(Content-Lengt度或其MIME类型。
HTTP协议
ip地址分类(按照规模)
网络传输模型
我们需要知道:这个请求方法是什么意思
注意:HTTP本质是无状态的,使用Cookies可以创建有状态的会话
UDP-发电报不连接不可靠只管发不管收好处是效率高像我们的视频信号,直播一般都会用UDP协议(数据在传输过程中错误是非常常见的,如果每次出错都要重新传,这个视频就会很卡,像视频这些其实是一帧一帧的片,我少个一两帧其实是不影响整体的观看的),如果我们对数据的完整性要求不是特别严格,对时效性要求非常严格的时候我们就用UDP协议我们上课如果不用udp协议那么你的延时会非常高。
TCP/IP协议
0定义了三种请求方法:GET(获取数据)POST(上传,例如登录,将数据传递到服务器)HEAD(类似于GET请求,但是返回的响应里面没有响应体,只有响应头,获取信息)1新增了六种请求方法,OPTIONS,PUT(大修改,整个修改),PATCH(修改部分),DELETE(删除),TRACE和CONNECT方法
HTTP请求的一个例子请求由以下元素组成:
HTTP消息头允许客户端和服务器通过request和response传递附加信息,一个请求头由名称(不区分大小写)后跟一个冒号‘:’,冒号后跟具体的值(不带换行符)组成,该值前面的引号空白会被忽略,请求头不区分大小写。请求行下方是请求报头,每个报头的形式如下:报头名+:+值HOST请求头是必须的请求头其实就是一些约定
·m/s架构mobileserver我们把所有装在手机,或者是你的ipad这种移动设备上面的客户端我们成为移动端
响应报头
一个完整的http请求的报文格式一个完整的HTTP请求报文包括:请求行,请求头,空行和请求数据下给出了请求报文的一般格式
这里面比较重要的是TCP协议,IP地址,端口。这些概念都要知道,后面我们去做接口自动化都会用到。
断开一个连接需要经历四次挥手TCP协议断开连接的过程(四次挥手)
get和post方法的区别经常会问的get方法获取数据其实简单来说,GET方法一般用来负责获取(查询)数据,或者将一些简短的数据放到URL参数中传递到服务器(最多有1024字节),比POST更加高效和方便。get请求相对于post请求来说它的传递不太安全,然后数据量也不足,所以我们在传递数据量大或者安全性要求较高的数据的时候我们就使用post请求来传递数据。
响应状态码
同请求头状态行下方的就是响应报头,常见响应报头如下。更详细的响应报头请看:https://developer.mozillorg/zh-CN/docs/Web/HTTP
文章为作者独立观点,不代表股票交易接口观点