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

前两天发表了“那些不能遗忘的知识点回顾——操作系统系列(笔试面试高频题)”和“那些不能遗忘的知识点回顾——C/C++系列(笔试面试高频题)”文章,没看的赶紧在公众号下回复“34”和“35”看看吧。这可是百度大神写的博客,质量那可是杠杠的,总结的那是相当的不错。好好看,搞不好看了这系列的文章后,你也能去百度了,哈哈(手动滑稽脸),我可不能做担保啊>_<,回归正题,今天带来的干货是“那些不能遗忘的知识点回顾——计算机网络系列(笔试面试高频题)” 。

作者:闻波 来源:http://www.cnblogs.com/webary/p/4830051.html

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

——前言

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之间可以开始传输数据了。

第一次挥手: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状态,完成四次挥手。

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

  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)就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。

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

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服务。

推荐几本计算机网络比较经典的书籍吧!

------------------------------------------------------------------

原文发布于微信公众号 - zhisheng(zhisheng_blog)

原文发表时间:2016-04-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吴伟祥

OSI七层模型 原

模型把网络通信的工作分为7层。1至4层被认为是低层,这些层与数据移动密切相关。5至7层是高层,包含应用程序级的数据。每一层负责一项具体的工作,然后把数据传送到下...

22270
来自专栏北京马哥教育

以女朋友为例讲解 TCP/IP 三次握手与四次挥手

背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次。 从好上开始,到现在,一年多也算坚持下来了。 问题 有时候聊天的过程中,我的网络或者她的网...

324100
来自专栏逸鹏说道

探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御

其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/d...

37680
来自专栏mathor

计算机网络基础知识总结

 为了使不同计算机厂家生产的计算机能相互通信,在更大范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/R...

95820
来自专栏xcywt

IP协议和网络传输中的封装与分用。

关于七层模型和四层模型可以参考这个:http://www.cnblogs.com/xcywt/p/5027277.html 因为四层模型用的比较多,这里只拿四层...

22960
来自专栏JetpropelledSnake

Python Web学习笔记之图解TCP/IP协议和浅析算法

21140
来自专栏Golang语言社区

TCP/IP通信架构

1 .计算机网络的体系结构 计算机网络是一个非常复杂的系统,将整个网络的传输功能进行分层设计的网络结构层次模型及各层协议的集合称为计算机网络的体系结构。为了解决...

34150
来自专栏java思维导图

理解TCP/IP三次握手与四次挥手的正确姿势

背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次。 从好上开始,到现在,一年多也算坚持下来了。 问题 有时候聊天的过程中,我的网络或者她的网络...

29470
来自专栏同步博客

OSI七层模型学习笔记

  OSI模型全名Open System InterConnect 即开放式系统互联,是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络...

12150
来自专栏北京马哥教育

TCP洪水攻击(SYN Flood)的诊断和处理

SYN Flood介绍 前段时间网站被攻击多次,其中最猛烈的就是TCP洪水攻击,即SYN Flood。 SYN Flood是当前最流行的DoS(拒绝服务攻击)与...

49350

扫码关注云+社区

领取腾讯云代金券