ARTS-Week-04

Algorithm

所有单词连接子串,LeetCode Substring with Concatenation of All Words

Review

Let’s code a TCP/IP stack, 3: TCP Basics & Handshake
TCP可靠性机制
三个问题:
1、发送端等待接收端确认时间是多长?
2、如果接收端处理数据速度比发送端发送数据慢怎么办?
3、网络处理数据速度比发送端发送数据慢怎么办?

接收方的确认数据可能在网络传输中丢失,使发送方处于棘手的情况该怎么办?使用滑动窗口机制,保证了数据传输不会丢失,且解决了流控制问题,当接收端的处理数据速度比不上发送端的时候,可以减小滑动窗口大小,限制发送方的数据传输。

拥塞控制,防止双端之间的网络拥塞,两种版本:显示版本(协议有一个字段,专门通知发送方网络拥塞情况),隐式版本(发送方尝试猜测网络何时拥塞,并限制输出)

TCP基本特性
1、面向连接,建立连接,保存连接状态;
2、面向流控制,标志序列号,分组,防止乱序,丢失;
3、检查消息的完整性,校验和算法,丢弃出错的,等待超时重传;
4、全双工,意味着需要保存两个方向上的数据序列号(SEQ, ACK)

TCP包头格式
ARTS-Week-04_第1张图片
这里只介绍一下8个标记位:
C:通知发送端减小发送速率
E:通知发送方接收一个拥塞通知
U:显示该段包含紧急数据
A:ACK标志
P:显示接收方应该尽快处理数据
R:重新连接
S:请求连接
F:请求关闭连接

TCP握手
ARTS-Week-04_第2张图片
三个问题:1、初始化SEQ如何选择?2、如果两端同时请求连接该如何处理?3、如果建立连接过程中,包丢失或延迟?
1、SEQ选择尽可能唯一且不容易被猜测,有复杂的算法进行产生;2、两端同时SYN,双方都要ACK,然后双方SYN-ACK;3、超时放弃建立连接,并尝试重新建立,指数退避,最大尝试次数之后或者最长时间之后,放弃建立连接;

TCP选项
MSS:表示TCP每个段的最大值,IPv4下通常1460
SACK:通知发送端哪些报文段丢失,哪些报文段重传了,哪些报文段已经提前收到等信息,重传更直接
Window Scale:增大传输窗口大小
Timestamps:允许放置一个时间戳到Segment中,可以用来计算RTT

Tip & Share

本周项目里使用了pymongo,这里记录一下常用api pymongo小结

你可能感兴趣的:(ARTS)