计算机网络(笔记)

来源:互联网 发布:java 乐观锁 例子 编辑:程序博客网 时间:2024/05/16 12:35

计算机网络

计算机网络常用的小知识点:

1、IP地址分类:

Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A类~E类。其中A、B、C3类(如下表格)由InternetNIC在全球范围内统一分配,D、E类为特殊地址:


其实IP分类很简单:

A类开头:0000 0000

B类开头:1000 0000

C类开头:1100 0000

D类开头:1110 0000

E类开头:1111 0000

有各类的开头,就可以知道上一个类别的结尾,如B类开头为1000,那么A类的最后一个IP就为127.255.255.255;

2、根据子网个数和网络类型求取子网掩码:

1)、把子网数目从十进制转化为二进制数。例如需要6个子网,转换成2进制数为110;

2)、统计得到的二进制位数N,根据上述可得N=3;

3)、根据网络类型,例如C类子网掩码255.255.255.0起,其中255.255.255为固定前缀,0为主机地址部分。

把主机地址部分前N位全部置为1,得到的就是所需子网掩码。本例子网掩码就是为255.255.255.224。认识112.10.200.0/21模式:21表示前21位是网络号,那么后11位就是主机号,因此属于此网络地址段的主机IP范围有:112.10.200.0~112.10.207.255;

带宽定义:带宽通常指信号所占据的频带宽度;在被用来描述信道时,带宽是指能够有效通过该信道的信号的最大频带宽度。

网桥定义:网桥也叫桥接器,是连接两个局域网的一种存储/转发设备,它能将一个大的LAN分割为多个网段,或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器。扩展局域网最常见的方法是使用网桥。最简单的网桥有两个端口,复杂些的网桥可以有更多的端口。网桥的每个端口与一个网段相连。网桥作用于数据链路层。

3、由IP地址和子网掩码获取网络地址和主机号

答:网络地址=IP地址&子网掩码;
主机号=IP地址&子网掩码取反;
主机数=2^主机段二进制位数-2;
求主机数时为什么后面要减2?因为主机段全0和全1的都要去掉,不可以作为主机段码。主机段全0就还是网络号初始状态,全1是表示广播地址;
更多由IP地址和子网掩码求取广播地址、主机数、网络地址范围请参考:http://blog.csdn.net/leichelle/article/details/8217022

一、网络概述与体系结构

1、OSI模型

答:如图:

1)运输层中以端口号标识不同的应用程序;
2)两个节点相互通信时,第三个节点不检测总线上的信号;
3)物理层、数据链路层、网络层的数据传输单位依次是比特、帧、分组;
4)各层任务:
物理层任务就是提供网络的物理连接;
数据链路层要任务就是进行数据封装和数据链接的建立;
网络层为应用程序和目标主机之间提供通信服务;
运输层为应用程序与应用程序之间提供逻辑通信服务;
5)局域网体系结构中的数据链路层被划分成 MAC 和 LLC 两个子层。MAC负责低一层的物理层,LLC(逻辑链路层)负责高一层的网络层;
6)各层相关应用分布情况:
TCP/IP协议: 
数据链路层:PPP
网络层:IP,ARP,RARP,ICMP,IGMP
传输层:TCP ,UDP,UGP
应用层:Telnet,FTP,SMTP,SNMP
(实际应用中都是按照TCP/IP的四层协议进行划分)

OSI:
物理层:EIA/TIA-232, EIA/TIA-499, V.35, V.24, RJ45, Ethernet, 802.3, 802.5, FDDI, NRZI, NRZ, B8ZS
数据链路层:Frame Relay, HDLC, PPP, IEEE 802.3/802.2, FDDI, ATM, IEEE 802.5/802.2
网络层:IP,ARP,RARP,IPX,AppleTalk DDP
传输层:TCP,UDP,SPX
会话层:RPC,SQL,NFS,NetBIOS,names,AppleTalk,ASP,DECnet,SCP
表示层:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption,MPEG,MIDI,HTML
应用层:FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP

5层协议:物理层、链路层、网络层、传输层、应用层;

实际上,软件开发中需要了解较多的就是网络层和传输层,这两层与其他层之间的关系就是承上启下的作用,可见下图:


2、网络拓扑结构

答:常见的有:星型拓扑、环形拓扑、总线拓扑、网状拓扑结构;

广域网的拓扑结构基本都是网状拓扑结构;

常见的局域网拓扑结构一般是星型结构,我们家用的路由器和计算机模式就是星型结构;


3、不同城市通信容量的网络结构选择

答:根据本地网的业务覆盖范围和通信容量的不同,可以有其不同的网路组织方式:
1)、适合于特大和大城市的本地网的网路组织
采用分区双汇接局结构。将本地网划分成若干个汇接区,每个汇接区内设置两个大容量的汇接局,覆盖区内的每个端局;当汇接局均为端/汇合一
局(用DTm/DL)时,全网的所有汇接局间为个个相连的网状网;当某一个汇接区内的两个汇接局均为纯汇接局时,这两个汇接局之间不需相连。
2)、适合于中等城市的本地网的网路组织
采用汇接局全覆盖结构。在全网设置2~3汇接局,对全网的端局全覆盖,汇接局一般设置在本地网的中心城市,并且相互之间采用网状网结构。
3)、适合于较小本地网的网路组织
采用一级(无汇接局)网状网结构。

4、网络协议组成要素

答:网络协议主要要素为:语法、语义、同步(或时序)。

二、物理层

1、简单的计算机网络组成

答:计算机网络通常由三个部分组成:资源子网(可以是若干主机组成)、通信子网和通信协议;
所谓资源子网是计算机网络中面向用户的部分,负责全网络面向应用的数据处理工作;通信子网就是计算机网络中负责数据通信的部分;而通信双方必须共同遵守的规则和约定就称为通信协议,通信协议的存在与否是计算机网络与一般计算机互连系统的根本区别。

2、单模光纤和多模光纤传输

答:光纤传输按光在光纤中的传输模式可分为:单模光纤和多模光纤。

多模光纤(Multi Mode Fiber):中心玻璃芯较粗(50或62.5μm),可传多种模式的光。但其模间色散较大,这就限制了传输数字信号的频率,而且随距离的增加会更加严重。例如:600MB/KM的光纤在2KM时则只有300MB的带宽了。因此,多模光纤传输的距离就比较近,一般只有几公里。

单模光纤(Single Mode Fiber):中心玻璃芯很细(芯径一般为9或10μm),只能传一种模式的光。因此,其模间色散很小,因此传输频带宽,容量大,适用于远程通讯,但还存在着材料色散和波导色散,这样单模光纤对光源的谱宽和稳定性有较高的要求,即谱宽要窄,稳定性要好。后来又发现在1.31μm波长处,单模光纤的材料色散和波导色散一为正、一为负,大小也正好相等。这就是说在1.31μm波长处,单模光纤的总色散为零。从光纤的损耗特性来看,1.31μm处正好是光纤的一个低损耗窗口。这样,1.31μm波长区就成了光纤通信的一个很理想的工作窗口,也是现在实用光纤通信系统的主要工作波段。1.31μm常规单模光纤的主要参数是由国际电信联盟ITU-T在G652建议中确定的,因此这种光纤又称G652光纤。

3、DCE和DTE

答:在物理层接口中,数据终端设备(Data Terminal Equipment),即信源,就是信息的发送端,是发出待传信息的设备;

数据电路终接设备(Data Circuit-Terminating Equipment)就是信号转换设备。

在ITU的系列建议中,数据终端设备泛指智能终端(各类计算机系统、服务器)或简单设备(如计算机、打印机、传真机等等),内含数据通信(或传输)控制单元,又称为计算机系统,我们需要通信的信息都可以通过它转化为数字世界中的01信号;数据电路终接设备是指用于处理网络通信的设备。若传输信道采用专用专线方式,DTE发送的数字数据通过通信接口,经传输信道到达接收端的DCE,然后在经过通信接口传送到服务器,反之亦然。

三、数据链路层

1、帧中继

答:帧中继( Frame Relay)是一种用于连接计算机系统的面向分组的通信方法。它主要用在公共或专用网上的局域网互联以及广域网连接。大多数公共电信局都提供帧中继服务,把它作为建立高性能的虚拟广域连接的一种途径。帧中继是进入带宽范围从56Kbps到1.544Mbps的广域分组交换网的用户接口。帧中继网可以说是一种广域网。

2、BCS帧传输

答:(1)BCS帧传输的字符串填充问题:遇到DLE就在其后再填充一个DLE。比如:字符串“ A DLE STX ”填充后就是字符串“ A DLE DLE STX ”;

3、PPP协议和HDLC协议

答:PPP(Point-to-Point Protocol)协议能在两个路由器之间互相传递数据分组的基本结构信息。PPP协议是一种点-点串行通信协议。PPP具有处理错误检测、支持多个协议、允许在连接时刻协商IP地址、允许身份认证等功能,还有其他。PPP提供了3类功能:成帧;链路控制协议LCP;网络控制协议NCP。PPP是面向字符类型的协议。

HDLC(High Level Data Link Control——高级数据链路控制规程)协议。 HDLC是面向比特的数据链路控制协议的典型代表,该协议不依赖于任何一种字符编码集;数据报文可透明传输,用于实现透明传输的"0比特插入法"易于硬件实现;全双工通信,有较高的数据链路传输效率;所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重份,传输可靠性高;传输控制功能与处理功能分离,具有较大灵活性。HDLC面向比特的同步协议。

4、MAC地址

答:MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。MAC地址是网卡决定的,是固定的。

MAC用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位)。其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为"编制上唯一的标识符"(Organizationally Unique Identifier),后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。

5、常见的4种传统以太网标准

答:如下介绍:
10Base-5 使用粗同轴电缆,最大网段长度为500m,基带传输方法;
10Base-2 使用细同轴电缆,最大网段长度为185m,基带传输方法;
10Base-T 使用双绞线电缆,最大网段长度为100m,基带传输方法;
10Base-F 使用光纤传输介质,传输速率为10Mbps,基带传输方法。

四、网络层

1、IP协议

答:IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP协议是不可靠的、无连接的传送机制Internet协议,其信息传输方式是数据报。IP协议不具有拥塞控制、流量控制等,这些是TCP协议才具有的控制技术。

2、报文交换与分组交换

答:假设一条传输链路的数据传输速率是10Mbps,一个8M的数据包需要传输到接收端,
1)采用整体报文传输,整体发送的时延是8/10Mbps=800毫秒,接收方的接受时延也是800毫秒,所以一共耗费1600毫秒;
2)采用分组传输,每组报文大小10kb,那么每组传输时延是1k/10Mbps=1ms,接受时延也是1ms,但由于发送段发送完第二组时,接收端也正好接受完第一组,所以总用时为800+1=801ms。
总结:分组传输时延少一些。

3、网络发送数据的高低位字节顺序

答:X86 系列 CPU都是小端模式,所以int 型变量值都是高字节在地址高位,低字节在地址低位;网络发送数据时,采用大端模式,高字节在地址低位,低字节在地址高位。那么首先发送的就是低地址位上的高字节,再发送高地址位上的低字节。而接受方则把先接受到的数据作为高位字节,后接受到的为低位字节。

原因:由于TCP传输是先从低地址处开始发送数据,为了接收方从高到低接收,所以发送前的网络序列一般存储为大端模式。同时,接收数据方可以首先获取数据报的符号位。

例如,0x78563412网络发送顺序为:78 56 34 12,接收方收到的就是数据0x78563412;

4、ARP协议工作过程

答:主要作用是根据IP地址转化为Mac地址。

为什么需要将IP地址转化为MAC地址?因为所有的网络通信最终都是根据硬件地址进行传送信息的。如下图:


最终都需要将IP数据报封装到MAC帧中,所以在进入数据链路层前就要使用ARP协议获取MAC地址;

举例:当一个基于TCP/IP的应用程序需要从一台主机发送数据给另一台主机时(如socket通信),它把信息分割并封装成包,附上目的主机的IP地址。然后,寻找IP地址到实际MAC地址的映射,这需要发送ARP广播消息。当ARP找到了目的主机MAC地址后,就可以形成待发送帧的完整以太网帧头。最后,协议栈将IP包封装到以太网帧中进行传送。


在上图中,当主机A要和主机B通信(如主机A Ping主机B)时。主机A会先检查其ARP缓存内是否有主机B的MAC地址。如果没有,主机A会发送一个ARP请求广播包,此包内包含着其欲与之通信的主机的IP地址,也就是主机B的IP地址。
当主机B收到此广播后,会将自己的MAC地址利用ARP协议响应包传给主机A,并更新自己的ARP缓存,也就是同时将主机A的IP地址/MAC地址对保存到自己的ARP缓存中,以供后面使用。主机A在得到主机B的MAC地址后,就可以与主机B通信了。同时,主机A也将主机B的IP地址/MAC地址对保存在自己的ARP协议缓存内。


5、RARP协议

答:RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。

工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。

注:由于DHCP协议(动态主机配置协议)已经包含该功能,故基本没有人使用RARP协议了。


6、ICMP协议(网际控制报文协议)

答:ICMP协议时TCP/IP协议的子协议,位于IP层。TCP、UDP属于传输层,ICMP 、IP属于网络层协议,而ICMP主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。ICMP是IP层的一个组成部分,它传递差错报文以及其它需要注意的信息。ICMP报文通常被IP层或更高层协议使用。

ICMP报文有两类:ICMP差错报告报文和ICMP询问报文;


7、ping命令的作用

答:ping 命令有助于验证网络层的连通性。ping在主机和服务器之间传递控制消息,属于ICMP协议,但是ICMP协议是TCP/IP的子协议。

一般进行网络故障排除时,可以使用ping 命令向目标计算机或IP地址发送ICMP回显请求,目标计算机会返回回显应答,如果目标计算机不能返回回显应答,说明在源计算机和目标计算机之间的网路存在问题,需要进一步检查解决。

ping命令是Windows操作系统中集成的一个TCP/IP协议探测工具,它只能在有TCP/IP协议有网络中使用;

ping命令的格式为:ping[参数1][参数2][……][目的地址];

注:ping命令中的额、数据保护传输实际上是使用UDP协议实现的。

8、路由表

答:(1)路由表内容分为四个部分:

1)网络地址(Network Destination)、网络掩码(Netmask):网络地址和网络掩码相与的结果用于定义本地计算机可以到达的网络目的地址范围。通常情况下,网络目的地址范围包含以下四种:
主机地址;某个特定主机的网络地址,网络掩码为255.255.255.255;
子网地址,某个特定子网的网络地址;
网络地址;某个特定网络的网络地址;
2)网关(Gateway,又称为下一跳服务器):下一跳路由器的入口IP;在发送IP数据包时,网关定义了针对特定的网络目的地址,数据包发送到的下一跳服务器。如果是本地计算机直接连接到的网络,网关通常是本地计算机对应的网络接口,但是此时接口必须和网关一致;如果是远程网络或默认路由,网关通常是本地计算机所连接到的网络上的某个服务器或路由器。
3)接口(Interface):数据包到达目标网段的本地路由器的出口IP;网关必须位于和接口相同的子网(默认网关除外),否则造成在使用此路由项时需调用其他路由项,从而可能会导致路由死锁。
4)跃点数(Metric):跃点数用于指出路由的成本,通常情况下代表到达目标地址所需要经过的跃点数量,一个跃点代表经过一个路由器。跃点数越低,代表路由成本越低;跃点数越高,代表路由成本越高。当具有多条到达相同目的网络的路由项时,TCP/IP会选择具有更低跃点数的路由项。

当然,还包括优先级(加入IP路由表的优先级)等其他信息。


五、传输层

1、传输层介绍

答:如第二章的总体介绍,传输层是后面应用层协议的基础。例如应用层的DNS、TFTP、RIP、DHCP、NFS、专用协议都是基于传输层的UDP协议,HTTP、FTP、STMP、POP3、BGP协议都是基于传输层TCP协议。

如上所述:可以将传输层协议抽象成一个API工具包,其中封装了TCP、UDP传输协议,应用层协议根据自身需求选择两种协议之一,进行信息传输。

形象点比喻就是:传输层协议就是快递公司,TCP相当于非常正规,运作过程有监视和状态反馈的靠谱快递公司,但价格贵;UDP相当于运输过程不受控,有点不靠谱的快递公司,但价格便宜。TCP与UDP的选择就像你要寄重要的东西就需要选择靠谱的快递公司,不怎么很重要选择便宜的公司也就可以了。


2、端口

答:端口定义在传输层,作用于传输层和应用层之间的交互。

如何知道传输层将数据传递给应用层哪个进程?

给每个应用进程分配一个端口号即可,传输层的数据根据端口号传输到相应进程;


3、套接字

答:套接字socket=(IP地址:端口号);

每一条TCP连接都唯一的被通信链路两端的两个套接字确定,其中IP确定主机地址,端口号确定应用程序;


4、socket通信

答:socket通信其实就是TCP通信的一种实现,其流程图如下:


socket的recv返回值:

解阻塞与非阻塞recv返回值没有区分,如下:
返回值<0 出错;
返回值=0 连接关闭;
返回值>0 接收到数据大小。

注意:在TCP/UDP传输段中,源端口地址和目的端口地址是不能相同的;


5、TCP协议下的可靠传输的工作原理

答:可靠传输过程中可能会出现4种情况,分别是:无差错情况、发送出现差错、确认丢失和确认磁道,如下图:

由上图可知:可靠传输都是用确认和超时重传机制实现的。

上述这种可靠传输方式被称为自动重传请求协议,即ARQ协议;


6、信道利用率

答:发送分组时间与总时间之比,如下图:


可见,这种信道利用率极低,大部分时间在等待确认回传,所以现在都是用流水线传输模式,如下图:

上述这种流水线传输模式需要采用两个协议:连续ARQ协议和滑动串窗口协议;


7、TCP传输协议的报文段格式

答:TCP报文段=TCP首部+TCP报文段数据部分,TCP报文段又被包含在IP报文段中,IP报文段被包含在MAC帧中(MAC帧首部是硬件地址等信息)。
(1)TCP报文段格式如下:

注意:
①发送与接收方互相通信都是按这种格式,包括建立连接阶段;
②上述TCP首部中的窗口是需要接收数据方告知数据发送方的,所以窗口是动态变换的;
③ACK是确认标志、SYN是同步标志、FIN是终止标志;

(2)各个层次的报文段包含关系如下:


8、报文首部检验和原理

答:UDP和TCP报文首部都有检验和,原理也相似,如下:
发送方:
①前提操作:先添加12字节的伪首部,然后将报文的检验和所在的两个字节都赋值为0,同时保证数据部分是偶数个字节,若不是偶数就补0成为偶数个字节。
②检验和计算:每两个字节(16位)作为一个二进制数,先取反,然后求和,最后将求和结果再取反并填充到报文检验和字段处。
③发送操作:去掉伪首部,将剩下的数据报发送给接收方。
接收方:
①添加伪首部;
②每两个字节取反,然后求和,若求和结果每个二进制位为全1,表示合法,否则就丢弃;

以下用发送方的检验和求取过程说明:


9、TCP可靠传输的实现——滑动窗口协议

答:(1)可靠传输需要使用的工具——滑动窗口,包括发送窗口和接收窗口,两者长度相等(窗口大小是动态变化);见下图:

如上图:
①31未收到,但32、33即使收到了也没用,此时接收方返回给发送方的数值仍然是31(表示30以前的数据都已收到,现请求发送31开始的数据);
②此时由于31未收到,接收窗口不可右移,发送窗口也因未收到31确认而保持不动;
③直至接收方收到序号为31的分组或者发送方发现31分组超时进行重传并被接收方收到后,接收方返回确认值34,此时两个窗口才可以右移3位;
解释:为什么是返回确认值34?因为接收方窗口中已经保存了32、33号分组信息,并被标记为已接收,故返回34表示请求发送方从34号开始发送;

(2)超时时间一般略大于一个往返时间之和RTT;

10、TCP的流量控制

答:接收方每次返回确认时都会返回一个rwnd(接收窗口)值,表示下一次可接受的最大窗口长度;流量控制就是在发送方根据接收方反馈的窗口值发送数据,保证数据量不超过窗口值大小。

11、关于TCP报文段传输以及拥塞控制

答:拥塞其实是一个动态问题,我们没有办法用一个静态方案去解决,从这个意义上来说,拥塞是不可避免的
TCP的拥塞控制由4个核心算法组成:“慢启动”(Slow Start)、“拥塞避免”(Congestion voidance)、“快速重传 ”(Fast Retransmit)、“快速恢复”(Fast Recovery)。

(1)TCP报文传输

1)TCP 发送窗口值=Min{接受窗口值,拥塞窗口值},即根据接受窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的);
2)每一条 TCP 连接只有两个端点;
3)TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是传输层的协议端口,而是做套接字(socket)或插口;

(2)拥塞控制

拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。拥塞控制有四种算法:慢开始、拥塞避免、快重传、快恢复;

1)慢开始与拥塞避免:

①慢开始(乘法增大):

发送方维持一个叫做拥塞窗口cwnd(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。慢开始算法的思路就是不要一开始就发送大量的数据,而是按倍数增长逐渐增加拥塞窗口的大小。如下图:


所以一次传输轮次之后拥塞窗口就加倍,这就是乘法增长。为了防止cwnd增长过大引起网络拥塞,还需设置一个慢开始门限ssthresh状态变量。

ssthresh的用法如下:

当cwnd<ssthresh时,使用慢开始算法;

当cwnd>ssthresh时,改用拥塞避免算法;

当cwnd=ssthresh时,慢开始与拥塞避免算法任意。


②拥塞避免(加法增大)

拥塞避免算法让拥塞窗口缓慢的线性增长,即:每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍


③“慢开始+拥塞避免”模式的拥塞控制:

    无论慢开始阶段还是拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认,即使没有收到确认可能是拥塞超时,也有可能是其他原因如分组丢失造成的,都当做拥塞来处理),就进行如下处理:

1°、把慢开始门限ssthresh设置为出现拥塞时的窗口cwnd的一半;

2°、把发送窗口复位至初始值(若cwnd初始值为1就复位为1);

3°、然后,执行慢开始算法。

如下图:


注:拥塞窗口大小的单位是字节。


2)快重传和快恢复

①快重传:
连续流水线发送模式下,当发送方连续收到接收方的3个失序分组确认时,则不管是否到达设定的重传时间,都认为重复分组后面的分组丢失了,马上对该分组进行重传。这就是快重传。
见下图,发送方连续收到4个M2的确认,其中后3个是因为接收方接收到失序分组M4、M5、M6而发出的重复确认M2。接收方得知有3个重复的确认M2,就马上重传M3:



②快恢复:
快恢复是发送方检测到有3个重复确认出现时,就将前面的慢开始门限ssthresh减小为当前cwnd的一半,然后将拥塞窗口cwnd设置为新的ssthresh值(此处与慢开始处理方式不同),然后执行拥塞避免(加法增大)算法。

③“快重传+快恢复”模式的拥塞控制:
如下图:图中的Reno算法是最常用的,虚线部分的Tahoe算法已经不被使用了。
为什么使用Reno算法呢?因为收到3个重复确认并不一定是网络拥塞造成的,也有可能是分组丢失造成的。所以拥塞窗口cwnd只减少到原来的一半。


12、TCP协议和TCP连接

答:TCP协议是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议。主要用于数据传输和通信。

TCP连接分为长连接和短连接。长连接是指一次连接后,服务器一直监听,后续数据传输都用此连接,直至此连接被用户主动释放关闭;短连接是指

一次连接后,指定数据传输完毕,就释放此连接。

TCP协议的握手机制:请求连接需要握手3次,释放连接需要握手4次

请求连接握手机制如下:


第一次握手:客户端发送syn包(seq=j)到服务器。 
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包。 
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。 
三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。

注:从右图可以知道客户端、服务端各个状态的持续时间关系;例如可知:客户端已建立连接,但服务器可能还处于同步收到状态(中间确认传输造成了一定时间差)。

释放连接握手机制如下两个图(左图为简易图,右图为详图):

注:从右图可以知道客户端、服务端各个状态的持续时间关系;


13、为什么是3次握手和4次挥手

答:(1)3次握手
第1次客户发送握手请求报文,第2次服务端回送捂手请求确认,第3次客户端再向服务端回送握手确认;按常理应该没有第三次报文传输,那为什么要加入第三次报文传输呢?因为这是“为了避免残留在网络中的失效连接请求报文段到达服务器而产生错误”。所谓失效的连接请求如被认为丢失的连接请求(实际没有丢失,只是被滞留在某节点)。协议中添加第三个报文传输要求后,若不是客户端自主发送的连接请求,这个报文传输就不会进行,从而保证不产生意外连接。

(2)4次挥手
4次挥手实际上按常理不需要后面两次的,但为什么要添加进去?因为“客户端发送连接中止请求后,仅仅表示客户端没有数据发送需求了,并不表示服务端没有数据回送需求”,所以前两次报文传输后客户端-服务端方向的连接就释放了,此时TCP连接处于半关闭状态。只有当服务端的数据传送完后才会再次发送服务端-客户端方向的关闭请求,客户端收到后发送终止确认,从而真正实现连接关闭;

14、为什么挥手过程中客户端最后要在TIME-WAIT状态下等待2MSL时间

答:有两个原因:
①保证客户端发送的最后一个ACK报文段到达B。
因为ACK报文段可能丢失,服务端接收不到就会超时重传FIN终止请求,此时等待2MSL时间就可以保证接收到服务端重传的FIN终止请求,并再次发送ACK确认;若不等待2MSL,服务端就可能因为客户端发送的ACK丢失而无法关闭连接。

②防止前面提到的“已失效的连接请求报文段”出现在本链接中。
在持续的2MSL等待时间内,可以使得本连接期间产生的所有请求报文段从网络中消失,这样就可以保证下一个新连接中不会出现这种旧的连接请求报文段,从而避免引发失效连接请求错误。

六、应用层

1、域名认知

答:域名系统可以用域名树表示,如图:


例如:job.hust.edu.cn域名,job是四级域名(一般是主机),hust是三级域名(一般是分区),edu是二级域名(一般是类别域名或者行政域名),cn是顶级域名(一般是国家地区)。


2、域名服务器

答:(1)上面小节1的的域名空间树形结构图6-1在实际中是用域名服务器实现的,理论上上述树结构的每一个节点用一个域名服务器就可以了,但这样做会造成域名树极其复杂,所以现在都是用划分区的办法,如abc公司的域被划分为两个区,其中一个区作为主区用于连接外部二级域名服务器:


如上图6-3所述:DNS域名系统层级结构由三种类别服务器组成,即根域名服务器、顶级域名服务器、权限域名服务器。

(2)此外,不得不提三层次之外的一个域名服务器——本地域名服务器:它是DNS系统中非常重要的一个域名服务器;

作用:所有的域名解析都是直接或间接通过本地域名服务器完成的。

本地域名服务器的作用过程:所有的域名解析请求都是先发送到本地域名服务器进行解析,若本地域名服务器无法解析,它就向根域名服务器发送请求,根域名服务器将告诉本地域名服务器下一步该去哪个顶级域名服务器下查找,依次迭代直至查询出来;


3、DNS实现域名到IP的解析过程

答:过程如下:

①客户机的应用程序调用解析程序,解析程序将域名以UDP数据报的形式发送给本地DNS服务器(使用UDP是为了减少开销);

②本地DNS服务器查找到IP后也以UDP形式传送回来;

③若本地DNS服务器查找不到对应的IP,则需要将域名发送到根D域名服务器,根域名服务器返回下一步需要查询的顶级域名服务器IP地址,然后本地DNS服务器发送域名到顶级DNS服务器,顶级DNS服务器返回下一步要查询的权限DNS服务器IP地址,本地DNS服务器向权限DNS服务器发送请求,返回得到正确的IP,然后将其传回给客户主机。

注:上述本地DNS服务器采用的是迭代查询方式,还可以采用递归方式;

举例:主机m.xyz.com需要知道y.abc.com对应的IP地址,则采用本地DNS递归解析过程如下:


对应图示如下(a):



4、DNS劫持

答:DNS劫持又称域名劫持 ,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则
返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反应或访问的是假网址。

常见的访问某一指定网址的网页时,显示的却是不相关的其他运营商的网页,就是DNS劫持现象。


5、Host文件

答:hosts的作用就是将网络中的域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页。如果没有找到,则系统再会将网址提交DNS服务器进行IP地址的解析(注意:DNS只可以将域名转化为IP地址,不可以转化为MAC地址。IP转化为MAC是ARP协议的功能);

早期的计算机网络规模比较小,一般都是直接把hosts文件作为域名翻译系统(那时还没有DNS);如今有了DNS后,hosts文件通常用于补充或取代网络

中 DNS 的功能。不过Hosts和DNS不同的是:计算机的用户可以直接对hosts文件进行控制。


6、HTTP协议

答:HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。
格式:http://host[":"port][abs_path];
http协议的客户端请求方法有get,head,post;
解释:http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口80(补充:端口号是占用16位二进制的数据,一般用十六进制表示);abs_path指定请求资源的URI;

协议详解之消息报头:HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。

更多参考:http://blog.csdn.net/xiongchao99/article/details/73381280#t8http://blog.csdn.net/xiongchao99/article/details/74524807#t21

7、SMTP和POP3协议

(1) SMTP:simple mail transfer protocol,简单邮件传输协议。专注于邮件在服务器之间的中转,是发送邮件服务器;通过强制用户登录邮件发送服务器的方式,即用户需要输入用户名和密码后才能登录进发送邮件服务器;减少垃圾邮件的产生;

(2)POP3: post office protocol,邮局协议的第三个版本,是接收邮件服务器;规定怎么将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议;是因特网的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地,同时删除保存在邮件服务器上的电子邮件。 缺点:用户需要将服务器上所有的邮件下载到客户端本地,若出现邮件炸弹或大附件,会造成网络拥塞。

(3)IMAP:Internet Mail Access Protocol,交互式邮件存取协议,支持在线(如webmail邮件)、离线(邮件客户端软件)、分离方式(在线和离线方式的结合)的处理;是接收邮件服务器。用户在客户端上的操作,会反馈到服务器上,如删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。相比POP3而言,不需要将邮件下载到本地后才能进行操作,这样用户可以在根据邮件的简单信息有选择性地下载邮件至本地。



七、网络完全

1、QoS协议

答:QoS(Quality of Service)服务质量,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术,用于广域网。 在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS,比如Web应用,或E-mail设置等。但是对关键应用和多媒体应用就十分必要。当网络过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。


八、其他

1、NAT——网络转换器

答:在计算机网络中,网络地址转换(英语:Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP封包通过路由器或防火墙时重写源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。 NAT 是作为一种解决IPv4地址短缺,以避免保留IP地址困难的方案而流行起来的。支持端口转换的NAT又可以分为两类:源地址转换和目的地址转换NAT。前一种情形下发起连接的计算机的IP地址将会被重写,使得内网主机发出的数据包能够到达外网主机。后一种情况下被连接计算机的IP地址将被重写,使得外网主机发出的数据包能够到达内网主机。实际上,以上两种方式通常会一起使用以支持双向通信。


2、虚拟局域网——VLAN

答:虚拟局域网(VLAN)是一种可以将非局域网用户整合成如同在同一局域网内的技术。VLAN用户是逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的。与传统的局域网技术相比较,VLAN技术更加灵活,它具有以下优点: 

网络设备的移动、添加和修改的管理开销减少;
可以控制广播活动;
可提高网络的安全性。

在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应了一个特定的用户组,默认情况下这些不同的广播域是相互隔离的。不同的广播域之间想要通信,需要通过一个或多个路由器。这样的一个广播域就称为VLAN。

3、计算机和打印机之间的通信模式

答:单工传输,即只有计算机向打印机传输信息,打印机仅仅是输出设备。就好比遥控器发送信息,电视机仅仅作为输出一样。

至于计算机如何知道打印机故障或者缺纸等,这是由于计算机主动查看打印机状态完成的,并非打印机将相关信息发送给计算机。

4、总线请求

答:集中式总线请求方案有三种,定时查询、串行连接和独立请求。
定时查询和串行连接所有部件都用一条"总线请求"线,但是定时查询是由CPU去定时查询总线上的部件,而串行连接是部件去请求CPU。独立请求每个部件均有一条 "总线请求"线。


5、网络连接10K问题

答:10K问题是指网络服务器在连接数达到10K左右时,并发数就达到瓶颈。现在主流的10K解决方式是:IO多路复用,即使用epoll机制。


原创粉丝点击