网络通信
- 链接建立和关闭 三次握手建立连接,四次握手关闭连接
TCP三次握手和四次挥手
为什么建立连接是三次握手,关闭连接确是四次挥手呢?
建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。
而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。
为什么客户端最后还要等待2MSL?
MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。
第一,保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。
第二,防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文。
TCP、UDP协议的区别
http与https有啥区别?说下https解决了什么问题,怎么解决的?
HTTPS和HTTP的区别:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
HTTPS解决的问题:
1、信任主机的问题。
2、通讯过程中的数据的泄密和被窜改。
说下https的握手过程
1.客户端提交https请求
2.服务器响应客户,并把服务器公钥发给客户端
3.客户端验证公钥的有效性
4.有效后,客户端会生成一个会话密钥(一个随机数)
5.用服务器公钥加密这个会话密钥后,发送给服务器
6.服务器收到公钥加密的密钥后,用私钥解密,获取会话密钥
7.客户端与服务器利用会话密钥对传输数据进行对称加密通信
在浏览器中输入url地址->>显示主页的过程
DNS解析>TCP连接>HTTP请求>服务器处理请求并返回HTTP报文
浏览器解析渲染页面
TCP怎么保证有序传输的,讲下TCP的快速重传和拥塞机制
确认和重传机制:接收方收到报文就会确认,发送方发送一段时间后没收到确认就重传
数据校验:保证数据没有被篡改
数据的合理分片和排序:数据在发送时带了序号,可以在接收方排序.接收方会通过缓存接受数据,有些序号大的也会放入缓存,待序号小的过来排好序后再出来.
流量控制:接收方来不及处理时,会提示发送方降低发送速率,防止包丢失
拥塞控制:当网络拥塞时,减少数据的发送