一、网络协议层次
在这里插入图片描述

网络七层协议为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
二、TCP的三次握手和四次挥手
在这里插入图片描述
在这里插入图片描述

1、为什么要4次挥手?
确保数据能够完整传输。
当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。
但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后,
再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。
2、UDP协议:
是无连接的,不可靠的传输协议。采用UDP进行通信时不用建立连接,可以直接向一个IP地址发送数据,但是不能保证对方是否能收到。(就像发生短信,只需要知道对方手机号码就行,至于对方是否接收成功不管)

五、Socket
Socket是传输层的协议,在TCP/IP协议基础上的封装,传输的数据为字节级。一般用于端对端的长链接,除非一端主动断链,一般用于需要保持网络畅通的应用。
优点

  1. 传输数据为字节级,数据量小,传输数据可自定义,可以加密,数据安全性高
  2. 传输数据时间短,性能高,可用作实时的交互
    缺点:
  3. 需对传输的数据进行解析,转化成应用级的数据,增加了开发量

六、http 超文本传送协议,
http位于应用层,http服务器响应完后就会关闭连接.主要有post请求和get请求,post请求常见的有json格式,报文相对socket协议比较大,而且安全性低,可以用fiddler和f12可以抓包查看内容。
在HTTP1.0默认“请求-应答”模式,但实际上是有Keep-Alive模式的,当使用Keep-Alive模式(又称持久连接、连接重用)时,避免重新建立连接。
http 1.0中默认是关闭的,需要在http头加入"Connection: Keep-Alive",才能启用Keep-Alive;
http 1.1中默认启用Keep-Alive,如果加入"Connection: close ",才关闭。
使用了Keep-Alive也不会一直保持长连接。
有两种限制:timeout=20,表示这个TCP通道可以保持20秒。max=100,表示这个长连接最多接收100次请求就断开。
如果在客户端,没有定义超时时间。服务端也会发起四次挥手的。TCP还有心跳检查机制来当前连接是否活着。

七、Webservice
是应用层的协议,基于http以xml格式作为数据载体,soap协议传输数据 ,由于要进行xml解析,速度可能会比http慢。XML主要的优点在于它是跨平台的。

soap的调用过程:
Web service一般就是用SOAP协议通过HTTP来调用它,可以通过WSDL文档,生成一个SOAP请求消息。
生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。
Web服务器再把这些请求转发给Web service请求处理器,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。
Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。

更多推荐