ios连接到服务器为响应,iOS HTTP总结

一、HTTP请求方式

HTTP超文本传输协议:是短连接,是客户端主动发送请求,服务器作出响应,响应之后服务器断开。HTTP属于应用层面向对象协议,HTTP有两类报文:请求报文和相应报文。

请求报文包含:请求行、请求头、空行、请求数据四部分组成。

响应报文包含:状态行、消息报文、响应正文三部分组成。

通常,HTTP请求方式有三种,分别是:POST、GET、HEAD。其中POST和GET用于数据发送。

1、POST:它将发送的数据单独放在一个流中进行发送,而不是附加到URL地址后面,这样做的好处是这些数据不会出现在URL地址中。

2、GET:它将发送的数据直接添加到URL后面,用&链接,这样的好处是不用另外的数据流来发送这些数据,但是缺点是将用户信息暴露出来了,不安全。

3、HEAD:它是请求资源的元数据方法。

二、HTTP定义了与服务器交互的不同的方法,最基本的方法有?

1、URL全程是资源描述符,我们可以这样认为:一个URL地址,它用于一个网络上的资源,而HTTP中的GET、POST、PUT、DELETE就对应着这个资源的查、改、增、删四个操作。

2、GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

三、socket简介

1、socket是基于TCP/IP协议,它是一个可以连通网络上不同计算机程序之间的管道,把数据从管道A端放进去,则会从管道B、C......等端冒出来。管道的端口由机器的IP和程序所使用的端口号来确认。

2、socket可以支持数据的发送和接收,它会定义一种称为套接字的变量,发送数据的时候首先创建套接字,然后使用该套接字的send to等方法对准某个IP/端口,进行数据发送;接收端口也首先创建套接字,然后将该套接字绑定到一个IP/端口上,所有发向此端口的数据会被该套接字的recv等函数读出。和读出文件中的数据一样。

3、TCP/IP的socket提供三种套接字:流式套接字、数据报式套接字、原始套接字。

4、常用的第三方库:AsyncScoket。

四、APP需要加载大量的数据,给服务器发送请求,但是服务器卡住了,请问怎么解决?

1、设置请求超时。

2、给用户提示请求超时。

3、根据用户操作再次请求数据。

五、HTTP通信的发送请求、接收相应包含哪些内容?

一个请求包含请求行、请求头、请求体。

1、请求行:包含HTTP协议版本、状态码、状态英文名称HTTP/1.1 200 ok

2、请求头:对客户端的环境描述、客户端请求的主机地址等信息。

3、请求体:客户端发送给服务器的具体数据,比如文件数据。

一个响应包括:状态行、响应头、实体内容。

1、状态行:包含HTTP协议版本、状态码、状态英文名:HTTP/1.1 200 ok

2、响应头:包含对服务器的描述、对返回数据的描述。(服务器类型、返回数据类型、返回数据长度、响应时间)

3、实体内容:服务器返回给客户端的具体数据,比如文件数据。

b0f72d6701ce?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

POST和GET的区别

六、TCP和UDP的区别

1、UDP是用户数据报协议:主要用在实时性相对较高以及对质量相对较弱的地方,但面对现在高质量的线路,不容易丢包除非是在一些拥塞的情况下,如流媒体。

2、TCP是传输控制协议:是面向连接的,可靠性高,有良好的拥塞控制机制,如http、ftp、telent等。

b0f72d6701ce?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

TCP&UDP的区别

七、什么是三次握手和四次挥手

更好地回答:

1、初始状态:刚开始客户端处于close状态,服务店处于listen状态。

2、然后,第一次握手,客户端给服务端发送一个SYN报文,并指明客户端的初始化序列号ISN(c),此时客户端进入SYN_Send状态。

3、第二次握手,服务端收到客户端的SYN报文之后,会以自己的SYN报文作为应答,并且指定了自己的初始化序列号ISN(c),同时会把客户端的ISN+1作为ACK的值,表示自己收到了客户端的SYN,此时服务器处于SYN_REVD的状态。

4、第三次握手,客户端收到SYN报文之后,会发送一个ACK 报文,当然,也一样把服务器的ISN+1作为ACK的值,标识已经收到了服务端的SYN报文,此时客户端处于establised(已建立)状态。

5、服务器收到客户端的ACK报文之后,也处于establised状态。

三次握手的作用:

1、确认双方的接受能力、发送能力是否正常。

2、制定自己的初始化序列号,为后面的可靠传输做准备。

3、如果是HTTPS协议的话,三次握手过程中还会有数字证书的验证和加密密钥的生成。

初始化序列号ISN是非固定的,防止攻击者猜出来。

什么是半连接队列?

第一次握手之后,服务端处于SYN_RCVD状态,此时双方还没有完全建立连接,服务器会把此种状态下的请求连接放到一个队列里,我们把这种队列称之为半连接队列。

握手期间是否可以携带数据?

第一次第二次握手不可以携带数据,防止有人恶意攻击。

第三次握手可以携带数据。因为已经建立连接了

1、三次握手实现过程

第一次握手:建立连接时,客户端发送同步序列编号到服务器,并进入发送状态,等待服务器的确认。

第二次握手:服务器收到同步序列编号,确认并同时自己也发送一个同步序列编号+确认标志,此时服务器进入等待状态。

第三次握手:客户端收到服务器发送的包,并向服务器发送确认标志,随后连接成功。

注意:是在链接成功之后再进行数据传输。

2、四次挥手

第一次:客户端向服务器发送一个带有结束标记的报文。

第二次:服务器收到报文之后,向客户端发送一个确认序号,同时通知自己相应的程序,对方要求关闭链接。

第三次:服务器向客户端发送一个带有结束标记的报文。

第四次:客户端收到报文后,向服务器发送一个确认序号。链接关闭。

八、JSON和XML的区别?

1、可读性:基本相同,XML的可读性比较好。

2、可扩展性:都有很好的可扩展性。

3、编码难度:JSON编码比较容易。

4、解码难度:JSON解码难度基本为零,XML要考虑子节点和父节点。

5、数据体积:JSON体积较小,传输速度更快。

6、数据交互:JSON和JavaScript交互更加方便。

7、数据描述:XML对数据的描述性更好。

九、HTTP和socket的区别。

1、HTTP短连接,客户端主动发送请求,服务端才能相应,一次请求完毕后,断开链接,以节省资源。服务端不能主动给客户端相应(除非采取HTTP长连接技术)。

2、socker主要使用“套接字”链接,并没有规定连接后断开,所以客户端和服务端可以保持长连接,双方都可以主动发送数据。一般应用在股票开发、游戏等即时性很强且发送数量比较大的场合。

十、HTTP和HTTPS的区别

定义:HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

1、HTTPS是在HTTP上加入SSL层,HTTPS的安全基础是SSL。

2、HTTP是超文本传输协议,信息是明文传输,HTTPS则是SSL加密。

3、HTTP连接的端口是80,HTTPS是443。

4、HTTP连接时无状态的,HTTPS是由SSL+HTTP协议构成的可进行加密传输、身份认证的网络协议。

5、https协议需要到ca申请证书,一般免费证书很少,需要交费。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值