Fork me on GitHub

那些不能遗忘的知识点回顾——计算机网络系列(笔试面试高频题)

有那么一些零碎的小知识点,偶尔很迷惑,偶尔被忽略,偶然却发现它们很重要,也是各大笔试和面试高频出现考点。这段时间正好在温习这些,就整理在这里,一起学习一起提高!后面还会继续补充。

——前言

1.TCP的三次握手四次挥手

  第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给ServerClient进入SYN_SENT状态,等待Server确认。

  第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYNACK都置为1ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

  第三次握手:Client收到确认后,检查ack是否为J+1ACK是否为1,如果正确则将标志位ACK置为1ack=K+1,并将该数据包发送给ServerServer检查ack是否为K+1ACK是否为1,如果正确则连接建立成功,ClientServer进入ESTABLISHED状态,完成三次握手,随后ClientServer之间可以开始传输数据了。

  第一次挥手:Client发送一个FIN,用来关闭ClientServer的数据传送,Client进入FIN_WAIT_1状态。
  第二次挥手:Server收到FIN后,发送一个ACKClient,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
  第三次挥手:Server发送一个FIN,用来关闭ServerClient的数据传送,Server进入LAST_ACK状态。
  第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACKServer,确认序号为收到序号+1Server进入CLOSED状态,完成四次挥手。

 

实际中还会出现同时发起主动关闭的情况,即同时挥手,示意图如下:

 

  TIME_WAIT状态后需等待2MSL(最大报文段生存时间)才能返回到CLOSE状态,因为我们必须假想网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

 

2.TCP的滑动窗口,流量控制和拥塞控制,快重传和快恢复,超时重传

  TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。

  滑动窗口协议:1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”;2. “滑动”则是指这段“允许发送的范围”是可以随着发送的过程而变化的,方式就是按顺序“滑动”。

  流量控制,主要是接收方传递信息给发送方,使其不要发送数据太快,是一种端到端的控制。主要的方式就是返回的ACK中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。

  拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。常用的方法就是:(1)慢开始、拥塞控制(2)快重传、快恢复。

  数据在传输时不仅一个窗口协议,还有一个拥塞窗口来控制数据的流量,使得数据不会一下子都跑到网路中引起“拥塞”。拥塞窗口最初使用指数增长的速度来增加自身的窗口,直到发生超时重传,再利用拥塞避免算法和慢启动门限进行一次微调。

  拥塞避免算法就是:每经过一个往返时间RTT就把发送方的拥塞窗口+1,即让拥塞窗口缓慢地增大,按照线性规律增长;当出现网络拥塞,比如丢包时,将慢开始门限设为原先的一半,然后将cwnd设为1,执行慢启动算法(较低的起点,指数级增长);

  慢启动门限就是说,当拥塞窗口超过门限时,就使用拥塞避免算法,而在门限以内就采用慢启动算法。通常拥塞窗口记做cwnd,慢启动门限记做ssthresh

  慢开始和拥塞控制算法常常作为一个整体使用,而快重传和快恢复则是为了减少因为拥塞导致的数据包丢失带来的重传时间,从而避免传递无用的数据到网络。

  快重传的机制是:

  1.接收方如果发现一个包丢失,则对后续的包继续发送针对该包的重传请求;

  2. 一旦发送方接收到三个一样的确认,就知道该包之后出现了错误,立刻重传该包;

  3. 此时发送方开始执行“快恢复”算法:

    *1. 慢开始门限减半;

    *2. cwnd设为慢开始门限减半后的数值;

    *3. 执行拥塞避免算法(高起点,线性增长);

  超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。

 

3.TCP/IP结构及协议

  网络接口层:Wi-FiATM GPRSEVDOHSPAPPP 帧中继

  网际层:IPICMPPing的时候用到)、IGMP ARPRARP(这两个有争议,一般说TCP/IP中是网络层协议,在OSI模型中划分为数据链路层协议)

  传输层:TCPUDPTLS

  应用层:FTPTELNETDNSSMTP(邮件传输)、DHCPHTTPHTTPSPOP3SSH等。

  ARP(Address Resolution Protocol,地址解析协议)ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

 

4.IP网络地址分布

  IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。 

  1AIP地址:一个AIP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围从1.0.0.1 126.255.255.254。可用的A类网络有126个,每个网络能容纳1亿多个主机。 

  2BIP地址:一个BIP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.1191.255.255.254。可用的B类网络有16382个,每个网络能容纳6万多个主机 。 

  3CIP地址:一个CIP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.1223.255.255.254C类网络可达209万余个,每个网络能容纳254个主机。 

  4D类地址用于多点广播:DIP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。 

  5EIP地址:以“llll0”开始,为将来使用保留。 

  在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下: 

  A类地址中的保留地址:10.0.0.010.255.255.255 

  B类地址中的保留地址:172.16.0.0172.31.255.255

  C类地址中的保留地址:192.168.0.0192.168.255.255

  另外IPv6地址长度为128位。

 

5.子网划分-主机数

  一个网络号192.168.5.0/24,子网掩码是255.255.255.248,可以构建的最大子网数和每个子网最多可容纳多少台机器?

  题目给出的IP地址空间基于CIDR划分,前24位是网络号,后8位是主机号。子网掩码最后是 2481111 1000)。相当于主机号又被分成两部分5位是子网号3位是主机号,所以子网个数是 2^5, 主机个数为 2^3. 另外,主机号全 代表本地主机全 表示广播共 个有效的.

 

6.网络设备作用及所属层

  1)物理层

  转发器(repeater):有源转发器将信号解调后再生放大,再调制后传输。

  集线器(hub):实现星形拓扑的以太网,简单转发比特。 

  网线、中继器、网关。

  (2)数据链路层

  适配器(网卡):又称网络接口卡,用于计算机和局域网的通信。

  网桥(bridge):用于在数据链路层扩展以太网,根据MAC帧的目的地址对收到的帧进行转发和过滤。含有转发表。它隔离了冲突域,但不隔离广播域。

   第二层交换机(layer2 switch):多接口的网桥,又称以太网交换机或第二层交换机。可实现虚拟局域网VLAN(Virtual LAN) 

  (3)网络层

  第三层交换机(layer3 switch):能进行路由的交换机,具有一部分路由器功能。

  路由器(router):连接因特网中各局域网、广域网的设备。拥有路由选择处理机、交换结构、一组输入端口和一组输出端口。

 

7.主机字节序与网络字节序

  主机字节序一般分为大端和小端两种,在X86平台上一般采用小端模式。

  “小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。

  1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。 

  2.大端法(Big-Endian)就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。

 

  网络字节序:网络上的数据流是字节流,对于一个多字节数值,在进行网络传输的时候,收到的第一个字节被当作高位看待,这就要求发送端发送的第一个字节应当是高位。而在发送端发送数据时,发送的第一个字节是该数字在内存中起始地址对应的字节。可见多字节数值在发送前,在内存中数值应该以大端法存放。网络字节序说是大端字节序。

 

8.TCP和UDP的区别?

  TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。

  TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。

  TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

  附:TCP对应的协议和UDP对应的协议

  TCP对应的协议:

  (1) FTP:定义了文件传输协议,使用21端口。

  (2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。

  (3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。

  (4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。

  (5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

  UDP对应的协议:

  (1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

  (2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

  (3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

 

参考资料:

计算机网络之面试常考

《计算机网络(第五版)》谢希仁

 


 

计算机网络系列的暂时整理到这里吧,如果读者发现还有哪些这方面的经典常考知识点也请指出,待续~

转载请注明出处,谢谢!

posted @ 2015-09-22 19:13  闻波  阅读(4730)  评论(7编辑  收藏  举报
友情链接: