春招面试复习(一)TCP/IP

SYN:建立连接
ACK:响应
seq:例如A->B, 则发送端(A)发送包的第一个位置
ack:例如B->A ,则B希望下一次收到的包的位置。
在这里插入图片描述

一、连接建立阶段

1、为什么TCP建立是三次握手?

TCP是可靠的传输控制协议,三次握手能保证数据可靠传输又能提高传输效率。
如果两次握手的话:
1) 如果server给client发送的ACK报文因为网络原因,报文被丢弃,此时server认为已经建立好连接,但是client没有收到确认报文,认为没有建立好连接。client会重发SYN报文,此时server已经处于就绪状态,认为已经建立好连接。

2)如果client发给server的SYN报文因为网络原因,延迟发送。那么client就会再发送一个SYN报文。那么链路中有两个报文,会导致server开启服务两次(浪费一次)。

2、连接建立的面试题

2.1 发送序号和确认序号问题

例: TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为1000,确认序列号为2000,请问第二次握手报文的发送序列号和确认序列号分别为?
确认号:要求接受方下一次发送的序号

答:看答案时请参考上面TCP连接建立的图。
客户端:发送X
服务端:发送Y, 确认X+1
客户端:发送X+1(1000),确认Y+1(2000)
可以反推第二次为1999,确认1000

二、传输阶段
1、滑动窗口保证了可靠性和流量控制

窗口是:接收端(B)发送一条指令,上面携带窗口信息,要求发送端(A)下一次发送的数据大小在窗口之内。

在这里插入图片描述
接受方: 接收窗口(B)只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口(B)已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。

发送方:(看下图)如果收到不是按序到达的确认(收到29,30…33, 37 ,38 , 但是33,34,35,36未收到确认), 那么先等待t,如果t时间后就以34最后一位作为窗口起点,重复34.35…37,38,39的发送。

在这里插入图片描述
在这里插入图片描述

2、拥塞控制
  • 慢开始: 初始化cwnd窗口 = 1 ,每次将 cwnd 加倍,因此之后发送方能够发送的报文段数量为:2、4、8 …
  • 拥塞避免:cwnd 每次 +1

*1. cwnd < ssthresh, 继续使用慢开始算法;
*2. cwnd > ssthresh,停止使用慢开始算法,改用拥塞避免算法;
*3. cwnd = ssthresh,既可以使用慢开始算法,也可以使用拥塞避免算法;

当遇到超时,就进行慢开始
当遇到3-ack,进行快恢复,之后进入拥塞避免。

  • 快恢复: cwnd = ssthresh = ssthresh / 2 。 之后每次cwnd加1。

三、TCP断开阶段

FIN: 关闭连接
在这里插入图片描述
简化掉seq和ack,剩下的就是两次FIN(请求关闭)和ACK(确认关闭)

在这里插入图片描述

等待2MSL的原因:

MSL: 最大报文段生存时间,LWIP为1分钟,windows为2分钟

1) 报文段有生存时间,当连接关闭时,有可能收到迟到的报文段。这时,若立马就建立新的连接(同一端口),那么新的连接就会接收迟到的报文,误以为是发给自己的
2) 另一个原因是可靠的实现全双工连接的终止。当最后一个ACK丢失,Server就发送第二次FIN,那么Client就能完成最后一个ACK的补发。

HTTP部分

HTTP和HTTPS的区别

在这里插入图片描述

HTTPS在HTTP的基础上多了一层SSL或TLS层。
SSL(Security Sockets Layer):安全套接层,采用身份认证和数据加密来保证通信的安全和数据的完整。
在这里插入图片描述

HTTPS数据传输流程

  • 1)传输数据前,浏览器将支持的加密算法信息发送给服务器。例如本地支持非对称加密等信息。
  • 2)服务器选择一套浏览器支持的加密算法和哈希算法,以证书的形式回发浏览器,并且服务器本地保留公钥和私钥。证书包括:CA机构,有效期,公钥,证书所有者。
  • 3)由客户端的TSL验证证书合法性, 若证书受信,生成一个随机值(秘钥),然后结合证书中的公钥加密客户端本地的秘钥,然后发送服务器。
  • 4)服务器的公钥和私钥是成对的,因此使用私钥对加密过的客户端密钥进行解密,就得到了客户端本地的密钥,以后通信就使用这个随机值来进行加密。
  • 5)自此客户端和服务器都知道了一串随机值,那么通过这个随机值进行加密解密,就能进行交换数据了。

区别

  • 1)HTTPS需要到CA申请证书,HTTP不需要
  • 2)HTTPS密文传输,HTTP明文传输
  • 3)HTTPS默认443端口,HTTP默认80端口
  • 4)HTTPS在HTTP的基础上加了TSL,TSL是有状态的,它跟上一次连接的状态有关系。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值