如果不等待的话,相当于服务端如果有信息还没发完的话,发过去找不到人了,客户端没了,数据不就乱了吗,但是为啥不是1msl而是2msl呢,第一个msl是为了确认没有信息发送,第二个msl是为了确认FIN报文可以正确到达到服务端。
第一步,发送一个https请求,并且保证服务端是有证书的,证书就是公钥。
第二步,服务端发送给客户端公钥,客户端检查公钥是否可用,然后生成随机数,使用公钥进行非对称加密
第三步,客户端发送这段密文给服务端,服务端使用私钥解密,然后将发送内容通过随机数进行对称加密,发送给客户端
第四步,客户端使用随机值进行解密。
为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤
如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认
因为需要确认已经可以释放连接了,并且需要确认已经没有消息继续发送过来,并且等待一下收到FIN
快速打开就是服务端拿到客户端的cookie之后经过验证,可以直接返回结果。省去了一个RTT的时间。
主要是通过滑动窗口进行控制。滑动窗口分为发送窗口和接收窗口。
发送窗口有四部分,已发送已确认,已发送未确认,未发送但可发送,未发送且不可发送
接收窗口主要有标记接收的位置和接收窗口的大小组成。
在控制流量的过程中,发送端发送过去100个字节,一般情况,就是直接接收端接收,然后接收位置右移100字节,代表已经接收。
但也有可能会无法接收这么多,比如人家发过来200个字节,我只能接收100个,那么有100就会留在缓冲队列,这个时候发送端就会知道自己太暴力了,就会调整这个发送的大小。
拥塞控制主要是基于网络原因很差去制定的解决方案。
主要涉及到的算法是慢启动,快恢复,拥塞避免三个算法。
刚开始启动程序的时候,我们不知道网络好不好,所以如果发包太快,要是网络不好,就直接炸了,所以就有了慢启动,也就是说,三次握手之后,我们确定了彼此的接收窗口大小,之后每发送一个ack,拥塞窗口(cwnd)+1,也就是说,cwnd在每次发送ack之后都是倍增的,来保证一定的安全,不会丢数据,但是也不会无限上升,于是就有了拥塞避免。
我们设定一个慢启动阈值,当到达阈值之后,每次经过一个RTT,cwnd只+1
当连续收到多次相同的ack之后,意识到丢包了,这个时候阈值会变成一半,cwnd会立刻变成阈值且线性增加。
实体就不说了,起始行是请求方式,url,http版本号。
头部是
深拷贝就是纯粹的从堆内存开辟一个新的内存空间存储我们要拷贝的内容,且改变新的不会影响旧的,相当于cv操作。
时间片,先来先服务,短作业,多级队列,优先权,高响应比
多出物理内存的地方称为辅存,而辅存里一般就是程序运行起来但是却不需要使用的地方,会放在里面,也就近似相当于虚拟内存。
条件变量是一种复杂的线程同步的方法,可以让线程睡眠,并且在特定情况下又可以将线程唤醒。
管程实际上针对信号量在临界区的方面有了一定的改进,简单来说,管程内的线程可以先暂时放弃临界区的资源,让其他线程进入,经过某些特定事件的触发之后,重新notify,说白了,管程本质上还是控制多线程同步操作的这么一个东西,只不过新加了刚才说的那个临时放弃+唤醒功能。
后续不断补充…
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务