计算机网络面试常考知识点整理
2016-06-09 15:52
585 查看
有那么一些零碎的小知识点,偶尔很迷惑,偶尔被忽略,偶然却发现它们很重要,也是各大笔试和面试高频出现考点。这段时间正好在温习这些,就整理在这里,一起学习一起提高!后面还会继续补充。
——前言
第一次握手: Client 将标志位 SYN 置为 1 ,随机产生一个值 seq=J ,并将该数据包发送给 Server , Client 进入 SYN_SENT 状态,等待 Server 确认。
第二次握手: Server 收到数据包后由标志位 SYN=1 知道 Client 请求建立连接,Server 将标志位 SYN 和 ACK 都置为 1 , ack=J+1 ,随机产生一个值 seq=K ,并将该数据包发送给 Client 以确认连接请求, Server 进入 SYN_RCVD 状态。
第三次握手: Client 收到确认后,检查 ack 是否为 J+1 , ACK 是否为 1 ,如果正确则将标志位 ACK 置为 1 , ack=K+1 ,并将该数据包发送给 Server , Server 检查ack 是否为 K+1 , ACK 是否为 1 ,如果正确则连接建立成功, Client 和 Server 进入ESTABLISHED 状态,完成三次握手,随后 Client 与 Server 之间可以开始传输数据了。
![](http://img2.tuicool.com/RBraQ3b.png!web)
第一次挥手: Client 发送一个 FIN ,用来关闭 Client 到 Server 的数据传送, Client进入 FIN_WAIT_1 状态。
第二次挥手: Server 收到 FIN 后,发送一个 ACK 给 Client ,确认序号为收到序号+1 (与 SYN 相同,一个 FIN 占用一个序号), Server 进入 CLOSE_WAIT 状态。
第三次挥手: Server 发送一个 FIN ,用来关闭 Server 到 Client 的数据传送,Server 进入 LAST_ACK 状态。
第四次挥手: Client 收到 FIN 后, Client 进入 TIME_WAIT 状态,接着发送一个ACK 给 Server ,确认序号为收到序号 +1 , Server 进入 CLOSED 状态,完成四次挥手。
![](http://img0.tuicool.com/FFrENrB.png!web)
实际中还会出现同时发起主动关闭的情况,即同时挥手,示意图如下:
![](http://img0.tuicool.com/r2QjU3Z.png!web)
TIME_WAIT 状态后需等待 2MSL( 最大报文段生存时间 ) 才能返回到 CLOSE 状态,因为我们必须假想网络是不可靠的,有可以最后一个 ACK 丢失。所以TIME_WAIT 状态就是用来重发可能丢失的 ACK 报文。
TCP 协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。
滑动窗口协议: 1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”; 2. “滑动”则是指这段“允许发送的范围”是可以随着发送的过程而变化的,方式就是按顺序“滑动”。
流量控制,主要是接收方传递信息给发送方,使其不要发送数据太快,是一种端到端的控制。主要的方式就是返回的 ACK 中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。
拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。常用的方法就是:( 1 )慢开始、拥塞控制( 2 )快重传、快恢复。
数据在传输时不仅一个窗口协议,还有一个拥塞窗口来控制数据的流量,使得数据不会一下子都跑到网路中引起“拥塞”。拥塞窗口最初使用指数增长的速度来增加自身的窗口,直到发生超时重传,再利用拥塞避免算法和慢启动门限进行一次微调。
拥塞避免算法就是:每经过一个往返时间 RTT 就把发送方的拥塞窗口 +1 ,即让拥塞窗口缓慢地增大,按照线性规律增长;当出现网络拥塞,比如丢包时,将慢开始门限设为原先的一半,然后将 cwnd 设为 1 ,执行慢启动算法(较低的起点,指数级增长);
慢启动门限就是说,当拥塞窗口超过门限时,就使用拥塞避免算法,而在门限以内就采用慢启动算法。通常拥塞窗口记做 cwnd ,慢启动门限记做 ssthresh 。
慢开始和拥塞控制算法常常作为一个整体使用,而快重传和快恢复则是为了减少因为拥塞导致的数据包丢失带来的重传时间,从而避免传递无用的数据到网络。
快重传的机制是:
1. 接收方如果发现一个包丢失,则对后续的包继续发送针对该包的重传请求;
2. 一旦发送方接收到三个一样的确认,就知道该包之后出现了错误,立刻重传该包;
3. 此时发送方开始执行“快恢复”算法:
*1. 慢开始门限减半;
*2. cwnd 设为慢开始门限减半后的数值;
*3. 执行拥塞避免算法(高起点,线性增长);
超时重传是 TCP 协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的 ACK 报文,那么就重新发送数据,直到发送成功为止。
网络接口层: Wi-Fi 、 ATM 、 GPRS 、 EVDO 、 HSPA 、 PPP 、 帧中继 等
网际层: IP 、 ICMP ( Ping 的时候用到)、 IGMP 、 ARP 、 RARP (这两个有争议,一般说 TCP/IP 中是网络层协议,在 OSI 模型中划分为数据链路层协议)
传输层: TCP 、 UDP 、 TLS 等
应用层: FTP 、 TELNET 、 DNS 、 SMTP (邮件传输)、 DHCP 、 HTTP 、HTTPS 、 POP3 、 SSH 等。
ARP(Address Resolution Protocol ,地址解析协议 ) 。 ARP 协议的基本功能就是通过目标设备的 IP 地址,查询目标设备的 MAC 地址,以保证通信的顺利进行。
IP 地址根据网络 ID 的不同分为 5 种类型, A 类地址、 B 类地址、 C 类地址、 D 类地址和 E 类地址。
1 . A 类 IP 地址:一个 A 类 IP 地址由 1 字节的网络地址和 3 字节主机地址组成,网络地址的最高位必须是“ 0 ”,地址范围从 1.0.0.0 到 126.0.0.0 。可用的 A 类网络有126 个,每个网络能容纳 1 亿多个主机。
2 . B 类 IP 地址:一个 B 类 IP 地址由 2 个字节的网络地址和 2 个字节的主机地址组成,网络地址的最高位必须是“ 10 ”,地址范围从 128.0.0.0 到 191.255.255.255 。可用的 B 类网络有 16382 个,每个网络能容纳 6 万多个主机 。
3 . C 类 IP 地址:一个 C 类 IP 地址由 3 字节的网络地址和 1 字节的主机地址组成,网络地址的最高位必须是“ 110 ”。范围从 192.0.0.0 到 223.255.255.255 。 C 类网络可达 209 万余个,每个网络能容纳 254 个主机。
4 . D 类地址用于多点广播: D 类 IP 地址第一个字节以“ lll0 ”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播( Multicast )中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
5 . E 类 IP 地址:以“ llll0 ”开始,为将来使用保留。
在 IP 地址 3 种主要类型里,各保留了 3 个区域作为私有地址,其地址范围如下:
A 类地址: 10.0.0.0 ~ 10.255.255.255
B 类地址: 172.16.0.0 ~ 172.31.255.255
C 类地址: 192.168.0.0 ~ 192.168.255.255
另外 IPv6 地址长度为 128 位。
一个网络号 192.168.5.0/24 ,子网掩码是 255.255.255.248 ,可以构建的最大子网数和每个子网最多可容纳多少台机器?
题目给出的 IP 地址空间基于 CIDR 划分,前 24 位是网络号,后 8 位是主机号。子网掩码最后是 248 ( 1111 1000 )。相当于主机号又被分成两部分 , 前 5 位是子网号, 后 3 位是主机号,所以 , 子网个数是 2^5, 主机个数为 2^3. 另外,主机号全 0 代表本地主机 , 全 1 表示广播 . 共 6 个有效的 .
( 1 )物理层
转发器 (repeater) :有源转发器将信号解调后再生放大,再调制后传输。
集线器 (hub) :实现星形拓扑的以太网,简单转发比特。
网线、中继器、网关。
( 2 )数据链路层
适配器(网卡):又称网络接口卡,用于计算机和局域网的通信。
网桥 (bridge) :用于在数据链路层扩展以太网,根据 MAC 帧的目的地址对收到的帧进行转发和过滤。含有转发表。它隔离了冲突域,但不隔离广播域。
第二层交换机 (layer2 switch) :多接口的网桥,又称以太网交换机或第二层交换机。可实现虚拟局域网 VLAN(Virtual LAN) 。
( 3 )网络层
第三层交换机 (layer3 switch) :能进行路由的交换机,具有一部分 路由器 功能。
路由器 (router) :连接因特网中各局域网、广域网的设备。拥有路由选择处理机、交换结构、一组输入端口和一组输出端口。
主机字节序一般分为大端和小端两种,在 X86 平台上一般采用小端模式。
“小端”和“大端”表示多字节值的哪一端 ( 小端或大端 ) 存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。
1. 小端法 (Little-Endian) 就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。
2. 大端法 (Big-Endian) 就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。
![](http://img2.tuicool.com/Rj2qEb.png!web)
网络字节序:网络上的数据流是字节流,对于一个多字节数值,在进行网络传输的时候,收到的第一个字节被当作高位看待,这就要求发送端发送的第一个字节应当是高位。而在发送端发送数据时,发送的第一个字节是该数字在内存中起始地址对应的字节。可见多字节数值在发送前,在内存中数值应该以大端法存放。网络字节序说是大端字节序。
TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
附:TCP对应的协议和UDP对应的协议
(1) FTP:定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
参考资料:
计算机网络之面试常考
《计算机网络(第五版)》谢希仁
——————————————————————————我是分割线————————————————————————
计算机网络系列的暂时整理到这里吧,如果读者发现还有哪些这方面的经典常考知识点也请指出,待续~
转载请注明出处,谢谢!
——前言
1.TCP 的三次握手四次挥手
第一次握手: Client 将标志位 SYN 置为 1 ,随机产生一个值 seq=J ,并将该数据包发送给 Server , Client 进入 SYN_SENT 状态,等待 Server 确认。第二次握手: Server 收到数据包后由标志位 SYN=1 知道 Client 请求建立连接,Server 将标志位 SYN 和 ACK 都置为 1 , ack=J+1 ,随机产生一个值 seq=K ,并将该数据包发送给 Client 以确认连接请求, Server 进入 SYN_RCVD 状态。
第三次握手: Client 收到确认后,检查 ack 是否为 J+1 , ACK 是否为 1 ,如果正确则将标志位 ACK 置为 1 , ack=K+1 ,并将该数据包发送给 Server , Server 检查ack 是否为 K+1 , ACK 是否为 1 ,如果正确则连接建立成功, Client 和 Server 进入ESTABLISHED 状态,完成三次握手,随后 Client 与 Server 之间可以开始传输数据了。
![](http://img2.tuicool.com/RBraQ3b.png!web)
第一次挥手: Client 发送一个 FIN ,用来关闭 Client 到 Server 的数据传送, Client进入 FIN_WAIT_1 状态。
第二次挥手: Server 收到 FIN 后,发送一个 ACK 给 Client ,确认序号为收到序号+1 (与 SYN 相同,一个 FIN 占用一个序号), Server 进入 CLOSE_WAIT 状态。
第三次挥手: Server 发送一个 FIN ,用来关闭 Server 到 Client 的数据传送,Server 进入 LAST_ACK 状态。
第四次挥手: Client 收到 FIN 后, Client 进入 TIME_WAIT 状态,接着发送一个ACK 给 Server ,确认序号为收到序号 +1 , Server 进入 CLOSED 状态,完成四次挥手。
![](http://img0.tuicool.com/FFrENrB.png!web)
实际中还会出现同时发起主动关闭的情况,即同时挥手,示意图如下:
![](http://img0.tuicool.com/r2QjU3Z.png!web)
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-Fi 、 ATM 、 GPRS 、 EVDO 、 HSPA 、 PPP 、 帧中继 等网际层: IP 、 ICMP ( Ping 的时候用到)、 IGMP 、 ARP 、 RARP (这两个有争议,一般说 TCP/IP 中是网络层协议,在 OSI 模型中划分为数据链路层协议)
传输层: TCP 、 UDP 、 TLS 等
应用层: FTP 、 TELNET 、 DNS 、 SMTP (邮件传输)、 DHCP 、 HTTP 、HTTPS 、 POP3 、 SSH 等。
ARP(Address Resolution Protocol ,地址解析协议 ) 。 ARP 协议的基本功能就是通过目标设备的 IP 地址,查询目标设备的 MAC 地址,以保证通信的顺利进行。
4.IP 网络地址分布
IP 地址根据网络 ID 的不同分为 5 种类型, A 类地址、 B 类地址、 C 类地址、 D 类地址和 E 类地址。 1 . A 类 IP 地址:一个 A 类 IP 地址由 1 字节的网络地址和 3 字节主机地址组成,网络地址的最高位必须是“ 0 ”,地址范围从 1.0.0.0 到 126.0.0.0 。可用的 A 类网络有126 个,每个网络能容纳 1 亿多个主机。
2 . B 类 IP 地址:一个 B 类 IP 地址由 2 个字节的网络地址和 2 个字节的主机地址组成,网络地址的最高位必须是“ 10 ”,地址范围从 128.0.0.0 到 191.255.255.255 。可用的 B 类网络有 16382 个,每个网络能容纳 6 万多个主机 。
3 . C 类 IP 地址:一个 C 类 IP 地址由 3 字节的网络地址和 1 字节的主机地址组成,网络地址的最高位必须是“ 110 ”。范围从 192.0.0.0 到 223.255.255.255 。 C 类网络可达 209 万余个,每个网络能容纳 254 个主机。
4 . D 类地址用于多点广播: D 类 IP 地址第一个字节以“ lll0 ”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播( Multicast )中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
5 . E 类 IP 地址:以“ llll0 ”开始,为将来使用保留。
在 IP 地址 3 种主要类型里,各保留了 3 个区域作为私有地址,其地址范围如下:
A 类地址: 10.0.0.0 ~ 10.255.255.255
B 类地址: 172.16.0.0 ~ 172.31.255.255
C 类地址: 192.168.0.0 ~ 192.168.255.255
另外 IPv6 地址长度为 128 位。
5. 子网划分 - 主机数
一个网络号 192.168.5.0/24 ,子网掩码是 255.255.255.248 ,可以构建的最大子网数和每个子网最多可容纳多少台机器?题目给出的 IP 地址空间基于 CIDR 划分,前 24 位是网络号,后 8 位是主机号。子网掩码最后是 248 ( 1111 1000 )。相当于主机号又被分成两部分 , 前 5 位是子网号, 后 3 位是主机号,所以 , 子网个数是 2^5, 主机个数为 2^3. 另外,主机号全 0 代表本地主机 , 全 1 表示广播 . 共 6 个有效的 .
6. 网络设备作用及所属层
( 1 )物理层转发器 (repeater) :有源转发器将信号解调后再生放大,再调制后传输。
集线器 (hub) :实现星形拓扑的以太网,简单转发比特。
网线、中继器、网关。
( 2 )数据链路层
适配器(网卡):又称网络接口卡,用于计算机和局域网的通信。
网桥 (bridge) :用于在数据链路层扩展以太网,根据 MAC 帧的目的地址对收到的帧进行转发和过滤。含有转发表。它隔离了冲突域,但不隔离广播域。
第二层交换机 (layer2 switch) :多接口的网桥,又称以太网交换机或第二层交换机。可实现虚拟局域网 VLAN(Virtual LAN) 。
( 3 )网络层
第三层交换机 (layer3 switch) :能进行路由的交换机,具有一部分 路由器 功能。
路由器 (router) :连接因特网中各局域网、广域网的设备。拥有路由选择处理机、交换结构、一组输入端口和一组输出端口。
7. 主机字节序与网络字节序
主机字节序一般分为大端和小端两种,在 X86 平台上一般采用小端模式。“小端”和“大端”表示多字节值的哪一端 ( 小端或大端 ) 存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。
1. 小端法 (Little-Endian) 就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。
2. 大端法 (Big-Endian) 就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。
![](http://img2.tuicool.com/Rj2qEb.png!web)
网络字节序:网络上的数据流是字节流,对于一个多字节数值,在进行网络传输的时候,收到的第一个字节被当作高位看待,这就要求发送端发送的第一个字节应当是高位。而在发送端发送数据时,发送的第一个字节是该数字在内存中起始地址对应的字节。可见多字节数值在发送前,在内存中数值应该以大端法存放。网络字节序说是大端字节序。
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服务。
参考资料:
计算机网络之面试常考
《计算机网络(第五版)》谢希仁
——————————————————————————我是分割线————————————————————————
计算机网络系列的暂时整理到这里吧,如果读者发现还有哪些这方面的经典常考知识点也请指出,待续~
转载请注明出处,谢谢!
相关文章推荐
- TCP拥塞控制机制
- TCP/IP协议三次握手与四次握手流程解析
- QT TCP/IP
- android中网络连接状态下跳转网页
- 网络留言板1
- Ubuntu网络配置
- voip 网络电话 sipdroid 的移植上出现的问题
- 第二十七、二十八天:网络数据封装及各层数据的发送
- socket通信,tcp,udp通信
- TCP/IP详解阅读笔记(一):TCP协议
- HTTP协议响应消息的常用状态码【转】
- HTTPS理论基础及其在Android中的最佳实践
- etrace 跟踪 nginx之HTTP请求流程
- http://yxonic.blog.ustc.edu.cn/2015/07/python-asyn
- http://my.oschina.net/u/2352897/blog
- asp.net基础-http运行期执行概述
- HttpClient4.3.6 实现https访问
- tomcat搭建 https双向认证
- CS8900A网络驱动程序移植
- TCP 状态详解 -转载