美文网首页
HTTP 相关知识

HTTP 相关知识

作者: osnail | 来源:发表于2019-07-14 17:04 被阅读0次

一、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、实体内容:服务器返回给客户端的具体数据,比如文件数据。

image

六、TCP和UDP的区别

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

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

image

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

更好地回答:

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

十、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申请证书,一般免费证书很少,需要交费。

链接:https://www.jianshu.com/p/b0f72d6701ce

相关文章

  • HTTP相关知识

    1.OSI 七层模型指什么? 七层模型,亦称OSI(Open System Interconnection)参考模...

  • HTTP相关知识

    最近由于看http的请求报文,在报文的请求行里面,有协议版本一说,所以就大致了解了一下http的协议版本,下面就记...

  • http相关知识

    读书的时候学习的基础知识很多时候都记得不太清了,昨天刚好翻到相关的帖子,重新温故了一下http相关知识,大概的总结...

  • http相关知识

    1.get请求和post请求有什么区别? 表单通过一组可以填写内容,或者修改状态的控件使用户可以输入数据。也就是我...

  • HTTP相关知识

    Cookie 调用Cookie时,由于可校验Cookie的有效期,以及发送方的域,路径,协议等信息,所以正规发布的...

  • http相关知识

    http相关知识 1.1绝对路径-相对路径 相对地址的定义: 被链接文件相对于当前页面的地址。 只包含本地路径的网...

  • HTTP相关知识

    Hypertext transfer protocol(简称:HTTP)超文本传输协议。HTTP是WWW(worl...

  • HTTP相关知识

    导读 移动开发知识体系总章(Java基础、Android、Flutter) 什么是HTTP协议? HTTP请求所经...

  • HTTP 相关知识

    一、HTTP请求方式 HTTP超文本传输协议:是短连接,是客户端主动发送请求,服务器作出响应,响应之后服务器断开。...

  • HTTP相关知识

    HTTP 状态码知道哪些? 200(ok):请求成功; 301(Moved Permanently):请求的资源已...

网友评论

      本文标题:HTTP 相关知识

      本文链接:https://www.haomeiwen.com/subject/xyhikctx.html