HTTP请求报文:请求行(包括http协议版本,请求方法等),消息报头(连接情况,接收的数据类型,接收数据范围等),请求正文(post才有,存放请求的数据)
HTTP响应报文包括:状态行(http协议版本,状态代码),消息报头(连接情况,返回数据长度等),响应正文(响应的数据)
TCP是面向连接的协议,必须和对方经过三次握手建立可靠的连接,然后双方就可以正式发送数据。
UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送数据时只需要发送到网络上。在发送端;接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
HTTP:基于TCP连接的网络协议,短连接
Socket:对TCP/IP协议的封装,是一组调用接口,长连接
POST GET区别:
1.从请求的数据来说,post请求参数是放在request body里的,而GET请求参数放在URL里,请求的数据就相对比较限制。
2.在效率方面GET请求要快点
3.而在ios我们使用GET请求,只需要设置好缓存策略,系统的NSURLCache就会帮助我们对数据进行缓存(HTTP,HTTPS都可以)。
HTTPS
TLS是建立在SSL协议规范之上,两者差别极小,可以理解为SSL ,因此把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。
Https是Http的安全版本,是使用SSL / STL进行加密的Http协议。
Http是基于TCP协议的,在传输的每一个节点数据包都可能被篡改。而Https有自己独特的握手,建立连接,数据校验机制。一旦在数据传输过程中发生篡改,则校验失败,请求直接被抛弃。
HTTPS客户端与服务器交互过程:
1.服务器必须要有一套数字证书,证书其实就是一对公钥和私钥(相当于一把钥匙和一个锁头)
2、客户端第一次请求时,服务器会返回一个包含公钥的数字证书给客户端;
2、客户端在判断证书可信任后,产生一段随机数,这个随机数就作为通信的密钥,我们称之为对称密钥,用公钥加密这段随机数,然后发送到服务器
3、客户端服务器双方通过的对称密钥对传输的数据进行加密,保证了数据的私密性和完整性。