笔面考点总结(一)计算机网络篇
前言
最近春招找暑期实习,做了些往年的笔试,发现知识点都生疏了,所以开了这个系列用于记录,同时希望能帮到同样处境的同学。
计算机网络篇
TCP 标志位
- SYN (synchronous) 创建连接
- ACK (acknowledge) 确认接受
- FIN (finish) 结束连接
- PSH (push) 传送
- RST (reset) 重置
- URG (urgent) 紧急
TCP 三次握手
- 第一次握手:A 发送
SYN=1
和SEQ=X
, A 进入SYN_SEND状态。 - 第二次握手:B 发送
SYN=1
、ACK=X+1
和SEQ=Y
, B 进入SYN_RECV状态。 - 第三次握手:A 发送
ACK=Y+1
和SEQ=Z
,A 和 B 都进入ESTABISHED状态。
注:A 为主动建立连接一方,B 为被动建立连接一方。
TCP 四次挥手
- 第一次挥手:A 发送
FIN=N
, A 进入FIN_WAIT_1状态。 - 第二次挥手:B 发送
ACK=N+1
,B 进入CLOSE_WAIT状态, A 进入FIN_WAIT_2状态。 - 第三次挥手:B 准备好关闭时,发送
FIN=M
并进入LAST_ACK状态。 - 第四次挥手:A 发送
ACK=M+1
,A 进入TIME_WAIT
状态(2MSL 后关闭连接),B 进入CLOSED状态。
注:A 为主动关闭连接一方,B 为被动关闭连接一方。 MSL 为 Maximum Segment Lifetime
的缩写,中文翻译为“最大报文生存时间” 。
TCP 拥塞控制
拥塞是一种持续过载的网络状态,此时用户对网络资源需求超过了固有的容量,而拥塞控制是为了防止过多的数据注入网络。
概念
- cwnd(congestion window) 拥塞窗口,由发送数据方维持,其大小取决于网络拥塞程度。
- ssthresh(slow start threshold) 慢开始阈值,拥塞窗口大于该值时,由慢开始算法改用拥塞避免算法。
慢开始与拥塞避免
慢开始算法的思想是,一开始发送小量数据,测探网络的拥塞程度,接着逐渐增加拥塞窗口大小,且增长速度是按倍增长。
当拥塞窗口超过慢开始阈值时,改用拥塞避免算法,拥塞避免算法使拥塞窗口缓慢增长,即每次拥塞窗口只增加一。
无论是在慢开始还是拥塞避免阶段,只要网络发生拥塞即没有收到发送方确认,将慢开始阈值设置为拥塞时发送窗口的一半,再将拥塞窗口置为一,并重新进行慢开始算法。
网络模型层次
网络七层模型
- 物理层(IEEE 802.1A、IEEE 802.2 到 IEEE 802.11)
- 数据链路层(Ethernet、PPP、Arpanet、PDN、SLIP、FDDI)
- 网络层(IP、ICMP、ARP、RARP、AKP、UUCP)
- 传输层(TCP、UDP)
- 会话层,不同机器上用户间建立及管理会话(SSL、TLS、RPC)。
- 表示层,处理信息的语法语义,例如加解密、解压缩、转换翻译等。(Telnet)
- 应用层(HTTP、FTP、SMTP、NFS、TFTP)
网络四层模型
- 数据链路层,相当于七层模型的物理层和数据链路层。
- 网络层
- 传输层
- 应用层,相当于七层模型的会话层、表示层和应用层。
TCP 与 UDP 区别
- TCP 是面向连接,发送数据前需要进行连接,而 UDP 是无连接的。
- TCP 是可靠的,发送的数据能做到无差错、不丢失、不重复且按序到达,而 UDP 尽最大努力交付,即不保证可靠交付。
- TCP 连接只支持一对一,而 UDP 连接支持多对多。
- TCP 对系统资源要求较多,而 UDP 对系统资源要求较少。
参考文章