计算机网络体系结构
计算机网络体系结构是指计算机网络层次结构模型,是各层次协议以及层次间端口的集合。
常见有三种体系结构:OSI参考模型、TCP/IP体系结构、五层体系结构。
OSI参考模型:
将一个网络系统分为功能相互独立的七个层次,从下到上分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

TCP/IP体系结构:
包含的主要协议为TCP/IP协议,但还有很多其它协议,所以准确地说应是TCP/IP协议集。
它将网络系统划分为四个层次,从下到上依次为:网络接口层、网际层、传输层、应用层。

五层体系结构:
是上述两种结构的结合,从下到上依次为:物理层、链路层、网络层、传输层、应用层。

2/ 体系结构各层次使用的中间设备
物理层:转发器;
数据链路层:网桥、交换机、桥接器;
网络层:路由器;
网络层以上:网关。
3/ 分组交换技术
将用户发送的数据划分为多个部分,每个部分为一个分组。
分组交换采用存储转发思想:路由器接收到分组后将其存储下来,并查找路由表,按照分组的首部地址,转发给下一个路由器。
4/ TCP、IP、UDP对应的数据传输单元
TCP:报文段(segment);
IP:分组;
UDP:数据报。
5/ TCP协议
TCP,即传输控制协议,属于传输层(传输层实现了端到端的通信,即两台主机上的两个进程之间的通信),基于TCP的应用层协议有:HTTP、SMTP、FTP、Telnet等。
特点:
1.面向连接;通信前双方需要建立连接,通信后需释放连接。
2.面向字节流;TCP传输数据以字节为单位,以流的形式传输。
3.全双工;通信双方可同时传送数据给对方。
4.可靠;TCP具有差错控制功能,能保证数据不丢失、无差错送达。
5.一对一通信;两个套接字唯一标识一条tcp链接,一条tcp链接只有两个端点。
优缺点:
- 传输可靠,tcp具有差错控制功能。
- 拥塞控制、流量控制。
- 传输效率低,因为需要保证可靠传输,会有额外开销。
6/ UDP协议
UDP,用户数据报协议,属于传输层。基于UDP协议的有:TFTP、SNMP、DHCP等。
特点:
- 无连接;通信前无需建立链接。
- 实现简单;无需维护链接。
- 首部开销小;最小只有8byte。
- 没有拥塞控制。
- 不可靠交付;没有差错控制。
- 面向报文;一次向下交付一个完整的报文。
- 支持一对一、一对多、多对多通信。
优缺点:
- 传输效率高。
- 传输不可靠。
7/ 三次握手和四次挥手
tcp建立连接、释放连接的过程分别被称作三次握手、四次挥手。
三次握手:
(我比较懒,就不画图了。下图源自网络,侵删)


四次挥手:
(同上)


8/ 为什么需要第三次握手和第四次挥手
为什么需要第三次握手?
防止“已经失效的连接建立请求报文”到达服务端造成空连接,举个栗子。
- 客户端第一次发出的连接建立请求报文因延迟在网络中滞留了一段时间(并未丢失),客户端未收到来自服务端的确认报文,会进行重传,经过握手之后连接建立,而等到客户端和服务端释放掉此次连接后,那个滞留的连接建立请求报文到达了服务端。
- 服务端并不知道该请求报文是已经废弃的,于是会给客户端发出确认报文。假设没有第三次握手,那么服务端发出连接确认报文给客户端后连接就会建立。
- 客户端不会发送数据给服务端,因为它没有请求;而服务端又会等待客户端发送数据,于是陷入僵局,造成死锁,浪费资源。
- 有了第三次握手,服务端发出对滞留请求报文的确认报文后,客户端不会发出确认报文(客户端不会对确认报文进行确认,这里要与三次握手中的第三次握手区分开),由于服务端没有接受到客户端的确认报文(第三次握手),便知道客户端没有建立tcp连接的请求,就不会等待客户端发送数据。
为什么需要第四次挥手?
因为tcp连接是全双工的,即双方皆可发送/接受数据。
第一次、第二次挥手是关闭客户端到服务端方向的连接,此时连接呈半关闭状态,即服务端还可以向客户端发送数据。
而第三次、第四次挥手就是为了关闭服务端到客户端方向的连接。
9/ 为什么客户端关闭连接前需要等待2MSL时间
这题还有另一种问法:TIME-WAIT状态的作用是什么?(不清楚TIME-WAIT的看上面的图,看下四次挥手中的状态。)
MSL是指为报文最大存活时间。
这里主要有两个原因:
第一个…算了,上图(这幅图也是网上偷来的,侵删)

第二个原因:
可防止滞留的连接建立请求报文出现在本连接中。
客户端在发送了最后一个连接释放确认报文后,等待2MSL时间,可使本链接持续时间内的所有报文都从网络中消失。
可以这样理解:第一个MSL使本连接中的所有报文段消失,第二个MSL使之前滞留的报文段消失。
10/ ARP协议
ARP,地址解析协议,可根据主机或路由器的ip地址找出其mac地址,但源主机和目的主机需要在同一局域网中。
由于MAC帧中的源地址和目的地址都是硬件地址,所以也叫做mac地址**;**由于硬件地址固化在网卡的rom中,所以也叫物理地址;
虽然在网络层以上通信时需要使用ip地址,但在链路层需用mac地址。
每一台主机都有ARP高速缓存,存放该局域网内主机或路由器的ip地址与其mac地址的映射表,该表保持动态更新。
举个栗子:
主机a要给主机b发送分组,但是a的映射表中没有b的mac地址,于是:
1.a广播一条消息:我是a,我的ip地址为***,mac地址为***,我想知道ip地址为***的主机的mac地址。
2.同一局域网中的所有主机接受到消息后,便将ip地址与自己的对照,结果匹配到b主机。
3.b单播一条消息给a,告诉它mac地址,同时将a的ip地址和mac地址存放进自己的映射表中。
4.a收到消息后更新自己的映射表,即将b的mac地址存进映射表。
5.知道b的mac地址后,a给b发送分组。
计算机网络面试知识点总结
1. 基础知识
1.1 3种常见的计算机体系结构划分
OSI分层(7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层):网络接口层、网际层、运输层、应用层。 五层协议(5层):物理层、数据链路层、网络层、运输层、应用层。

每一层的作用如下:
- 物理层:激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体。物理层的任务就是透明地传送比特流。
- 数据链路层:数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
- 网络层:网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能。
- 传输层:构的最高层,直接为用户的应用进程提供服务。
- 运输层的任务是负责向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此运输层具有复用和分用的功能。复用是指多个应用层进程可同时使用运输层的服务,分用是指运输层把收到的信息分别交付给应用层中的相应进程。
- 应用层:为操作系统或网络应用程序提供访问网络服务的接口。
1.2 常见的网络协议
网络层
- IP协议:网际协议
- ICMP协议:Internet控制报文协议
- ARP协议:地址解析协议
- RARP协议:逆地址解析协议
传输层
- UDP协议:用户数据报协议
- TCP协议:传输控制协议
应用层
- FTP:文件传送协议
- Telenet:远程登录协议
- DNS:域名解析协议
- POP3:邮局协议
- HTTP协议
- SMTP:简单邮件传送协议
- SNMP:简单网络管理协议
- TFTP:简单文件传送协议
2. 网际协议IP
IP协议的特点
- 不可靠:并不保证IP数据报能成功地到达目的地。如果发生某种错误,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何可靠性必须由上层提供(如TCP)。
- 无连接:IP并不维护任何关于后续数据报的状态消息,每个连接都是独立的。这也说明,IP数据报可以不按发送顺序接收。
2.1 IP首部
普通的IP首部长20个字节(不包含选项字段),包含协议版本号、首部长度、总长度、唯一标识、TTL、首部检验和、源IP地址和目的IP地址。

- 通过首部长度和总长度字段就可以知道IP数据报中数据内容的起始位置和长度。
- TTL生存时间字段设置了数据报可以经过的最多路由器数。初始值由源主机设置,一旦经过一个处理它的路由器,其值就减一;当该字段的值为0时,数据报就被丢弃。
- 首部检验和字段是根据IP首部计算的检验和码(ICMP、UDP、TCP检验和同时覆盖了首部和数据部分)。
- 如果长度超过了MTU,则要进行分片,根据IP头部的格式,有一个16位的标识,分片的时候会把这个标识复制到所有的分片中去,也就是说同一个IP的分片,他们的标识是一样的;然后3bit标志中有一位是表示是否最后一片,除了最后一片为0,其它片这个标识位都为1;修改IP的长度为分片中实际数据的长度;片偏移量是该片偏移原始数据的位置。 接收端根据 标识,是否为最后一片,各个片的长度,偏移量就可以把分片的包重新组装起来。
2.2 IP地址
IP地址一般有网络号和主机号组成(D类和E类无此分法)。网络号标志主机(或路由器)所连接到的网络,主机号则标志该网络下的主机或路由器。
由于一个路由器至少应当连接到两个网络(这样它才能将IP数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的IP地址。路由器只根据目的站的IP地址的网络号进行路由选择。

上图中的A类、B类、C类地址都是单播地址(一对一通信),是最常用的。网络号字段的最前面有1-4位的类别位。其中有两个特殊的IP地址,主机号全为0的IP地址代表网络地址,主机号全为1的IP地址为广播地址。当向某个网络的广播地址发送消息时,该网络内的所有主机都能收到该广播消息。
A类地址:以0开头,第一个字节范围:0127;
B类地址:以10开头,第一个字节范围:128191;
C类地址:以110开头,第一个字节范围:192223;
D类地址:以1110开头,第一个字节范围为224239;
3个特殊的IP地址
- 255.255.255.255 该IP地址指的是受限的广播地址。受限广播地址与一般广播地址(直接广播地址)的区别在于,受限广播地址之只能用于本地网络,路由器不会转发以受限广播地址为目的地址的分组;一般广播地址既可在本地广播,也可跨网段广播。例如:主机192.168.1.1/30上的直接广播数据包后,另外一个网段192.168.1.5/30也能收到该数据报;若发送受限广播数据报,则不能收到。
- 0.0.0.0 常用于寻找自己的IP地址,例如在我们的RARP,BOOTP和DHCP协议中,若某个未知IP地址的无盘机想要知道自己的IP地址,它就以255.255.255.255为目的地址,向本地范围(具体而言是被各个路由器屏蔽的范围内)的服务器发送IP请求分组。
- 127.0.0.1 127.0.0.0/8被用作回环地址,回环地址表示本机的地址,常用于对本机的测试,用的最多的是127.0.0.1。
2.3 划分子网
划分子网的方法是从主机号借用若干个位作为子网号subnet-id,而主机号host-id 也就相应减少了若干个位。于是两级IP地址在本单位内部就变为三级IP地址:网络号、子网号和主机号。
IP地址 ::= {<网络号>, <子网号>, <主机号>}
子网对外部路由器来说隐藏了内部网络组织的细节,在外部看来,不同子网的主机仍属于同一个网络。
凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号net-id,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。最后就将 IP 数据报直接交付目的主机。
如何正确地区分子网号和主机号是一个问题,这可以通过子网掩码来确定。将网络号和子网号全设为1的IP地址为子网掩码。给定IP地址和子网掩码以后,主机就可以确定IP数据报的目的地是本子网的主机,本网络中其他子网的主机,还是其他网络的主机。
2.4 ARP协议与RARP协议
RAP为IP地址到对应硬件地址之间提供动态映射;RARP则相反。RAP高效运行的关键是由于每个主机上都有一个RAP高速缓存,来存放最近Internet地址到硬件地址之间的映射记录。
ARP协议的工作原理
- 首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
- 当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机 MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有源主机IP地址、源主机MAC地址、目的主机的IP地址。
- 当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC 地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
- 源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到 ARP响应数据包,表示ARP查询失败。
2.5 ICMP(Internet控制报文协议)
ICMP是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息。ICMP报文是在IP数据报内部(IP首部+ICMP报文)被传输的。ICMP报文由类型字段、代码字段、检验和和其他字节组成,前两个字段决定了ICMP报文的类型。
ICMP地址掩码请求,用于无盘系统在引导过程中获取自己自己的子网掩码。该ICMP报文的类型字段为17或18,代码字段为0,并返回32位子网掩码。
ICMP端口不可达差错,如果收到一份UDP数据报而目的端口与某个正在使用的进程不相符,那么UDP返回一个ICMP不可达报文。ICMP报文必须包括生成差错报文的数据报IP首部,还必须至少包括跟在该IP首部后面的前8个字节。
2.6 ping程序
ping程序的目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。它只利用ICMP回显请求和回显应答报文,而不经过传输层。
ping 127.0.0.1环回地址时,如果不能ping通说明当前机器的TCP/IP协议栈有问题,127本身是一个虚接口,任何时候都是直接上交到内核中处理的。
ping 192.168.1.X 本机的以太网地址,则是测试本机的网络适配器(就是网卡啦),一般是以太网驱动程序。 ping这两个地址时你会发现,但使用wireshark抓包时,是没有ICMP的回显请求发出的,这说明这两个ping程序是不会发送到网络中的(只在局域网中)。
ping 同一网段中的网络地址,不通则说明网络线路出现了故障,如果网络中还存在路由器,则应该先ping路由器在本网络的地址,不通则是本机和路由器之间的线路有问题。通了,则再ping路由器所在目标计算机网络所在网段的端口IP地址,不通则说明了路由器出现了故障,通了就再ping目标主机的IP地址。
如果ping www.baidu.com等网络地址ping不通时,则说明本机的DNS服务器设置错误。
3. TCP协议
3.1 TCP服务的特点
TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着应用程序在使用TCP协议之前,必须先建立TCP连接。在传送数据完毕后,必须释放已经建立的TCP连接。TCP通过以下方式来提供可靠性:
- 应用数据被分割成TCP认为最适合发送的数据块。
- 超时重传。当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到确认,将重发这个报文段。
- 当TCP收到发自TCP连接另一端的数据后,他将发送一个确认。该确认通常将推迟几分之一秒。
- TCP将保持他首部和数据的检验和。
- 由于IP数据报的到达可能会失序,因此TCP报文段的到达也可能失序。如有必要,TCP将对收到的数据进行重新排序,并以正确的顺序交付给应用层。
- 既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。
- 流量控制。防止较快主机致使较慢主机的缓冲区溢出。
3.2 TCP的首部

TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中各字段的作用。因此,只有弄清TCP首部各字段的作用才能掌握TCP的工作原理。TCP报文首部固定部分各字段的意义如下:
- 源端口和目的端口 各占两字节,分别写入源端口号和目的端口号。TCP的分用也是通过端口实现的。
- 报文段序号 占4字节。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置,首部中的序号字段值则是指本报文所发送的数据的第一个字节的序号。
- 确认号 期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则表明到序号N-1为止的所有数据都已正确收到。
- 数据偏移 指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,实际上指出了TCP报文段的首部长度。
- 6个控制位 确认ACK:TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。 复位RST:当RST=1时,表明TCP连接中出现严重错误,必须释放连接,然后再重新建立运输连接。 同步SYN:在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使用SYN=1和ACK=1. 终止FIN:用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
- 窗口 窗口字段明确指出了现在允许对方发送的数据量,该值经常在动态变化着。例如,设确认号是701,窗口字段是1000。这就表明从701算起,发送此报文段的一方还有接收1000个字节数据的接收缓存空间。
3.3 TCP连接的建立与终止过程

三次握手 第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
四次握手 与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。 第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可以接受数据。 第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1。 第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。(与SYN相同,一个FIN占用一个序号)。 第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。
TCP的半关闭 TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力,这就是半关闭。为了使用这一特性,编程接口必须为应用程序提供一中方式来说明“我们已经完成了数据传送,因此发送一个文件结束(FIN)给另一端,但我还想接收另一端的数据,直到它给我发送文件结束FIN”。
2MSL等待状态 TIME_WAIT状态也称为2MSL等待状态。每个具体TCP实现必须选择一个报文段最大生存时间MSL,它是任何报文段被丢弃前在网络内的最长时间(RFC指出其为2min,实现中常用值还有30s和1min)。当TCP执行一个主动关闭,并发回最后一个ACK,该连接必须在TIME_WAIT状态停留的2倍的MSL;这样可让TCP再次发送最后的ACK以防这个ACK丢失(另一方超时并重发最后的FIN)。
3.4 使用UDP和TCP的场景
UDP的典型应用:实时性,不需要重传机制,局域网(本身网络稳定性高)
- UDP适合于这样的进程:需要简单的请求-响应通信,而较少考虑流量控制和差错控制。对于需要传送成块数据的进程(如FTP)则不适合使用UDP。
- UDP适合于具有内部流量控制和差错控制机制的进程,如简单文件传输协议TFTP。
- 对多播来说,UDP是一个合适的传输协议。
- UDP常用于交互实时应用,以避免接收报文之间的不一致延时。
- UDP可用于管理进程,如SNMP。
TCP对应的协议:
- FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。
- Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。
- SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。
- POP3:它是和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)。
- HTTP协议:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP对应的协议:
- DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。 DNS工作原理:当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。
- SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
- TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
4. 超文本传送协议HTTP
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。HTTP协议的主要特点可概括如下:
- 支持客户/服务器模式。
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
- 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
4.1 浏览网页的过程
浏览网页的过程其实就是浏览器作为一个浏览的“客户端”,向服务器端发送了 一次请求,把服务器端的文件“抓”到本地,再进行解释、展现。
- 使用统一资源定位符URL来标志万维网上的各种文档,并使每一个文档在整个因特网的范围内具有唯一的标识符URL。
- 通过超文本传送协议HTTP来实现万维网上各种连接,使用TCP连接进行可靠的传送。
- 使用超文本标记语言HTML使得网页设计者可以很方便地用链接从本页面的某处链接到任意网页,并在自己主机屏幕上显示。
4.2 统一资源定位符URL
URL是用来表示从因特网上得到的资源位置和访问这些资源的方法。URL给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。只要能够对资源定位,系统就可以对资源进行各种操作,如存取、更新、替换和查找其属性。URL相当于一个文件名在网络范围的扩展。因此,URL是与因特网相连的机器上的任何可访问对象的指针。由于访问不同对象使用的协议不同,URL还能之处读取某个对象时所使用的协议。URL的一般形式为:
<协议>://<主机>:<端口>/<路径>
协议是指用哪种协议获取该万维网文档,如http,ftp;主机是指该网络文档所在主机的域名;端口和路径有时可以省略。对万维网的网点访问使用HTTP协议,HTTP的默认端口号是80,通常可省略。若在省略文件的路径,则URL就指到因特网上的某个主页。如: www.baidu.com。
4.3 HTTP请求报文
HTTP规定在HTTP客户与HTTP服务器之间的每次交互,都由一个ASCII码串构成的请求和一个“MIME-like”的响应组成,HTTP报文通常都使用TCP连接传送。HTTP有两类报文:请求报文(从客户向服务器发送请求报文)和响应报文(从服务器到客户的回答)。HTTP请求报文和响应报文都是由三部分组成,两种报文格式的区别就是开始行不同。
- 开始行 用于区分是请求报文还是响应报文。开始行在两种报文中分别叫请求行和状态行。
- 首部行 用来说明浏览器或报文主题的一些信息。
- 实体主体 在请求报文中一般不用该字段,而在响应报文中也可能没有该字段。
请求行只有三个内容,即方法、请求资源URL和HTTP的版本。下表给出了请求报文中常用的几种方法。 GET:请求读取由URL所标志的信息。 POST:给服务器添加信息(如注释)。 HEAD:请求获取由Request-URI所标识的资源的响应消息报头。 PUT:在给定的URL下存储一个文档。 DELETE:删除给定的URL所标志的资源。
GET方法,在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源。POST方法要求被请求服务器接受附在请求后面的数据,常用于提交表单。POST与GET的区别如下:
- Get是从服务器上获取数据,Post是向服务器传送数据。
- Get是把参数数据队列加到提交表单的Action属性所指向的URL中,值和表单内各个字段一一对应,在URL中可以看到。
- Get传送的数据量小,不能大于2KB;post传送的数据量较大,一般被默认为不受限制。
- 根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
- 所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
- 幂等的意味着对同一URL的多个请求应该返回同样的结果。
GET http://www.bilibili.com/video/douga.html HTTP/1.1
下面是一个请求报文的例子

请求报文
HTTP响应报文
在接收和解释请求消息后,服务器返回一个HTTP响应消息。HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 1xx:指示信息–表示请求已接收,继续处理 2xx:成功–表示请求已被成功接收、理解、接受 3xx:重定向–要完成请求必须进行更进一步的操作 4xx:客户端错误–请求有语法错误或请求无法实现 5xx:服务器端错误–服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
5. DNS域名系统
DNS是一中用于TCP/IP应用程序的分布式数据库,它提供域名到IP地址的转换。举例来说,如果你要访问域名math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69 。
5.1 因特网的域名结构
因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。每一个域名都是有标号(label)序列组成,而各标号之间用点(小数点)隔开。如mail.cctv.com,这是中央电视台用于手法电子邮件的计算机的域名,它由三个标号组成,其中标号com是顶级域名,标号cctv是二级域名,标号mail是三级域名。
5.2 域名服务器
如果采用上述的树状结构,每一个节点都采用一个域名服务器,这样会使得域名服务器的数量太多,使域名服务器系统的运行效率降低。所以在DNS中,采用划分区的方法来解决。
一个服务器所负责管辖(或有权限)的范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机到域名IP地址的映射。总之,DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区是DNS服务器实际管辖的范围。区 <= 域。
因特网上的DNS服务器也是按照层次安排的。每一个域名服务器只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为下面四种不同的类型。
- 根域名服务器:最高层次的,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
- 顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
- 权限域名服务器:负责一个“区”的域名服务器。
- 本地域名服务器:本地服务器不属于下图的域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
5.3 域名的解析过程
主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
下面举一个例子演示整个查询过程: 假定域名为m.xyz.com的主机想知道另一个主机y.abc.com的IP地址。例如,主机m.xyz.com打算发送邮件给y.abc.com。这时就必须知道主机y.abc.com的IP地址。下面是上图a的几个查询步骤:
- 主机m.abc.com先向本地服务器dns.xyz.com进行递归查询。
- 本地服务器采用迭代查询。它先向一个根域名服务器查询。
- 根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
- 本地域名服务器向顶级域名服务器dns.com进行查询。
- 顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。
- 本地域名服务器向权限域名服务器dns.abc.com进行查询。
- 权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。
- 本地域名服务器最后把查询结果告诉m.xyz.com。
整个查询过程共用到了8个UDP报文。
为了提高DNS查询效率,并减轻服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。例如,在上面的查询过程中,如果在m.xyz.com的主机上不久前已经有用户查询过y.abc.com的IP地址,那么本地域名服务器就不必向根域名服务器重新查询y.abc.com的IP地址,而是直接把告诉缓存中存放的上次查询结果(即y.abc.com的IP地址)告诉用户。
6. 面试题精选
例题1:TCP和UDP有什么区别?
TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器批次交换数据前,必须建立TCP连接之后才能传输数据。TCP提供超时重传、丢弃重复数据、流量控制等功能,保证数据能从一端传到另一端。
UDP是用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,不保证数据能够到达目的地。由于UDP在传输数据前不用在客户和服务器之间建立连接,且没有超时重传等机制,故而传输速度很快。
例题2:TCP的可靠性如何保证?
TCP的可靠性是通过顺序编号和确认(ACK)来实现的。
例题3:在浏览器中输入www.baidu.com后执行的全部过程
- 客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
- 在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
- 客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
- 客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。
例题4:牛客网由于访问客户量的增长,原来的服务器不足以维持请求,经常发生宕机的突发情况,因此为了解决这个问题,CEO决定新增加几台服务器,那么问题是这些接入WEB服务器第一次被访问到时,不同协议的发生顺序是下面中的(ARP -> DNS -> HTTP)。
解析:当你给WEB服务器接上网线的时候,它会自动发送一条ARP信息,使得接入网关能找的到它;网关上会形成一条MAC地址到IP地址的映射记录。如用户在浏览器中输入域名,如本地DNS缓存中没有,必然会进行一次DNS查询,以确定该域名的IP地址。获得DNS对应的IP地址以后,使用HTTP协议访问web服务器(不考虑TCP三次握手建立连接的阶段)。
例题5:将一个C类网络划分为3个子网,每个子网最少要容纳55台主机,使用的子网掩码是?(2017乐视实习生)
答:255.255.255.192
例题5:IP路由表包括哪几项内容?
IP路由表通常包括三项内容,他们是子网掩码、目的网络地址、到目的网络路径上“下一个”路由器的地址。
计算机网络面试题

计算机网络体系结构
OSI,TCP/IP,五层协议的体系结构,以及各层协议
OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。
五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。

每一层的作用如下:
**物理层:**通过媒介传输比特,确定机械及电气规范(比特Bit)
数据链路层:将比特组装成帧和点到点的传递(帧Frame)
网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
会话层:建立、管理和终止会话(会话协议数据单元SPDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层:允许访问OSI环境的手段(应用协议数据单元APDU)


每一层的协议如下:
物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关)
数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

网络层
IP(网络之间互连的协议)
互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(英语:IP Address),是分配给用户上网使用的网际协议(英语:Internet Protocol, IP)的设备的数字标签。常见的IP地址分为IPv4与IPv6两大类,但是也有其他不常用的小分类。
你知道IP数据报的格式嘛

- 版本 : 有 4(IPv4)和 6(IPv6)两个值;
- 首部长度 : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为首部固定长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。
- 区分服务 : 用来获得更好的服务,一般情况下不使用。
- 总长度 : 包括首部长度和数据部分长度。
- 生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
- 协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。
- 首部检验和 :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。
- 标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
- 片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节
IP地址分为哪几类?简单说一下各个分类
由两部分组成,网络号和主机号,其中不同分类具有不同的网络号长度,并且是固定的。
IP 地址 ::= {< 网络号 >, < 主机号 >}
IP地址分为五大类:A类、B类、C类、D类和E类,如下图所示:

IP地址的指派范围:

一般不使用的特殊IP地址:

ARP(地址解析协议)
ARP是地址解析协议,简单语言解释一下工作原理。
ARP 实现由 IP 地址得到 MAC 地址。

1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。
3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。

运输层
TCP (传输控制协议)
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
CP协议如何来保证传输的可靠性
TCP提供一种面向连接的、可靠的字节流服务。其中,面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信;而字节流服务意味着两个应用程序通过TCP链接交换8bit字节构成的字节流,TCP不在字节流中插入记录标识符。
对于可靠性,TCP通过以下方式进行保证:
- 数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据;
- 对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;
- 丢弃重复数据:对于重复数据,能够丢弃重复数据;
- 应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;
- 超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
- 流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。
TCP了解吗,说一下滑动窗口
窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。
发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。
接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。

TCP的拥塞控制怎么实现的
计算机网络中的带宽、交换结点中的缓存及处理机等都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏,这种情况就叫做拥塞。拥塞控制就是 防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。
如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。

注意,拥塞控制和流量控制不同,前者是一个全局性的过程,而后者指点对点通信量的控制。拥塞控制的方法主要有以下四种: A、慢启动 B、拥塞避免 C、快重传 D、快恢复
发送方需要维护一个叫做拥塞窗口(cwnd)的状态变量,注意拥塞窗口与发送方窗口的区别:拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。
为了便于讨论,做如下假设:
A、接收方有足够大的接收缓存,因此不会发生流量控制;
B、虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。
- 慢启动与拥塞避免
慢启动: 不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。 拥塞避免: 拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,这样拥塞窗口按线性规律缓慢增长。

发送的最初执行慢开始,令 cwnd = 1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段数量为:2、4、8 …
注意到慢开始每个轮次都将 cwnd 加倍,这样会让 cwnd 增长速度非常快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能性也就更高。设置一个慢开始门限 ssthresh,当 cwnd >= ssthresh 时,进入拥塞避免,每个轮次只将 cwnd 加 1。
如果出现了超时,则令 ssthresh = cwnd / 2,然后重新执行慢开始。
- 快重传与快恢复
快重传: 快重传要求接收方在收到一个 失序的报文段 后就立即发出 重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。 快恢复: 快重传配合使用的还有快恢复算法,当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半,但是接下去并不执行慢开始算法:因为如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。所以此时不执行慢开始算法,而是将cwnd设置为ssthresh的大小,然后执行拥塞避免算法。

在接收方,要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认。例如已经接收到 M1 和 M2,此时收到 M4,应当发送对 M2 的确认。
在发送方,如果收到三个重复确认,那么可以知道下一个报文段丢失,此时执行快重传,立即重传下一个报文段。例如收到三个 M2,则 M3 丢失,立即重传 M3。
在这种情况下,只是丢失个别报文段,而不是网络拥塞。因此执行快恢复,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此时直接进入拥塞避免。
慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。
TCP流量控制的流程图:

讲讲TCP握手的三次流程

SYN:同步SYN(SYNchronization),在连接建立使用来同步序号。SYN置1表示这是一个连接请求或连接接受请求。
ACK:确认ACK(ACKnowledgment),仅当ACK=1时确认号字段才有效。TCP规定,在连接建立后所有的报文段都必须把ACK置1。
seq: 序号。
ack: 确认号。
- 最初两端的TCP进程都处于CLOSE(关闭)状态。 上图中A主动打开连接,B被动打开连接。
- B打开连接后处于LISTEN(监听状态),等待客户的连接请求。
- A向B发送请求报文,SYN=1,ACK=0,选择一个初始序号seq=x。
- B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为ack= x+1,同时也选择一个初始的序号 seq=y。
- A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为ack= y+1,序号为 seq=x+1。
- B 收到 A 的确认后,连接建立。
讲讲TCP的四次挥手过程

数据传输结束后,通信的双方都可释放连接。 此处为A的应用进程先向其TCP发出连接释放报文段,但是A结束TCP连接的时间要比B晚一些。
FIN: 终止FINs,用来释放一个连接。当FIN等于1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
ACK: 确认ACK(ACKnowledgment),仅当ACK=1时确认号字段才有效。TCP规定,在连接建立后所有的报文段都必须把ACK置1。
seq: 序号。
ack: 确认号。
以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。
- A 发送连接释放报文,FIN=1。
- B 收到之后发出确认,此时 TCP 属于半关闭状态,B 能向 A 发送数据但是 A 不能向 B 发送数据。
- 当 B 不再需要连接时,发送连接释放报文,FIN=1。
- A 收到后发出确认,进入 TIME-WAIT 状态,等待 2 MSL(最大报文存活时间)后释放连接。
- B 收到 A 的确认后释放连接。
TCP四次挥手的原因
四次挥手的原因
CLOSE-WAIT
客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。
TIME-WAIT
客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。
为什么A在TIME-WAIT状态必须等待2MSL的时间呢?
这么做有两个理由:
- 为了保证A发送的最后一个ACK报文段能够到达B。 A发送的这个ACK报文段有可能丢失,如果 B 没收到 A 发送来的确认报文,那么A就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。
- 防止“已经失效的连接请求报文段”出现在本链接中。 A在发送完最后一个ACK报文段后,再经过时间2MSL,就可以使本连接的时间内所产生的所有报文段都从网络中消失。这样下一个新的连接中就不会出现这种旧的连接请求报文段。
为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?
这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的连接请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,**它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,**所以你可能未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。
UDP(用户数据报协议)
用户数据包协议(英语:User Datagram Protocol,缩写:UDP),又称用户数据包协议,是一个简单的面向数据报的传输层协议。该协议由 David P. Reed 在 1980 年设计且在RFC 768中被规范。 在TCP/IP模型中,UDP为网络层以上和应用层以下提供了一个简单的接口。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验(字段)
TCP和UDP的区别与联系
- TCP面向连接,传输数据之前要需要建立会话。UDP是无连接的。
- TCP提供可靠传输,保证数据不丢包、不重复且按顺序到达;UDP只尽努力交付,不保证可靠交付
- TCP提供了拥塞控制;UDP不提供
- TCP是面向字节流的;UDP面向报文。
- TCP只支持点到点通信;UDP支持一对一、一对多、多对多的交互通信。
- TCP首部开销大20字节,UDP首部开销小8字节。
- UDP的首部格式

-
- TCP的首部格式

TCP和UDP分别对应的常见的端口以及应用层协议

1). TCP对应的应用层协议
- FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。
- Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。
- SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。
- POP3:它是和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)。
- HTTP:从Web服务器传输超文本到本地浏览器的传送协议。
2). UDP对应的应用层协议
- DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
- SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
- TFTP(Trival File Transfer Protocal):简单文件传输协议,该协议在熟知端口69上使用UDP服务。
应用层
HTTP(超文本传输协议)
超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议[1]。HTTP是万维网的数据通信的基础。
HTTP协议定义了浏览器(即互联网客户进程)怎样向万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务的应用层协议,它是万维网能够可靠的交付文件的重要基础。
- HTTP构建于TCP/IP协议之上,默认端口号是80
- HTTP是无连接无状态的
HTTP 协议包括哪些请求?
HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,具体介绍如下:
- GET:向特定的资源发出请求。
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
- OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*‘的请求来测试服务器的功能性。
- HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
- PUT:向指定资源位置上传其最新内容。
- DELETE:请求服务器删除Request-URI所标识的资源。
- TRACE:回显服务器收到的请求,主要用于测试或诊断。
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 虽然HTTP的请求方式有8种,但是我们在实际应用中常用的也就是get和post,其他请求方式也都可以通过这两种方式间接的来实现。
摘自:https://www.cnblogs.com/web100/p/http-8-request.html
简述HTTP中GET和POST的区别
GET与POST是我们常用的两种HTTP Method,二者之间的区别主要包括如下五个方面:
(1). 从功能上讲,GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源;
(2). 从REST服务角度上说,GET是幂等的,即读取同一个资源,总是得到相同的数据,而POST不是幂等的,因为每次请求对资源的改变并不是相同的;进一步地,GET不会改变服务器上的资源,而POST会对服务器资源进行改变;
(3). 从请求参数形式上看,GET请求的数据会附在URL之后,即将请求数据放置在HTTP报文的 请求头 中,以?分割URL和传输数据,参数之间以&相连。特别地,如果数据是英文字母/数字,原样发送;否则,会将其编码为 application/x-www-form-urlencoded MIME 字符串(如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII);而POST请求会把提交的数据则放置在是HTTP请求报文的 请求体 中。
(4). 就安全性而言,POST的安全性要比GET的安全性高,因为GET请求提交的数据将明文出现在URL上,而且POST请求参数则被包装到请求体中,相对更安全。
(5). 从请求的大小看,GET请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的。
常见的HTTP状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 1xx:指示信息–表示请求已接收,继续处理 2xx:成功–表示请求已被成功接收、理解、接受 3xx:重定向–要完成请求必须进行更进一步的操作 4xx:客户端错误–请求有语法错误或请求无法实现 5xx:服务器端错误–服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
HTTPS(超文本传输安全协议)
超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。
Http和Https的区别
Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL()上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。二者之间存在如下不同:
- 端口不同:Http与Http使用不同的连接方式,用的端口也不一样,前者是80,后者是443;
- 资源消耗:和HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;
- 开销:Https通信需要证书,而证书一般需要向认证机构购买;
- Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。
DNS
DNS是一中用于TCP/IP应用程序的分布式数据库,它提供域名到IP地址的转换。举例来说,如果你要访问域名http://math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69 。
域名的解析过程
DNS域名系统,简单描述其工作原理。
当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。
- 客户机向其本地域名服务器发出DNS请求报文
- 本地域名服务器收到请求后,查询本地缓存,假设没有该记录,则以DNS客户的身份向根域名服务器发出解析请求
- 根域名服务器收到请求后,判断该域名所属域,将对应的顶级域名服务器的IP地址返回给本地域名服务器
- 本地域名服务器向顶级域名服务器发出解析请求报文
- 顶级域名服务器收到请求后,将所对应的授权域名服务器的IP地址返回给本地域名服务器
- 本地域名服务器向授权域名服务器发起解析请求报文
- 授权域名服务器收到请求后,将查询结果返回给本地域名服务器
- 本地域名服务器将查询结果保存到本地缓存,同时返回给客户机
摘自:https://www.jianshu.com/p/4bb72930231b
计算机网络安全
对称加密与非对称加密
对称密钥加密,又称私钥加密,即信息的发送方和接收方用同一个密钥去加密和解密数据。
- 它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难且较为不安全。
- 进行一对一的双向保密通信。
- 常见的对称加密算法:DES,AES等。

非对称密钥加密,又称公钥加密,它需要使用一对密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。
- 从功能角度而言非对称加密比对称加密功能强大且较为安全,但加密和解密速度却比对称密钥加密慢得多。
- 多对一的单向保密通信。
- 最常用的非对称加密算法:RSA
由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

数字签名
数字签名必须保证实现以下三点功能:
- 报文鉴别。即接受者能够核实发送者对报文的签名。
- 报文的完整性。即接受者确信所收到的数据和发送者发送的完全一样而没有被篡改过。
- 不可否认。发送者事后不能抵赖对报文的签名。
数字签名图解:

该图只是进行了数字签名并没有对报文进行加密。
数字签名过程:A用私钥SKA对明文X进行D运算签名成为密文DSKA,B用A的公钥PKA对密文DSKA进行E运算还原出明文X。
那么这个过程是如何满足报文鉴别、报文的完整性、不可否认三个特点的呢?
- 只有A拥有私钥SKA,只有他能生成密文DSKA,所以只要B用A的公钥能成功还原出可读的明文X就说明密文DSKA一定是A发来的。这里体现出报文的鉴别的特点。
- 同理如果中途密文DSKA被篡改,那么篡改者没有A的私钥SKA来对篡改过后的报文进行加密,那么B对被篡改过的报文进行解密时就会得到不可读的明文,就知道收到的报文被修改过了。这里体现了报文的完整性的特点。
- 若A抵赖曾发过该报文给B,B可把X和密文DSKA出示给进行公证的第三者,第三者很容易用PKA去证实A确实发送了X给B。这里体现了不可否认的特点。
具有保密性的数字签名图解:

其他
cookie和session区别?
Cookie和Session都是客户端与服务器之间保持状态的解决方案,具体来说,cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。
应用场景 日常登录一个网站,今天输入用户名密码登录了,第二天再打开很多情况下就直接打开了。这个时候用到的一个机制就是cookie。 session的一个场景是购物车,添加了商品之后客户端处可以知道添加了哪些商品,而服务器端如何判别呢,所以也需要存储一些信息,这里就用到了session。 Cookie 通俗讲,Cookie是访问某些网站以后在本地存储的一些网站相关的信息,下次再访问的时候减少一些步骤。另外一个更准确的说法是:Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。 Cookie的主要内容包括:名字,值,过期时间,路径和域。使用Fiddler抓包就可以看见,比方说我们打开百度的某个网站可以看到Headers包括Cookie,如下: BIDUPSID: 9D2194F1CB8D1E56272947F6B0E5D47E PSTM: 1472480791 BAIDUID: 3C64D3C3F1753134D13C33AFD2B38367:FG ispeed_lsm: 2 MCITY: -131: pgv_pvi: 3797581824 pgv_si: s9468756992 BDUSS: JhNXVoQmhPYTVENEdIUnQ5S05xcHZMMVY5QzFRNVh5SzZoV0xMVDR6RzV-bEJZSVFBQUFBJCQAAAAAAAAAAAEAAACteXsbYnRfY2hpbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALlxKVi5cSlYZj BD_HOME: 1 H_PS_PSSID: 1423_21080_17001_21454_21408_21530_21377_21525_21193_21340 BD_UPN: 123253 sug: 3 sugstore: 0 ORIGIN: 0 bdime: 0 可以看见是key, value的形式,也就是我们说的对应着的名字,值。过期时间是可以设置的,如果不设置,则浏览器关掉就消失了,是存储在内存当中的,否则就是按照我们设置的时间来存储在硬盘上的,当过期后自动清除,比方说我们开机关机关闭再打开浏览器后他都会还存在,前者称之为Session cookie 又叫 transient cookie,后者称之为Persistent cookie 又叫 permenent cookie。路径和域就是对应的域名,a网站的cookie自然不能给b用。 Session Session是存在服务器的一种用来存放用户数据的类HashTable结构。 当浏览器 第一次发送请求时,服务器自动生成了一个HashTable和一个Session ID用来唯一标识这个HashTable,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable。 摘自http://caibaojian.com/477.html 一般这个值会有一个时间限制,超时后毁掉这个值,默认是20分钟。 Session的实现方式和Cookie有一定关系。试想一下,建立一个连接就生成一个session id,那么打开几个页面就好几个了,这显然不是我们想要的,那么该怎么区分呢?这里就用到了Cookie,我们可以把session id存在Cookie中,然后每次访问的时候将Session id带过去就可以识别了,是不是很方便~ 摘自:https://www.cnblogs.com/wswang/p/6062461.html
(3).Session 与 Cookie 的对比
实现机制:Session的实现常常依赖于Cookie机制,通过Cookie机制回传SessionID;
大小限制:Cookie有大小限制并且浏览器对每个站点也有cookie的个数限制,Session没有大小限制,理论上只与服务器的内存大小有关;
安全性:Cookie存在安全隐患,通过拦截或本地文件找得到cookie后可以进行攻击,而Session由于保存在服务器端,相对更加安全;
服务器资源消耗:Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。
存放位置:cookie数据存放在客户的浏览器上,session数据放在服务器上。
在浏览器中输入www.baidu.com后执行的全部过程
客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。
了解交换机、路由器、网关的概念,并知道各自的用途
- 物理层使用的中间设备叫做转发器。
- 数据链路层使用的中间设备叫做网桥或桥接器。
- 网络层使用的中间设备叫做路由器。
- 在网络层以上使用的中间设备叫做网关。
牛客网由于访问客户量的增长,原来的服务器不足以维持请求,经常发生宕机的突发情况,因此为了解决这个问题,CEO决定新增加几台服务器,那么问题是这些接入WEB服务器第一次被访问到时,不同协议的发生顺序是下面中的(ARP -> DNS -> HTTP)。
当你给WEB服务器接上网线的时候,它会自动发送一条ARP信息,使得接入网关能找的到它;网关上会形成一条MAC地址到IP地址的映射记录。如用户在浏览器中输入域名,如本地DNS缓存中没有,必然会进行一次DNS查询,以确定该域名的IP地址。获得DNS对应的IP地址以后,使用HTTP协议访问web服务器(不考虑TCP三次握手建立连接的阶段)。
计算机网络知识梳理
第一章、计算机网络体系结构
1.计算机网络的定义
计算机网络就是一些互连的,自治的计算机系统的集合。
2.计算机网络的组成
(1)物理组成:硬件(
由主机、通信处理剂、通信线路和交换设备组成),软件(实现资源共享的软件和方便用户使用的工具软件),协议(一种规则); (2)工作方式组成:边缘部分(由所有连接在互联网上,供用户直接使用的主机组成,用来进行通信和资源共享),核心部分(由大量的网络和连接这些网络的路由器组成,它为边缘部分提供连通性和交换服务); (3)功能组成:通信子网(由各种传输介质、通信设备和相应的网络协议组成,为网络提供数据传输、交换和控制能力,实现互联网计算机之间的数据通信),资源子网(由主机、终端以及各种软件资源、信息资源组成,负责全网的数据处理业务,向网络用户提供各种网络资源与服务)。 注意:通信子网包括物理层,数据链路层和网络层
3.计算机网络的功能
数据通信:计算机网络
最基本和最重要的功能,包括连接控制、传输控制、差错控制、流量控制、路由选择、多路复用等子功能; 资源共享:包括数据资源、软件资源以及硬件资源; 分布式处理:当计算机网络中某个计算机系统负载过重时,可以将其处理的任务传送给网络中的其他计算机系统进行处理,利用空闲计算机资源提高整个系统的利用率; 信息综合处理:将分散在各地计算机中的数据资料进行集中处理或分级处理; 负载均衡:将工作任务均衡地分配给计算机网络中的各台计算机; 提高可靠性:计算机网络中的各台计算机可以通过网络互为替代机。
4.计算机网络的分类
(1)按分布范围分类:广域网、城域网、局域网、个人区域网; (2)按拓扑结构分类:星形网络、总线型网络、环形网络、网状型网络; (3)按传输技术分类:广播式网络、点对点网络; (4)按使用者分类:公用网、专用网; (5)按数据交换技术分类:电路交换网络、报文交换网络、分组交换网络;
5.计算机网络的标准化工作及相关组织
互联网草案–>建议标准(RFC文档)–>草案标准–>互联网标准。 ISO 、ITO 、IEEE
6. 实体、对等层、对等实体
实体:任何可发送或接收信息的硬件或软件进程,通常是一个特定的软件模块; 对等层:不同机器上的同一层; 对等实体:同一层上的实体。
7.协议
协议是控制两个对等实体进行通信的规则,也就是水平的。 协议的组成包括:
语义(对构成协议的元素含义的解释),语法(数据与控制信息的结构或格式)和同步(规定了协议的控制顺序)。
8.接口
接口又称
服务访问点,没有接口就不能提供服务; SDU、PCI、ICI、PDU、IDU。
9.服务
服务指下层为相邻上层提供的功能调用。 协议是水平的,而服务是垂直的。 服务主要包括以下三类: (1)面向连接的服务(
建立连接、使用连接、释放连接)和面 向无连接的服务(把每个带有目的地址的包传送到线路上,由系统选定路线进行传输); (2)有应答服务(接收方收到数据后向发送方给出相应的应答) 和无应答服务(接收方收到数据后不自动给出应答); (3)可靠服务(网络具有检错、纠错、应答机制)和不可靠服务(尽力而为);
10.面向连接的服务和面向无连接服务的对比
面向连接的服务: 优点:可靠信息流(
只要被接收的都是正确的); 信息回复确认(每收到一条信息就回复一次,若出错则告诉发送方,要求重传) 缺点:占用通信信道 面向无连接的服务: 优点:不占用通信信道 缺点:信息流可能丢失(在传输过程中,信息可能丢失,对方可能收不到信息); 信息无回复确认(收到信息就收下,不告诉对方已经收到)。
11.计算机网络的性能指标
(1)时延:发送时延(传输时延)+传播时延+处理时延+排队时延; (2)时延带宽积:传播时延带宽; (3)往返时间:从发送方发送数据开始,到发送方收到来自接收方的确认消息为止 (4)利用率:信道利用率(某信道有百分之几的时间时被利用的)+网络利用率(全网络的信道利用率的平均值)。
第二章、物理层
1.信号
信号是数据(
传送信息的实体)的电气或电磁的表现。 信道上传送的信号可以分为基带信号和宽带信号。 基带信号是将数字信号0和1直接用两种不同的电压表示,然后传送到数字信道上去传输,称为基带传输。 宽带信号是将基带信号进行调制后形成模拟信号,然后再传送到模拟信道上去传输,称为宽带传输。 一句话:基带对应数字信号,宽带对应模拟信号。 注意:宽带传输==频带传输(in 考研)。
2.信源、信道、信宿
信源:通信过程中产生和发送信息的设备或计算机。 信道:信息传送的道路,也就是信号的传输媒质,分为有线信道和无线信道。 信宿:通信过程中接收和处理信息的设备或计算机。
3.速率、波特、码元
速率就是单位时间内传输的数据量,可用波特率和比特率来描述。 波特率:又称
码元传输速率,表示单位时间内数字通信系统所能传输的码元个数。 比特率:又称信息传输速率,表示单位时间内数字通信系统所能传输的二进制码元个数,即比特数,单位为bit/s。
4.带宽
在计算机网络中,带宽是用来表示
网络的通信线路所能传送数据的能力,表示单位时间内从网络中的某一点到另一点所能通过的最高数据率。 此时,带宽的单位不再是赫兹(Hz),而是bit/s。
5.奈奎斯特定理
由来:寻找在保证不出现码间串扰的条件下的码元的最大传输速率。 (
码间串扰:具体的信道所能通过的频率范围总是有限的,所以信号中的大部分高频分量就过不去了,这样在传输共享中会衰减,导致在接收端收到的信号的波形就失去了码元之间的清晰界限,这种现象就是码间串扰) 奈奎斯特定理: $$C_{max}=f_{采样}*log_2N(bit/s)$$ 其中,f代表理想低通信道的带宽,N表示每个码元的离散电平的数目。
6.区分低通信道和带通信道
低通信道就是信号的频率只要不超过某个上限值,都可以不失真地通过信道(有上限,无下限),理想低通信道的最高码元传输速率是每秒2个码元;
带通信道既有上限也有下限,,理想带通信道的最高码元传输速率是每秒1个码元。
7.香农定理
公式: $$C_{max}=W*log_2(1+S/N)(bit/s)$$ 其中,
W为信道的带宽,$S/N$为信噪比。 想要提高信息的传输速率,需要增大信噪比或者提高带宽(注意:仅仅提高改善编码不可能超过香农公式算出的速率)。
8.对比奈奎斯特定理和香农定理
奈奎斯特定理: (1)指出了码元的传输速率是受限的,不能任意提高,否则在接收端就无法判定码元是0还是1(码间串扰); (2)是在理想条件下推出来的(无噪声); (3)并没有对信息传输速率给出限制(可以无限大,只要编码技术足够好)。 香农定理: (1)给出了信息传输速率的极限值,只要传输带宽(Hz)和信噪比确定了,传输速率也就确定了; (2)有噪声。
9.编码与调制
编码:将模拟数据或数字数据转换为数字信号的过程。 调制:将模拟数据或数字数据转化为模拟信号的过程。
9.1调制
(1)数字数据调制为模拟信号: 1)带通调制:将基带信号的频带范围搬移到较高的频段以便在信道中传输(3种方法:调频,调幅,调相); 2)基带调制:改变基带信号的低频成分的波形(仍是基带信号)。 (2)模拟数据调制为模拟信号:(原因) 1)为了实现传输的有效性,可能需要较高的频率; 2)充分利用带宽。
9.2编码
(1)数字数据编码为数字信号: 用于基带信号传输中。 常用编码方式: 1)非归零码; 2)曼彻斯特编码; 3)差分曼彻斯特编码。 (2)模拟数据编码为数字信号: 典型例子就是
脉冲编码调制,有3个步骤:采样、量化、编码。
10.数据传输方式(电路交换、报文交换、分组交换)
(1)电路交换:在通信之前,通信双方建立一条被双方独占的物理通路。 优点: 1)通信时延小; 2)实时性强; 3)有序传输; 4)使用范围广(数字/模拟信号均可传输); 5)控制简单; 6)避免冲突。 缺点: 1)建立连接时间长; 2)信道利用率低; 3)缺乏统一标准(电路交换时,数据之大,不同规格终端难以相互通信,也很难进行差错控制); 4)灵活性差(任一节点出错都需要建立新的连接)。
(2)报文交换:数据交换的单位是报文,报文携带目的地址、源地址等信息;报文交换在交换节点时采用存储转发方式。 优点: 1)无需建立连接(因此不存在连接时延); 2)动态分配线路; 3提高了可靠性; 4)提高线路利用率; 5)提供多目标服务(一个报文可以发送到多个目的地址)。 缺点: 1)由于数据进入交换节点后要经理存储、转发这一过程,从而引起转发时延; 2)报文交换对报文的大小没有限制,这就要求网络节点有大量的存储缓存空间。 【注】:报文交换主要用于早起的电报通信网中,现在被较先进的分组交换方式取代。
(3)分组交换:仍采用存储转发方式,但将一个长报文先分割为若干较短的分组,然后逐个转发分组(每个分组都携带目的地址、源地址和编号信息)。 优点: 1)加速传输(分组是逐个传输的,所以可以使后一个分组的存储操作与前一个分组的转发操作并行;传输一个分组所需缓冲区较小,因此因缓冲区不足而等待发送的概率以及等待时间也会减小); 2)简化了存储管理(分组长度固定,相应缓冲区大小也固定); 3)减少了出错概率和重发数据量(因为分组较短,所以出错概率也较小,这样既提高了可靠性,又降低了传输时延); 缺点: 1)存在传输时延(尽管比报文交换的传输时延少,但相对于电路交换,仍存在存储转发时延,而且其结点交换机必须具有更强的处理能力); 2)当分组交换采用数据报服务时,可能会出现失序、丢失或重复分组的现象,分组到达目的节点时,要重排,很麻烦;若采用虚电路服务,虽无失序问题,单有呼叫建立、数据传输和虚电路释放3个过程。
11.电路交换、报文交换、分组交换的应用场景
传送的数据量很大,且其传送时间远大于呼叫时间–>电路交换;端到端的通路由很多段链路组成–>分组交换; 从提高整个网络的信道利用率来看,报文交换和分组交换优于电路交换,其中分组交换比报文交换的时延小,尤其适合计算机之间的突发式的数据通信。
12.分组交换的方式(无连接的数据报方式、面向连接的虚电路方式)
(1)数据报: 1)发送分组前无需建立连接; 2)网络尽最大努力交付,传输不保证可靠性,可能乱序或丢失; 3)在具有多个分组的报文中,交换机尚未接收完第二个分组,已经收到的第一个分组就可以转发出去,不仅减小了延迟,而且大大提高了吞吐量; 4)当某一台交换机或一段链路故障时,可相应地更新转发表,寻找到另一条替代路径转发分组,对故障适应能力强; 5)发送方和接收方不独占某一链路,所以资源利用率高。
(2)虚电路:发送数据之前,在源主机和目的主机之间建立一条虚连接(逻辑上的连接)。 1)用户之间必须建立连接,数据传输过程中不再需要寻找路径,相对数据报方式开销小; 2)分组走相同路径,故按序到达; 3)分组首部并不包含目的地址,而是包含虚电路标识符,相对数据报方式开销小; 4)当某个交换机或某条链路出现故障而彻底失效时,所有经过该交换机或该链路的虚电路将遭到破坏。
13.传输介质分类
(1)导向性传输介质: 双绞线(无屏蔽双绞线和屏蔽双绞线)、同轴电缆、光纤; (2)非导向性传输介质: 短波、微波、红外线与可见光。
14.物理层接口特性
机械特性、电气特性、功能特性、规程特性。
15.物理层设备
中继器、集线器(多端口的中继器,处在网络中心,也叫
HUb)。 注意:中继器放大模拟信号,放大器放大数字信号 这俩货的缺点: 1)扩大了冲突域且总的吞吐量未提高; 2)不能互联使用不同以太网技术的局域网。
第三章、数据链路层
1.数据链路层的功能
数据链路层在物理层所提供的服务的基础上向网络层提供服务,即将原始的、有差错的物理线路改进成逻辑上无差错的数据链路,从而向网络层提供高质量的服务,包括3种:无确认的无连接服务、有确认的无连接服务和有确认的有连接服务(没有无确认的有连接服务)
(1)链路管理:负责数据链路的建立、维持和释放,主要用于面向连接的服务; (2)帧同步:接收方确定收到的比特流中以帧的开始位置和结束位置; (3)差错控制:用于使接收方确定接收到的数据就是发送方发送的数据; (4)透明传输:解决与控制符形同的数据如何发送,就是不管数据是什么样的比特组合,都应当能在链路上发送;
2.组帧(在网络中以帧为最小传输单位)
2.1 为什么要组帧
如果传输比特流出错,只需要重传出错的帧即可,无需重传全部比特流,值!
2.2 组帧的4种方法
(1)字符计数法:用一个
特殊的字符表示一帧的开始,然后用一个计数字段来表明该帧包含的字节数。当目的主机接收到该帧时,根据此字段提供的字节数,便可知道该帧的结束位和下一帧的开始位。 存在问题:若计算字段出错,就无法实现帧同步,因此该方法很少被使用。 (2)字节填充的首尾界符法:在数据中可能出现的控制字符前面加上转义字符ESC。 (3)比特填充的首尾标识法(零比特填充法):使用01111110作为帧的开始和结束标志。若数据部分也出现01111110,可以这样子: 只要数据帧检测到有5个连续的1,就麻黄素那个在后面插入0,而接收方没收到连续的5个1,就自动删除后面紧跟的0,以恢复原始数据。 (4)物理编码违例法 利用物理介质上编码的违法标志来区分帧的开始和结束。
3.差错控制
3.1 检错编码
(1)奇偶校验码:在信息码后面添加一位校验码,分为
奇校验和偶校验: 1)奇校验:添加一位校验码后,使得整个码字里面1的个数是奇数。接收端若检测到偶数个1,则认为数据出错,要求重发数据; 2)偶校验:添加一位校验码后,使得整个码字里面1的个数是偶数。接收端若检测到奇数个1,则认为数据出错,要求重发数据; 缺点:若同时有两位数据发送改变,则无法检出错误。检错率低(2)循环冗余码(CRC) 优势:检错率极高、开销小、易实现。
3.2 纠错编码(不但能检错,还能纠错)
海明码。
4.流量控制和可靠传输机制(in 传输层)
4.1 流量控制
含义:控制发送方发送数据的速率,使接收方来得及接收。 基本方法:由接收方控制发送方的数据流,常见两种方法: 1)停止-等待流量控制:发送方发出一帧,然后等待应答信号到达再发送下一帧;接收方每收到一帧后,返回一个应答信号,表示可以接收下一帧,如果接收方不返回应答,则发送方必须一直等待; 2)滑动窗口流量控制:在任意时刻,发送方都维护了一组连续的允许发送的帧的序号,称为
发送窗口;同时,接收方也维护了一组连续的允许接收的帧的序号,称为接收窗口。发送窗口内的序列号代表了那些已经被发送但是还没有被确认的帧,或者是那些可以被发送的帧。发送端每收到一个帧的确认,就发送串口就向前滑动一个帧的位置。当发送窗口尺寸达到最大尺寸时,发送方会强行关闭网络层,直到有一个空闲缓冲区出来。在接收端只有当收到的数据帧的发送序号落入接收窗口内才允许将该帧收下,并将窗口前移一个位置。若收到的数据帧落到接收窗口之外,就丢弃。
4.2 可靠传输机制(包括:停止-等待协议、后退N帧协议、选择重传协议)
与无差错接收(比如在数据链路层使用循环冗余码检验差错检测技术,凡是接收端接收的帧均无差错,有差错的被丢弃了呗)不同,可靠传输是指
数据链路层发送什么,接收端就接收什么。传输差错包括无比特差错(可用CRC检测)和无传输差错(更复杂,可能帧没问题,但出现了帧失序或者帧重复)。
4.3.滑动窗口机制
只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。 当接收窗口大小为1时,可保证帧按序接收。
4.4 停止-等待协议(基于停止-等待流量控制技术)
原理:发送方传输一个帧后,必须等待对方的确认才能发送下一帧。若在规定的时间内没有收到确认,则发送超时,并重传原始帧。
4.5后退N帧(GBN)协议(基于滑动窗口流量控制技术)
原理:发送方发送完一个数据帧后,不是停下来等待确认帧,而是可以连续再发送若干个数据帧。如果这时收到了接收方的确认帧,那么还可以接着再发送数据帧。如果某个帧出错了,接收方只能简单地丢弃该帧机器所有的后续帧。发送方超时后需重发该出错帧及其后续所有帧。 评价:减少了等待时间,使得整个通信的吞吐量得到提高。但接收方已发行错误帧,就不再接收后续帧,造成了一定浪费。于是有了下面的
选择重传协议
4.6 选择重传(SR)协议(基于滑动窗口流量控制技术)
原理:若一帧出错,则其后续帧先存入接收方的缓冲区帧,同时要求发送方重传出错帧,一旦收到重传帧后,就和原先存在缓冲区的其余帧一起按正确的顺序送至主机。 评价:避免了重复传输那些本来已经正确到达接收方的数据帧,进一步提高了信道利用率,但代价是增加了缓冲空间。
5.介质访问控制
(1)信道划分介质访问控制; (2)随机访问介质访问控制; (3)轮询访问介质访问控制。
5.1 信道划分介质访问控制(静态划分信道)
1)频分多路复用: 将一条信道分割成多个不同频率的信道(类似将马路分割为多个车道)。 若复用数之间,则需增加信道的(频率)带宽。
2)时分多路复用: 将一个固定时间分割成多个时间段。 但是有可能某个时间段内,要使用的那个人不用了,此时会出现空等状态,太浪费 于是出现了改进版的,也就是
统计时分复用,这是一种动态的时间分配,又称异步时分复用,可以避免浪费(只要没人用就自己用)。 3)波分多路复用: 光的频分多路复用。 4)码分多路复用: 又称码分多址(CDMA),既共享信道的频率,又共享时间,是一种真正的动态复用技术,抗干扰能力强、保密性强、语音质量好。
5.2 随机访问介质访问控制(动态划分信道–>随机接入)
【注1】动态划分信道包括随机接入和受控接入
【注2】随机访问介质访问控制又称争用型协议,因为其核心思想是通过争用,胜利者才可以获得信道,主要有4种协议:
1) ALOHA协议: 当网络中的任何一个结点发送数据时,可以不进行任何检测就发送数据。如果在一段时间内没有收到确认,该结点就认为传输过程中发生了冲突。发生冲突的结点需要等待一个随机的数据后再次发生数据。直到发送成功。 缺点:信道利用率不理想 改进:时分ALOHA:所有结点的时间被划分为间隔相同的时隙,并规定每个节点只有当下一个时隙到来时才可以发送数据。
2)载波侦听多路访问(CSMA)协议: 每个节点在发送数据之前,使用载波侦听技术来判定通信信道是否空闲,常用3种策略: 1-坚持CSMA:一旦监听到信道空闲立即发送数据,否则继续监听; p-坚持CSMA:一旦监听到信道空闲,以概率p发送数据,以概率(1-p)延迟一段时间并重新监听; 非坚持CSMA:一旦监听到信道空闲,便立即发送数据,否则延迟一段随机时间再重新监听。
3)带冲突检测的载波侦听多路访问(CSMA/CD)协议: 策略:先听后发,边听边发,冲突停发,随机重发。 争用期:以太网端到端的往返时延,又称
冲突窗口或者碰撞窗口。只有经过争用期这段时间还没有检测到冲突,才能肯定这次发送不会发生冲突。4)CSMA/CA协议: 在CSMA基础上增加了冲突避免功能。主要用在无线局域网中。 冲突避免要求每个结点在发送数据之前监听信道,若信道空闲,则发送数据。发送完一个帧后,必须等待一段时间,检查接收方是否发回了帧确认,若收到则继续发送,否则表明出现冲突,重发该帧。
5.3 轮询访问介质访问控制(动态划分信道–>受控接入)
用户不能随意地发送信息,而是通过一个集中控制的监控站经过轮询过程后再决定信道的分配。典型的轮询访问介质访问控制协议就是令牌传递协议。
6.局域网
6.1 局域网的基本概念
6.1.1 局域网的定义
局域网是指一个较小范围内的多台计算机或者其他通信设备,通过双绞线、同轴电缆等连接介质互连起来,以达到资源和信息共享目的的互联网络。
6.1.2 局域网的主要特点
1)局域网为一个单位所拥有; 2)地理范围和站点数目有限; 3)与以前的非光纤的广域网相比,局域网具有较高的数据率、较低的时延和较小的误码率。
6.1.3 局域网的主要优点
1)具有广播功能,从一个站点可很方便访问全网; 2)具有==便于系统的扩展和演变,各设备的位置可灵活的调整和改变; 3)提高了系统的可靠性、可用性; 4)各站为平等关系而不是主从关系。
6.1.4 局域网的主要技术要素
(1)网络拓扑结构:星形网、环形网、总线型网和树形网。 (2)传输介质:双绞线(主流)、铜缆、光纤。 (3)介质访问控制方法:CSMA/CD、令牌总线和令牌环。
6.2一个局域网的典型代表—-以太网
工作原理:以太网采用
IEEE802.3标准,采用总线拓扑结构,信息以广播形式发送,使用CSMA/CD技术对总线进行访问控制,提供的是不可靠的服务(无连接,不对发送的数据帧编号,也不要求接收方发回确认)。 以太网的MAC帧:包括前导码和目的地址、源地址和类型和数据和填充和校验码。 以太网的传输介质:10Base5(粗缆)、10Base2(细缆)、10Base-T(双绞线)、10Base-F(光纤)。
6.3 高速以太网(传输速率>=100Mbit/s)
100Base-T以太网、吉比特以太网(千兆以太网),10吉比特以太网。
6.4 无线局域网
可分为有固定设施的无线局域网和无固定设施的无线局域网。
6.5 令牌环网的工作原理
(1)当网络空闲时,环路中只有令牌在网络中循环传递; (2) 令牌传递到有数据要发送的结点处,该节点就修改令牌的一个标志位,然后在令牌中附加自己需要的数据,这样就将令牌改换成了一个数据帧,源结点将这个数据帧发送出去; (3)数据帧沿着环路传递,接收到的结点一边转发数据,一边查看帧的目的地址,若是自己的就收下; (4)当数据帧到达了源节点,源节点收到了自己发出去的数据帧,便不再转发了。同时,源节点要通过校验返回的数据帧进行检错,若出错,则重发; (5源节点传送完数据后,重新产生一个令牌,并将其传递给下一个站点,以交出发送数据帧的权限。
7.广域网
7.1 广域网定义
覆盖范围很广的长距离网络。
7.2 PPP(面向字节,无连接)
组成: 1)一个将IP数据包封装到串行链路的方法; 2)一个链路控制协议(LCP); 3)一套网络控制协议(NCP)。
PPP的帧格式: 标志字段(F)、地址字段(A)、控制字段(C)、协议字段、信息部分、帧检验序列(FCS)。
7.3 HDLC协议(面向比特)
HDLC协议可适用于两种配置:非平衡配置(由一个主站控制整个链路的工作)和平衡配置(链路两端的两个站都是复合站,每个复合站都可以平等地发起数据传输,而不需要得到对方复合站的允许)。 HDLC协议的帧格式: 标志字段(F)、地址字段(A)、控制字段(C)、信息字段、帧检验序列(FCS)。
8.数据链路层的设备
8.1 网桥
具有过滤帧的功能。 优点: 1)过滤通信量; 2)扩大了物理范围; 3)提高了可靠性; 4)可互连不同物理层、不同MAC子层和不同速率的以太网。 缺点: 1)存储转发增加了时延; 2)在MAC子层并没有流量控制功能; 3)具有不同MAC子层的网段桥接在一起时时延更大; 网桥只适合于用户数不太多和通信量不太大的局域网,否则产生广播风暴(传播过多的广播信息而产生网络拥塞)。 分类:透明网桥(选择的不是最佳路由)、源选径网桥。
8.2 局域网交换机
实质:多端口网桥。 优点:不仅每个端口节点所占用的带宽不会因为端口节点数量的最佳而减少,而且整个交换机的带宽会随着带宽节点的增加而增加。 两种交换模式: 1)直通式交换:只检查帧的目的地址,帧在被接收后立即发出。速度快,不安全,不支持具有不同速率的端口的交换; 2)存储转发式交换:先将接收到的帧存储在高速缓存中,检错,若不错则查找转发表,将该帧从查询到的端口转发出去;若出错则丢弃。可靠性高,支持不同速率端口间的转换,但延迟较大。 工作原理: 和网桥类似,检测从某端口进入交换机的帧的源MAC地址和目的MAC地址,然后与系统内部的动态查找表进行比较,若数据报的MAC地址不在查找表中,则将该地址加入查找表中,并将数据报发送给相应的目的端口。
第四章、网络层
1. 网络层的功能
(1)异构网络互联; (2)路由与转发:路由器的主要功能包括
路由选择(根据路由算法确定一个进来的分组应该被传送到哪一条输出线路上)和分组转发(路由器根据转发表将用户的IP数据报从合适的端口发送出去); (3)拥塞控制:分为开环控制(事先考虑发生拥塞的有关因素,力求避免拥塞)和闭环控制(事先不考虑,采用监视系统即时检测)两大类。
2.路由算法
(1)按照路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,总体可分为静态路由选择策略和动态路由选择策略,前者手工做,简单开销小,适合小网络,后者能较好的适应网络状态的变化,但实现复杂。
动态路由选择算法包括距离-向量路由算法和链路状态路由算法。
距离-向量路由算法中,路由器只掌握物理相邻的邻居以及链路费用,是一种分散性算法,典型代表是RIP; 链路状态路由算法中,所有路由器掌握完整的物理拓扑和链路费用信息,是一种全局性算法,典型代表是OSPF。
(2)按层次,因特网把路由选择协议划分为内部网关协议(IGP)和外部网关协议(EGP)。
内部网关协议主要有RIP和OSPF,外部网关协议主要有BGP。
3.路由(选择)协议
(1) RIP(内部网关协议):
基于距离-向量算法,仅和相邻路由器交换信息,交换的信息是当前本路由器所知道的全部信息,按照
固定时间间隔交换路由信息。 优点:实现简单,开销小,收敛速度快。 缺点:限制了网络规模(16不可达);由于路由器之间交换的路由信息是路由器中的完整路由表,所以随着网络规模扩大开销也变大;坏消息传播的慢,此时收敛时间长。
(2) OSPF(内部网关协议):
基于链路状态协议,使用
洪泛法(一传十,十传百)向本自制系统内的所有路由器发送信息,只有当链路状态改变时才更新。
(3) BGP(外部网关协议):
基于
路径-向量协议,自治系统之间路由器交换信息时使用这个。
4.IPv4地址的分类
A类地址:网络号8位,规定第一位是0,可指派的网络数为$2^7-2$,因为其中网络地址全0的地址是个保留地址,意思是“本网络”,网络号01111111用于本地软件环回测试。后面3B(24位)代表主机号,主机号全0代表该网络,全1代表广播地址,最大主机数为$2^{24}-2$。 B类地址:网络号为16位,规定前两位是10(因此网络地址不可能出现全0),网络地址128.0.0.0不指派,所以可指派的网络数为$2^{14}-1$。主机号也为16位,同样,每一个网络上的最大主机数为$2^{16}-2$。 C类地址:网络号为24位,规定前3位为110(因此网络地址不可能出现全0),网络地址192.0.0.0不指派,所以可指派的网络数为$2^{21}-1$。主机号为8位,同样,每一个网络上的最大主机数为$2^{8}-2$。
5.NAT
用于实现专用网的主机和因特网的主机的通信。 NAT可以将专用网内部使用的本地IP地址转换成有效的外部全球IP地址,使得这个专用网只需要1个全球IP地址就可以与因特网连通。 使用NAT技术,需要在专用网连接到因特网的路由器上安装NAT软件(NAT 路由器)。 NAT技术可大大节省IP地址的消耗,它至少有一个有效的外部全球IP地址,但并没有知己IP地址的个数。
6.子网划分
从主机号借用若干个比特作为子网号,而主机号也就相应减少了若干比特,网络号不变。注意子网号不能使用全0和全1.
7.子网掩码
用来告诉主机或路由器是否对一个A/B/C类网络进行了子网划分。 所有网络都有子网掩码,若未划分子网,则采用默认的子网掩码。 规定A/B/C类地址的默认子网掩码分别为:255.0.0.0,255.255.0.0,255.255.255.0 总结:不管有没有划分子网,只要将子网掩码与IP地址逐位做“与”运算,就一定能得到网络地址。
8.CIDR
为了解决IP地址耗尽而提出来的措施。 CIDR消除了传统的A/B/C/类和子网划分的概念,而使用各种长度的“网络前缀”来代替分类地址中的网络号和子网号,于是IP地址形式为{<网络前缀>,<主机号>}。 为了区分网络前缀,通常采用“斜线记法”,比如128.14.32.0/20表示的地址块共$2^{12}$个地址(因为斜线后面的20是网络前缀的位数,使用主机号位数是32-20=12),全0和全1的主机号不使用。
9.超网
将网络前缀(整个网络号字段)都相同的连续的IP地址组成“CIDR地址块”,一个CIDR地址块可以表示很多地址,这种地址的聚合称为
路由聚合,也称构成超网。
10.各种情况下路由表表项的结构
(1)没划分子网前的路由表:目的网络地址、下一跳地址; (2)划分子网后的路由表:目的网络地址、子网掩码、下一跳地址; (3)使用CIDR后的路由表:网络前缀、下一跳地址。
11.ARP
在每个主机中都有一个ARP高速缓存,里面存放的是所在局域网上的各主机和路由器的IP地址到硬件地址的映射表,ARP的职责就是动态的维护该表。 ARP请求分组是广播发送的,但ARP响应分组是普通的单播。
12.动态主机配置协议(DHCP)
常用于给主机动态的分配IP地址,提供了即插即用的连网机制,允许一台计算机加入新的网络和获取IP地址而不用手工参与。 DHCP是应用层协议,DHCP报文使用UDP传输。 DHCP服务器分配给DHCP客户的IP地址是临时的(
租用期内可用)。
13.ICMP
主机发送数据报可能出错,如果检测出错误的路由器或主机能把错误报告通过一些控制消息告诉发送数据的主机,那么发送数据的主机就可以根据ICMP报文确定发送错误的类型,并确定如何更好的重发失败的数据报。 ICMP报文可分为两种: (1)ICMP差错报告报文的分类:终点不可达、源点抑制、时间超过、参数问题、改变路由(重定向)。 (2)ICMP询问报文的分类:有回送请求和回答报文、时间戳请求和回答报文、掩码地址请求和回答报文、路由器询问和通告报文。 典型应用:
ping(使用了ICMP回送请求与回送回答报文,是应用层直接使用网络层ICMP的栗子)、tracert(跟踪路由分组经过的路由,它工作在网络层)。
14. IPV6
14.1. IPV6的特点
(1)更大的地址空间。IPV6将地址从IPV4的32位增大到了128位; (2)扩展的地址层次结构。因为地址多了,所以可以划分更多层次; (3)灵活的首部格式; (4)改进的选项; (5)允许协议继续扩充; (6)支持即插即用; (7)支持资源的预分配; (8)IPV6首部长度必须是8B的整数倍,而IPV4是4B的整数倍。
14.2 IPV6的goodness
(1)比IPV4有长得多的地址; (2)简化了IP分组的基本首部,从而改善吞吐率; (3)更好的支持选项。从前的一些必选的段现在变成了可选的,路由器可以简单的跳过无关选项,加快了分组的处理速度。
14.3 其他
IPV6定义了三种地址类型: 1)单播:传统的点对点通信; 2)组播:数据报交付到一组计算机中的每一个广播可看做是组播的一个特例; 3)任播:其目的站是一组主机,但数据报在交付时只交付给其中一个,通常是距离最近的那个。
16. IP组播
3种 IP地址:单播地址、组播地址、多播地址。
组播一定是仅应用于UDP。 把一个分组发送给多台目的主机,采用的方法并不是让源主机给每台目的知己都发送一份分组,而是将分组发给一个组播地址,该组播地址标示一组主机。网络把这个分组复制后传递给该组中的每一台在主机。 与广播不同,主机组播时仅发送一份数据,组播的数据仅在传送路径分叉时才将数据报复制后继续转发。 组播需要路由器的支持(组播路由器)。
组播的特点:
1)组播地址只能用于目的地址,不能用于源地址; 2)组播数据报“尽最大努力交付”,不提供可靠交付; 3)对组播数据报不产生差错报文; 4)并非所有D类地址都可以作为组播地址。
17. 移动IP
移动节点(比如一台笔记本电脑)在本地时使用传统的TCP/IP方式进行通信,而当移动节点漫游到外地网络时,仍需要使用固定的IP地址进行通信,为了能收到信息,
移动节点需要向本地代理注册当前的位置地址(也就是转交地址),本地代理收到后会建立一条隧道,将截获的发送给移动节点的IP分组送到转交地址处,在转交地址处解除隧道封装,最后送到移动节点。
18. 移动IP与动态IP的区别
移动IP为移动主机设置了两个IP地址,即主地址和辅地址(转交地址)。移动节点在本地网时使用主地址,在外网需要获得一个辅助的临时地址,但是此时主地址不变,当从外网回来时,辅地址就会被改变或撤销,而主地址依然不变。
动态IP是指局域网中的计算机可以通过网络中的DHCP服务器动态的获得一个IP地址,所以不需要用户在计算机网络设置中指定IP地址。
19.网络层设备
路由器实质上是一种多个输入端口和多个输出端口的专用计算机,其任务是连接不同的网络转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要取的目的地(目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
路由器的结构: (1)路由选择根据所选定的路由选择协议构造出路由表,同时经常或定期的和相邻路由器交换路由信息而不断更新和维护路由表,其核心部件是路由选择处理器; (2)分组转发:包括一组输入端口、交换结构和一组输出端口,交换结构(路由器的核心部件)从输入端口接收到分组后,根据转发表对分组进行处理,然后从一个合适的输出端口转发出去。
若接收到的分组是路由器之间交换路由信息的分组,比如RIP和OSPF分组,则把这种分组送交路由器的路由选择部分的选择处理器; 若接收到的是数据分组,则按照分组首部中的目的地址查找转发表,经过交换结构到达合适的输出端口。 当一个分组正在查找转发表时,后面又紧跟着从这个输入端口收到另一个分组,这个分组就要排队,因而产生了时延。
第五章、传输层
1. 传输层的功能
对整个传输层而言的功能:
(1)提供应用进程间的逻辑通信(网络层提供主机之间的逻辑通信);
(2)对收到的报文的首部和数据部分进行差错检测(网络层只检查IP 数据报首部);
(3)提供无连接(UDP)或面向连接(TCP)的服务;
(4)复用和分用:复用是指发送方不同的进程都可以使用同一个传输层协议传送数据,分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。
此外对于面向连接的服务还有以下功能:
(1)连接管理,如TCP的3次握手(通常把连接的定义和建立的过程称为握手);
(2)流量控制和拥塞控制。
2.软件端口与硬件端口
软件端口就是传输层服务访问点,是应用层的各种协议进程与传输实体进行层间交互的一种地址;
而硬件端口是指不同硬件设备进行交互的接口(如交换机和路由器的端口)。
3. 端口号
用大量端口号标识一台主机在某一时刻的网络应用进程。
主要有3类端口号:熟知端口、登记端口、客户端端口或短暂端口。
4.套接字
唯一标识了网络中的某台主机上的某个应用进程,套接字=(主机IP地址,端口号)。
5. 无连接服务与面向连接服务
TCP->传输层向上提供一条全双工的可靠逻辑信道
UDP->传输层向上提供一条不可靠的逻辑信道
5.1 UDP的特点
(1)传送数据前不需要建立连接,数据到达后也无需确认;
(2)不可靠交付;
(3)报文头部短,传输开销小,时延较短。
5.2 TCP的特点
(1)面向连接,不提供广播或多播服务;
(2)可靠交付;
(3)报文段头部长,传输开销大。
6.其他
问:UDP 数据报和IP 分组的区别
答:IP 分组要经过互联网中许多路由器的存储转发,但UDP数据报是在传输层的端到端的抽象的逻辑信道中传送的,UDP数据报只是IP 数据报中的数据部分,对路由器是不可见的。
问:TCP连接和网络层的虚电路的区别
答:TCP报文段是在传输层的端到端的抽象的逻辑信道中传送的,对路由器不可见。TCP中所谓的连接并不是真的物理连接,而电路交换中的电路是真实的物理连接,另外虚电路也不是一条真正的物理连接。
7. UDP
UDP在IP数据报服务之上增加了端口的功能(为了找到端口)和差错检测功能。
优点:
(1)发送数据前不需要建立连接;
(2)UDP的主机不需要维持复杂的连接状态表;
(3)UDP用户数据报只有8个字节的首部开销;
(4)网络出现的拥塞不会使源主机的放速率降低(没有拥塞控制),这对于某些实时应用是很重要的;
(5)UDP支持一对一、一对多、多对一和多对多的交互通信。
8. TCP
8.1 TCP的连接管理
TCP的传输连接可分为3各阶段:连接建立(TCP的3次握手)、数据传送和连接释放(TCP的4次握手)
8.2 TCP的可靠传输
TCP数据编号与确认
TCP是面向字节的。TCP将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。
TCP的重传机制
TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到了规定时间还没有收到确认,那么就要重传该报文段。
8.3 流量控制
8.4 拥塞的概念
在某段时间, 对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞。
8.5 拥塞控制的方法
(1)慢开始算法
刚开始设置拥塞窗口为1,每收到对一个新的报文段的确认,拥塞窗口加1,这样子逐步增大发送方的拥塞窗口从而使得分组注入网络的速率更加合理。
(2)拥塞避免算法
发送端的拥塞窗口每经过一个往返时延RTT就增加一个最大报文段长度的大小,通常表现为按线性规律增长。
此时的主要过程如下:
(1)先执行慢开始算法,拥塞窗口指数增长->
(2)拥塞窗口达到慢开始门限值,改为执行拥塞避免算法,拥塞窗口线性增长(加法增大)->
(3)网络出现超时,网络开始拥塞将慢开始的门限值设置为当前拥塞窗口值的一半(乘法减小),拥塞窗口设置为1,重新执行慢开始算法,就这样循环往复下去
(3)快重传算法
首先要求接收方每收到一个失序的报文段后就立即发出重复确认,发送方只要连续收到3个重复确认就应当立即重传对方尚未收到的报文段。
(4)快恢复算法
当发送端收到连续的3个重复的ACK时,就重新设置慢开始门限值为拥塞窗口的一半,同时将拥塞窗口设为新的慢开始门限值。若发送窗口值还允许发送报文段,就按拥塞避免算法继续发送报文段。
9.对比TCP和UDP
UDP协议和TCP协议都是传输层协议。
TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用再客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。
网络安全
一、计算机网络面临的安全性威胁计算机网络上的通信面临以下的四种威胁:
截获——从网络上窃听他人的通信内容。
中断——有意中断他人在网络上的通信。
篡改——故意篡改网络上传送的报文。
伪造——伪造信息在网络上传送。截获信息的攻击称为被动攻击,而更改信息和拒绝用户使用资源的攻击称为主动攻击。

二、被动攻击和主动攻击被动攻击
攻击者只是观察和分析某一个协议数据单元 PDU 而不干扰信息流。
主动攻击
指攻击者对某个连接中通过的 PDU 进行各种处理,如:
- 更改报文流
- 拒绝报文服务
- 伪造连接初始化
三、计算机网络通信安全的目标
(1) 防止析出报文内容;
(2) 防止通信量分析;
(3) 检测更改报文流;
(4) 检测拒绝报文服务;
(5) 检测伪造初始化连接。
四、恶意程序(rogue program)
计算机病毒——会“传染”其他程序的程序,“传染”是通过修改其他程序来把自身或其变种复制进去完成的。
计算机蠕虫——通过网络的通信功能将自身从一个结点发送到另一个结点并启动运行的程序。
特洛伊木马——一种程序,它执行的功能超出所声称的功能。
逻辑炸弹——一种当运行环境满足某种特定条件时执行其他特殊功能的程序。
五、计算机网络安全的内容
保密性
安全协议的设计
访问控制
六、公钥密码体制
公钥密码体制使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
1、公钥和私钥:
- 在公钥密码体制中,加密密钥(即公钥) PK(Public Key) 是公开信息,而解密密钥(即私钥或秘钥) SK(Secret Key) 是需要保密的。
- 加密算法 E(Encrypt) 和解密算法 D 也都是公开的。
- 虽然秘钥 SK 是由公钥 PK 决定的,但却不能根据 PK 计算出 SK。
2、公钥算法的特点:
发送者 A 用 B 的公钥 PKB 对明文 X 加密(E 运算)后,在接收者 B 用自己的私钥 SKB 解密(D 运算),即可恢复出明文:

解密密钥是接收者专用秘钥,对其他人都保密。
加密密钥是公开的,但不能用它来解密,即:

加密和解密的运算可以对调,即:

tips:
- 在计算机上可容易地产生成对的 PK 和 SK。
- 从已知的 PK 实际上不可能推导出 SK,即从 PK 到 SK 是“计算上不可能的”。
- 加密和解密算法都是公开的。
七、 数字签名1、数字签名必须保证以下三点:
(1) 报文鉴别——接收者能够核实发送者对报文的签名;
(2) 报文的完整性——发送者事后不能抵赖对报文的签名;
(3) 不可否认——接收者不能伪造对报文的签名。
现在已有多种实现各种数字签名的方法。但采用公钥算法更容易实现。
2、数字签名的实现 :

因为除 A 外没有别人能具有 A 的私钥,所以除 A 外没有别人能产生这个密文。因此 B 相信报文 X 是 A 签名发送的。
若 A 要抵赖曾发送报文给 B,B 可将明文和对应的密文出示给第三者。第三者很容易用 A 的公钥去证实 A 确实发送 X 给 B。
反之,若 B 将 X 伪造成 X‘,则 B 不能在第三者前出示对应的密文。这样就证明了 B 伪造了报文。

八、鉴别
在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造则要用鉴别(authentication) 。
报文鉴别使得通信的接收方能够验证所收到的报文(发送者和报文内容、发送时间、序列等)的真伪。
使用加密就可达到报文鉴别的目的。但在网络的应用中,许多报文并不需要加密。应当使接收者能用很简单的方法鉴别报文的真伪。
鉴别的手段
1 报文鉴别(使用报文摘要 MD (Message Digest)算法与数字签名相结合)
2 实体鉴别
九、运输层安全协议1、安全套接层 SSL(Secure Socket Layer)
- SSL可对万维网客户与服务器之间传送的数据进行加密和鉴别。
- SSL 在双方的联络阶段协商将使用的加密算法和密钥,以及客户与服务器之间的鉴别。
- 在联络阶段完成之后,所有传送的数据都使用在联络阶段商定的会话密钥。
- SSL 不仅被所有常用的浏览器和万维网服务器所支持,而且也是运输层安全协议 TLS (Transport Layer Security)的基础。
1.1 SSL 的位置

1.2 SSL的三个功能:
(1) SSL 服务器鉴别 允许用户证实服务器的身份。具有 SS L 功能的浏览器维持一个表,上面有一些可信赖的认证中心 CA (Certificate Authority)和它们的公钥。
(2) 加密的 SSL 会话 客户和服务器交互的所有数据都在发送方加密,在接收方解密。
(3) SSL 客户鉴别 允许服务器证实客户的身份。
2、安全电子交易SET(Secure Electronic Transaction)
SET 的主要特点是:
(1) SET 是专为与支付有关的报文进行加密的。
(2) SET 协议涉及到三方,即顾客、商家和商业银行。所有在这三方之间交互的敏感信息都被加密。
(3) SET 要求这三方都有证书。在 SET 交易中,商家看不见顾客传送给商业银行的信用卡号码。
十、防火墙(firewall)
防火墙是由软件、硬件构成的系统,是一种特殊编程的路由器,用来在两个网络之间实施接入控制策略。接入控制策略是由使用防火墙的单位自行制订的,为的是可以最适合本单位的需要。
防火墙内的网络称为“可信赖的网络”(trusted network),而将外部的因特网称为“不可信赖的网络”(untrusted network)。
防火墙可用来解决内联网和外联网的安全问题。

防火墙在互连网络中的位置
1、防火墙的功能
防火墙的功能有两个:阻止和允许。
“阻止”就是阻止某种类型的通信量通过防火墙(从外部网络到内部网络,或反过来)。
“允许”的功能与“阻止”恰好相反。
防火墙必须能够识别通信量的各种类型。不过在大多数情况下防火墙的主要功能是“阻止”。
2、防火墙技术的分类
(1) 网络级防火墙——用来防止整个网络出现外来非法的入侵。属于这类的有分组过滤和授权服务器。前者检查所有流入本网络的信息,然后拒绝不符合事先制订好的一套准则的数据,而后者则是检查用户的登录是否合法。
(2) 应用级防火墙——从应用程序来进行接入控制。通常使用应用网关或代理服务器来区分各种应用。例如,可以只允许通过访问万维网的应用,而阻止 FTP 应用的通过。
图解HTTP
一. 什么是HTTP协议
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。HTTP(超文本传输协议)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器,目前我们使用的是HTTP/1.1 版本。
二. Web服务器,浏览器与代理服务器
当我们打开浏览器,在地址栏中输入URL,然后我们就看到了网页,原理是怎样的呢?实际上我们输入URL后,我们的浏览器给Web服务器发送了一个Request,Web服务器接到Request后进行处理并生成相应的Response,然后发送给浏览器。浏览器解析Response中的HTML,这样我们就看到了网页,过程如下图所示:

我们的Request有可能是经过了代理服务器,最后才到达Web服务器的,其作用类似于WEB中的Filter或者Interceptor。具体而言,代理服务器是位于客户端和服务器端的HTTP代理,也就是说:客户端的所有请求都要先经过代理服务器,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过代理服务器然后发送到客户端,如下图所示:

代理服务器就是网络信息的中转站,一般包含如下几个功能:
- 提高访问速度, 大多数的代理服务器都有缓存功能;
- 突破限制, 也就是翻墙了;
- 隐藏身份;
三. URL详解
URL(Uniform Resource Locator) 地址用于描述一个网络上的资源,基本格式如下:
schema://host[:port]/path/.../[?query-string][#anchor]1
- scheme: 指定低层使用的协议,eg:http,https,ftp,…
- host: HTTP服务器的IP地址或者域名
- port#: HTTP服务器的默认端口是80,这种情况下端口号可以省略;如果使用了别的端口,必须指明,例如: http://www.cnblogs.com:8080/
- path:访问资源的路径
- query-string:发送给http服务器的数据
- #anchor: 锚
URL 的一个例子:http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff,其中,Schema是http,host是www.mywebsite.com,path是/sj/test/test.aspx,Query String(查询参数)是name=sviergn&x=true,Anchor为stuff。
四. HTTP协议是无状态的
**HTTP协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,也就是说,对http服务器来说,它并不知道这两个请求来自同一个客户端。**为了解决这个问题,Web程序引入了Cookie/Session机制来维护状态。
五. HTTP消息的结构
1、Request消息的结构
先看Request消息的结构,Request消息分为3部分:第一部分叫Request line,第二部分叫Request header,第三部分是 Request body。header和body之间有个空行,结构如下图:

第一行中的Method表示请求方法,比如”POST”,”GET”, Path-to-resoure 表示请求的资源的路径, Http/version-number 表示HTTP协议的版本号。当使用的是”GET”方法的时候,body是为空的,比如我们打开博客园首页的request如下:
GET http://www.cnblogs.com/ HTTP/1.1
Host: www.cnblogs.com12
抽象的东西,难以理解,老感觉是虚的, 所谓眼见为实,实际见到的东西,我们才能理解和记忆,所以我们今天用Fiddler,实际的看看Request和Response。下面我们打开Fiddler捕捉一个博客园登录的Request,然后分析下它的结构,在Inspectors tab下以Raw的方式可以看到完整的Request的消息,如下图:

2、Response消息的结构
我们再看Response消息的结构, 和Request消息的结构基本一样,同样也分为三部分:第一部分叫Response line,第二部分叫Response header,第三部分是Response body。header和body之间也有个空行,结构如下图:

HTTP/version-number表示HTTP协议的版本号,status-code(状态码)与message(原因短语)请看下节[状态代码]的详细解释。我们用Fiddler捕捉一个博客园首页的Response然后分析下它的结构,在Inspectors tab下以Raw的方式可以看到完整的Response的消息,如下图

六. GET与POST的区别
Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是:GET、POST、PUT 和 DELETE。一个URL地址用于描述一个网络上的资源,而HTTP中的GET、POST、PUT 和 DELETE就对应着对这个资源的查,改,增,删4个操作,其中,我们最常见的就是GET和POST了。**GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。**我们看看GET和POST的区别:
- GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456,而POST方法是把提交的数据放在HTTP包的Body中;
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制;
- GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值;
- GET方式提交数据会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。
七. 状态码与原因短语
Response 消息中的第一行叫做状态行,由HTTP协议版本号、状态码和状态消息三部分组成。状态码用来告诉HTTP客户端HTTP服务器是否产生了预期的Response;HTTP/1.1中定义了5类状态码,状态码由三位数字组成,第一个数字定义了响应的类别:
- 1XX 提示信息 - 表示请求已被成功接收,继续处理
- 2XX 成功 - 表示请求已被成功接收,理解,接受
- 3XX 重定向 - 要完成请求必须进行更进一步的处理
- 4XX 客户端错误 - 请求有语法错误或请求无法实现
- 5XX 服务器端错误 - 服务器未能实现合法的请求
1、200 OK
200代表请求成功。最常见的就是成功响应状态码200了,这表明该请求被成功地完成,所请求的资源发送回客户端。如下图, 打开博客园首页:

2、302 Found
302代表重定向,新的URL会在response中的Location中返回,浏览器将会自动使用新的URL发出新的Request。例如在IE中输入:http://www.google.com,HTTP服务器会返回302,然后IE取到Response中Location header中的新URL,又重新发送了一个Request:

3、304 Not Modified
304代表上次的文档已经被缓存了,还可以继续使用,例如打开博客园首页,发现很多Response的status code 都是304:

Ps: 如果你不想使用本地缓存可以用Ctrl+F5 强制刷新页面
4、400 Bad Request 与 403 Forbidden
400 Bad Request 客户端请求与语法错误,不能被服务器所理解
403 Forbidden 服务器收到请求,但是拒绝提供服务
5、404 Not Found
404表示请求资源不存在(比如,输错了URL)。比如,在IE中输入一个错误的URL,http://www.cnblogs.com/tesdf.aspx:

6、500 Internal Server Error 与 503 Server Unavailable
500 Internal Server Error 服务器发生了不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常
八.HTTP Request Header
使用Fiddler 能很方便的查看Request header, 点击Inspectors tab ->Request tab-> headers 如下图所示:

header内容有很多,比较难以记忆,我们也按照Fiddler那样把header进行分类,这样比较清晰也容易记忆。
1、Cache 头域
1)、If-Modified-Since
If-Modified-Since作用是把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中。例如:If-Modified-Since: Thu, 09 Feb 2012 09:07:57 GMT。实例如下图:

2)、If-None-Match
If-None-Match和ETag一起工作,工作原理是在HTTP Response中添加ETag信息。当用户再次请求该资源时,将在HTTP Request中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和Etag。使用这样的机制将提高网站的性能。例如,If-None-Match: “03f2b33c0bfcc1:0”,实例如下图:

3)、Pragma
Pragma作用是防止页面被缓存, 在HTTP/1.1版本中,它和Cache-Control:no-cache作用一模一样。Pargma只有一个用法,例如: Pragma: no-cache。注意:,在HTTP/1.0版本中,只实现了Pragema:no-cache, 没有实现Cache-Control。
2、Cache-Control 头域
Cache-Control是个非常重要的规则,用来指定Response-Request遵循的缓存机制。各个指令含义如下:
- Cache-Control:Public 可以被任何缓存所缓存
- Cache-Control:Private 内容只缓存到私有缓存中
- Cache-Control:no-cache 所有内容都不会被缓存
3、Client 头域
1)、Accept
Accept代表浏览器端可以接受的媒体类型,例如: Accept: text/html 代表浏览器可以接受服务器回发的类型为text/html,也就是我们常说的html文档。**如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable)。**另外,通配符 * 代表任意类型,例如,Accept: / 代表浏览器可以处理所有类型,一般浏览器发给服务器都是发这个。
2)、Accept-Encoding
Accept-Encoding用于浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate)等。注意,这不是指字符编码。例如, Accept-Encoding: gzip, deflate。
3)、Accept-Language
Accept-Language用于浏览器申明自己接收的语言。特别地,语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等。例如, Accept-Language: en-us。
4)、User-Agent
User-Agent用于告诉HTTP服务器,客户端使用的操作系统和浏览器的名称和版本。我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。例如, User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E)
5)、Accept-Charset
Accept-Charset用于浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312、utf-8,通常我们说Charset包括了相应的字符编码方案。
4、Cookie/Login 头域
Cookie是header最重要的一个,用于将cookie的值发送给HTTP服务器。
5、Entity头域 头域
Content-Length用于说明发送给HTTP服务器数据的长度,例如, Content-Length: 38。
Content-Type表示具体请求中的互联网媒体类型(MediaType,Internet Media Type,MIME类型)信息,例如:Content-Type: application/x-www-form-urlencoded。
6、Miscellaneous 头域
Miscellaneous头域提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的,比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。例如,Referer:http://translate.google.cn/?hl=zh-cn&tab=wT。
7、Transport 头域
Connection,例如,Connection:keep-alive表示当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。再例如,Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。
Host(发送请求时,该报头域是必需的)主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。例如:,我们在浏览器中输入:http://www.guet.edu.cn/index.html,则浏览器发送的请求消息中,就会包含Host请求报头域,如下:Host:http://www.guet.edu.cn。此处使用缺省端口号80,若指定了端口号,则变成:Host:指定端口号
九.HTTP Response Header
同样使用Fiddler 查看Response header, 点击Inspectors tab ->Response tab-> headers 如下图所示。我们也按照Fiddler那样把header 进行分类,这样比较清晰也容易记忆。

1、Cache 头域
1)、Date
Date用于生成消息的具体时间和日期,例如,Date: Sat, 11 Feb 2012 11:35:14 GMT。
2)、Expires
浏览器会在指定过期时间内使用本地缓存,例如,Expires: Tue, 08 Feb 2022 11:35:14 GMT。
2、Cookie/Login 头域
1)、P3P
P3P用于跨域设置Cookie, 这样可以解决iframe跨域访问cookie的问题。例如,P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR。
2)、Set-Cookie
Set-Cookie是非常重要的header域, 用于把cookie 发送到客户端浏览器, 每一个写入cookie都会生成一个Set-Cookie。例如,Set-Cookie: sc=4c31523a; path=/; domain=.acookie.taobao.com。

3、Entity头域
1)、ETag
作用: 和If-None-Match 配合使用。 (实例请看上节中If-None-Match的实例)
例如: ETag: “03f2b33c0bfcc1:0”
2)、Last-Modified:
作用: 用于指示资源的最后修改日期和时间。(实例请看上节的If-Modified-Since的实例)
例如: Last-Modified: Wed, 21 Dec 2011 09:09:10 GMT
3)、Content-Type
作用:WEB服务器告诉浏览器自己响应的对象的类型和字符集,
例如:Content-Type: text/html; charset=utf-8, Content-Type:text/html;charset=GB2312
4)、Content-Length
作用:指明实体正文的长度,以字节方式存储的十进制数字来表示。在数据下行的过程中,Content-Length的方式要预先在服务器中缓存所有数据,然后所有数据再一股脑儿地发给客户端。
例如: Content-Length: 19847
5)、Content-Encoding
作用:WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。
例如:Content-Encoding:gzip
6)、Content-Language
作用: WEB服务器告诉浏览器自己响应的对象的语言者
例如: Content-Language:da
4、Miscellaneous 头域
1)、Server:
作用:指明HTTP服务器的软件信息
例如:Server: Microsoft-IIS/7.5
2)、X-AspNet-Version:
作用:如果网站是用ASP.NET开发的,这个header用来表示ASP.NET的版本
例如: X-AspNet-Version: 4.0.30319
3)、X-Powered-By:
作用:表示网站是用什么技术开发的
例如: X-Powered-By: ASP.NET
5、Transport头域
Connection
例如: Connection: keep-alive,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接
例如: Connection: close,代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。
6、Location头域
Location
作用: 用于重定向一个新的位置, 包含新的URL地址
实例请看304状态实例
八. HTTP协议是无状态的 和 Connection: keep-alive的区别
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。
HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。
从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。
20张图展示计算机网络知识
- 基于ISP的三层结构的因特网

\2. 计算机网络的定义

\3. 电路交换示意图

\4. 电路报文分组交换的对比

\5. 计网性能指标1

\6. 计网性能指标2

\7. 利用率并非越高越好

\8. 计算机网络体系结构

\9. 分层的必要性

\10. PDU与SDU

\11. 物理层协议的主要任务

\12. 传输方式中的同步与异步传输

\13. 信道的极限容量【题】

\14. 信道的极限容量

\15. 数据链路层概述

\16. 封装成帧

\61. 电子邮件总结

\62. 万维网

1.基础准备
1.1 题库
买一本三级网络技术题库或者是题库软件(20 元左右),不需要买更多,总之有成套的题可以做就行。真题目前大概有二十套左右。
1.2 二进制转换
应该学过
网络技术用到的一般是八位二进制数。也就是 0 ~ 255,即 0000 0000 ~ 1111 1111(每四位空一格便于观察)
我做题前在草稿纸上先这样画
这样,比如说我看见 1001 1000 这个数,就知道这是 128+16+8 对应的数。
反过来,十进制转换二进制也可以利用这个简图。还有一些规律,自己做题中摸索吧,你可能会找到更好的方法。
下面几组记忆一下,做题时会比较方便(不要畏难,做题见多了就记住了)
| 二进制 | 十进制 |
|---|---|
| 1000 0000 | 128 |
| 1100 0000 | 192 |
| 1110 0000 | 224 |
| 1111 0000 | 240 |
| 1111 1111 | 255 |
1.3 基础概念
如果是学过计算机网络相关知识的同学可以不看,下面是非专业的不标准的可能还有错的描述,仅仅是为了完全没有基础的同学有个粗略了解。
计算机网络是一些电脑相互链接组成的,这些电脑叫做主机,可能相距很远,也可能是一间屋子里的。
就像正常情况下两个人要用同一种语言交流一样。主机之间的联系也要按照相同的标准才行,这些标准叫做协议。因为主机之间的联系是一件复杂的事。所以有多种协议解决不同方面的问题,比如 TCP、BGP、DHCP 等等。
相距太远的主机之间不能直接联系,就需要一些设备,比如路由器、交换机等等,你只知道他们都是为了主机联系的中间转发设备就行。
还需要地址,因为没有地址就不知道主机在哪,这个标识主机的就是 IP 地址。 IP 地址是类似这样的:10000000.1110000.01000000.10110001,一共 32 位,为了人看起来方便就写成 128.224.64.177 这种点分十进制的形式。
还有一种叫做 MAC 地址,是标识硬件设备的地址。
主机还可以广播给整个网络,广播地址是 IP地址 32 位全置 1 的地址,即 255.255.255.255。
当你访问一个网站,你的电脑先将网址发送给 DNS 服务器(域名解析服务器),这个服务器能将你写的网址域名变成 IP 地址,这样你的电脑就知道想要访问的网页放在哪了。
上面这些并不能让你真正理解计算机网络(其实我也不是很清楚),主要是让你在见到陌生名词的时候别害怕,有些名词不理解也不会影响做题。
1.4 备考建议
这就是个人的方法了,也不一定适合你。
【1】首先对着一套三级题和答案看一遍,每道题都看答案解析是怎么说的。看答案不必弄懂(当然你要真的全弄懂也很厉害),知道怎么选出来就行,不明白跳过也行。同时也找找看看我笔记里写没写这道题的知识点。
这一遍是比较简略的,对题目有个简单的印象就够了。但这遍也是比较困难的,因为几乎都是陌生的东西。
【2】接下来,同时做两三套试题甚至更多套。按着笔记里的知识点做,看到哪个知识点就到这些套题里找,对照着做题来掌握这个知识点。如果笔记里没有提到或者没写详细的就看答案怎么说,实在不明白的还可以跳过。
这个阶段是需要比较认真的看了,我这个阶段是在写笔记中度过的。经过这个阶段你就能明白哪些知识点考察比较固定,一些题的固定做法是什么,对考试有比较完全的认识了。
【3】接下来,就把剩下的套题都做了,反正一共就二十套左右。怎么做都行,按套或者按题型什么的自己安排,反正做一遍。如果没时间了,至少把选择题做一遍。
这一遍就是完善熟练的阶段,还可能有一些我笔记里没写的知识点你也会了。
【补充】有的同学还是感觉难,那就先把第一道大题和最后一道大题的两个填表都仔细弄会了。这两个表就 20 分到手了。接下来学习可能会感觉踏实一点。
2.选择题(40 道 40 分)
根据做题方法不同划为三类
- 第一类:几乎每套题都考,掌握简单做法即可选出正确答案
- 第二类:每套题里有 5 道左右,看上去非常复杂的大段配置代码
- 第三类:从四个选项里选出一项正确或错误的,其中部分知识点是常考的,比较零散
2.1 第一类选择题
2.1.1 问传输速度
OC-3 对应 155.52 Mbps OC-12 对应 622.08 Mbps (显然,这是一道送分题)
2.1.2 求交换机带宽
通常是求总带宽 例:某交换机有 12 个 10/100 Mbps 电端口和 2 个 1000 Mbps 光端口,所有端口都在全双工状态下,那么总带宽为( ) 解:忽略 10/100 中的 10,当成 100 Mbps 就好。12 * 100 + 2 * 1000 = 3200,又因为全双工所以乘以 2 得 6400 Mbps ,即 6.4 Gbps
有时候求上联端口带宽 例:某交换机有 16个100/1000 Mbps 全双工下联端口,那么上联端口带宽至少为( ) 解:16 * 1000 * 2 = 32000 Mbps = 32 Gbps,上联一般是下联的 1/20 ,所以至少为 32 除以 20 得 1.6 Gbps
2.1.3 系统可用性与停机时间
| 可用性 | 停机时间 |
|---|---|
| 99.9% | ≤8.8小时 |
| 99.99% | ≤53分钟 |
| 99.999% | ≤5分钟 |
也是送分题,但要记准确。比如 53 分钟,有时候会问 55 分钟的情况,要是记成 50 或者大约 1 小时就没法做了。
2.1.4 写地址块的子网掩码
例:IP 地址块 59.67.159.125/11 的子网掩码可写为( ) 解:不用看 IP 地址,只看 /11 就够了。 11 代表子网掩码的前 11 位都是 1 ,所以可以写出子网掩码 11111111.11100000.00000000.00000000 转换为十进制即是 255.224.0.0 做题熟练后其实不用写上面那堆 1 和 0 就能选出正确答案。
2.1.5 网络地址转换 NAT
会给你一个这样的图,问你 ① ② 是什么
只需要知道②和紧挨着它的 S 数字相同,所以②应该是 202.0.1.1,5001 ;同理,①是 10.0.0.1,3342。
还有时候会问某个小方框里的 S,D 分别是什么,看上面的图你会发现,上面两个方框和下面两个方框里的数字是对称的,做题时对称一下就写出答案了。
2.1.6 IP 地址块聚合
第一种:问聚合后的地址块
下面演示三个地址的聚合
步骤为:转成二进制;对齐找前多少位是相同的;转回十进制写答案。
这样就得出聚合后的地址为:192.67.159.192/26
Tips:转换二进制时,因为前三段十进制本来就一样,所以可以只转换最后一段;
不要一个一个数有多少位相同的,因为前三段相同就知道有 3 * 8 = 24 位,再加上 2 就是 26。
第二种:问聚合后可用 IP 数 下面两种情况的做法由网友 Yes 补充,十分感谢,之前我写的不当方法已删除。
【第一种情况】如未来教育上机考试第一套试题第10题: “ IP 地址块 202.113.79.128/27、202.113.79.160/27 和 202.113.79.192/27 经过聚合后可用的地址数为___”
因为格式都是 xxx.xxx.xxx.xxx/27,本题中“/”后边的数字都是相同的。 所以遇到这种题,先把前两个 IP 聚合求出可用地址数,然后单独算出第三个 IP 地址可用地址数,两个地址数相加即正确答案。
【第二种情况】如未来教育上机考试第三套试题第10题: “ IP 地址块 202.113.79.0/27、202.113.79.32/27、202.113.79.64/26 经过聚合后可用的地址数为___”
本题中“/”后边的数字前两个是相同的,第三个与前两个不同。 所以遇到这种题,直接将三个 IP 聚合得到地址块,然后求出三个 IP 的可用地址数。
2.1.7 路由表距离更新
例:R1,R2 是一个系统中采用RIP路由协议的两个相邻路由器,R1 的路由表如(a)所示,
R1 收到 R2 发送的报文(b)后,R1 更新后的距离值从上到下依次是( )
解:做法如下
步骤为:b距离+1;
与a距离比较;更新为距离最小的。则更新后的距离值从上到下依次是 0、4、4、3、2
还经常这样考——给出更新后距离值和(a)中的距离,求(b)报文距离的可能值。 规则不变,上面的做法反过去求就行。
2.1.8 IPv6 地址简化表示
例:某地址 FF23:0:0:0:0510:0:0:9C5B, 可以简化为 FF23::0510:0:0:9C5B,双冒号替代连续出现的 0 位段, 不能简化为 FF23::0510::9C5B,因为双冒号只能使用一次, 可以简化为 FF23::510:0:0:9C5B,因为 0510 就是 510 , 不能简化为 FF23::051:0:0:9C5B,因为 0510 不是 51。
例:下列 IPv6 地址表示中错误的是( ) A) ::10F:BC:0:0:03DA B) FE::0:45:03/48 C) FE31:0:BC:3E:0:050D:BC::03DA D) FF34:42:BC::3E:50F:21:03D 解:IPv6 地址是 128 位划分为 8 段的地址,而 C 项不算双冒号那段已经有了 8 段,双冒号又至少压缩一个 0 位段,所以超了 8 段,是错误的。 B 中的 /48 做题时可以忽略,写不写没关系。做这种题先看最长的那项有没有超过 8 段。
2.1.9 数据包
例:下图是 A 发送的数据包通过路由器转发到 B 的过程示意图,求数据包 3 中的目的IP地址和目的MAC地址
解:无论哪个数据包,目的 IP 地址就是 B 的 IP 地址,所以数据包 3 的目的 IP 为 129.42.56.216;
而目的 MAC 地址就是下一个路由器的 MAC 地址,数据包 3 的下一个路由器是 R3,所以数据包 3 的目的 MAC 地址是 00d0.63c3.3c41。
2.1.10 三种备份
备份速度从快到慢:增量备份、差异备份、完全备份(备份越详细越慢) 恢复速度从快到慢:完全备份、差异备份、增量备份(和上面顺序相反,也好理解,备份时详细的恢复快) 空间占用从多到少:完全备份、差异备份、增量备份(备份越详细占用空间越多) 题目通常问你其中某一种的顺序。
2.2 第二类选择题
这部分将进一步体现本指南的优越性
我们先来看一道“第二类选择题”的四个选项,不需要看题。
-从这开始
-到这结束
看起来异常复杂,但这是在我完全不懂知识点的情况下就能选对的题。
下面要讲的是技巧方法,不是知识点,适用于这类题
首先,你需要来回观察这四个选项,找出他们的不同点。可能是两句颠倒的代码,可能是一个单词一个数,也可能是其他的。
这是我把他们不同的地方做了荧光标记
首先一眼看上去,C 项的大段数字位置和其他三项不一样,所以排除 C;
然后,看蓝色的数字,只有 A 项和其他三项不一样,所以排除 A;
最后,看绿色的地方,只有 B 项少了一句,所以排除 B;
选 D。
悟性比较高的同学肯定已经明白了,为了大家更好的体会,再换一道题演示:
不先写选项了,直接展示标记后的
方法一样,找出不同点,然后“少数服从多数”,最后选 C。
下面一道题自己练习一下
答案是C。
说出来你可能不信,这种方法可以解决80%以上的“第二类选择题”, 有的题可能没办法排除掉三个选项,这时候就要结合一下题目内容推断来做或者蒙。
2.3 第三类选择题
下面列举的是高频考点,需要记忆,但不要死记。一开始可能感觉很陌生很难,做题碰见得多了就熟悉了能迅速选出答案。
2.3.1 弹性分组环 RPR
- 每一个节点都执行SRP公平算法
- 与 FDDI 一样使用双环结构
- 传统的 FDDI 环,当源结点向目的节点成功发送一个数据帧之后,这个数据帧由源结点从环中回收
- 而 RPR 环,当源结点向目的节点成功发送一个数据帧之后,这个数据帧由目的结点从环中回收
- RPR 采用自愈环设计思路,能在 50ms 时间内隔离故障结点和光纤段
- 两个 RPR 结点间的裸光纤最大长度可达 100公里
- RPR 的外环(顺时针)和内环(逆时针)都可以用于传输分组和控制分组
2.3.2 无线接入技术
- 主要有 WLAN、WiMAX、WiFi、WMAN 和 Ad hoc ( WiFi 肯定知道,记住无线技术一般是W开头的,但有个特殊的A开头)
- APON 不是无限传输技术,这个经常是迷惑项
2.3.3 广域网 QoS
考的时候通常只写英文缩写,下面写上中文名是为了方便你记忆(其他的地方也应该养成粗略推测英文缩写的习惯)
- 主要的技术有 资源预留(RSVP)、区分服务(DiffServ)、多协议标记交换(MPLS)
2.3.4 接入技术特征
- ASDL 使用一对铜双绞线,具有非对称技术特性,上行速率 64 kbps
640 kbps,下行速率 500 kbps7 Mbps - 采用 ADSL 技术可以通过 PSTN 接入 Internet
- Cable Modom(电缆调制解调器)利用频分复用的方法将信道分为上行信道和下行信道,把用户计算机与有线电视同轴电缆连接起来
- 光纤传输距离可达 100km 以上(这个知道光纤很远就行了)
2.3.5 服务器技术
- 热插拔功能允许用户在不切断电源的情况下更换硬盘、板卡等(不能更换主板卡)
- 集群技术中,如果一台主机出现故障,不会影响正常服务,但会影响系统性能
- 磁盘性能表现在储存容量和 I/O 速度(I/O=input/output 即输入/输出,学过计算机应该知道)
- 服务器总体性能取决于 CPU 数量、CPU 主频、系统内存、网络速度
2.3.6 综合布线
- 双绞线可以避免电磁干扰
- 嵌入式插座用来连接双绞线
- 多介质插座用来连接铜缆和光纤,满足用户“光纤到桌面”的需求
- 建筑群子系统可以是多种布线方式的任意组合,地下管道布线是最理想的方式
- STP 比 UTP 贵、复杂、抗干扰能力强、辐射小
- 水平布线子系统电缆长度在 90 m 以内
- 干线线缆铺设经常采用点对点结合和分支结合两种方式
2.3.7 BGP 协议
- BGP 是边界网关协议,而不是内部网关协议(所以遇到问某两个自治系统之间使用什么协议,就选 BGP)
- BGP 交换路由信息的节点数不小于自治系统数
- 一个 BGP 发言人使用 TCP(不是UDP)与其他自治系统的 BGP 发言人交换信息
- BGP 采用路由向量协议,而 RIP 采用距离向量协议
- BGP 发言人通过 update 而不是 noticfication 分组通知相邻系统
- open 分组用来与相邻的另一个 BGP 发言人建立关系,两个 BGP 发言人需要周期性地交换 keepalive 分组来确认双方的相邻关系
2.3.8 RIP 协议
- RIP 是内部网关协议中使用最广泛的一种协议,它是一种分布式、基于距离向量的路由选择协议,要求路由器周期性地向外发送路由刷新报文
- 路由刷新报文主要内容是由若干个(V,D)组成的表。V 标识该路由器可以到达的目标网络(或目的主机);D 指出该路由器到达目标网络(或目标主机)的距离。距离D对应该路由器上的跳数。其他路由器在接收到某个路由器的(V,D)报文后,按照最短路径原则对各自的路由表进行刷新
- 使用 RIP v1 路由协议在配置网络地址时无须给定子网掩码
2.3.9 OSPF 协议
- OSPF 是内部网关协议的一种,每个区域有一个 32 位的标识符,区域内路由器不超过 200 个
- 区域内每个路由器包含本区域的完整网络拓扑,而不是全网的情况(拓扑的意思是链接形式和位置关系之类的)
- 链路状态“度量”主要指费用、距离、延时、带宽等
- OSPF 采用洪泛法交换链路状态信息
2.3.10 集线器
- 工作在物理层,连接到一个集线器的所有结点共享一个冲突域
- 集线器不是基于 MAC 地址完成数据转发,而是用广播的方法
- 在链路中串接一个集线器可以监听数据包
- 每次只有一个结点能够发送数据,而其他的结点都处于接收数据的状态。这些结点执行CSMA/CD介质访问控制方法
2.3.11 交换机
- 是一种工作在数据链路层的网络设备,基本功能是维护一个表示 MAC 地址和交换机端口对应关系的交换表
- 在源端口与目的端口间建立虚链接
- 具有三种交换模式:1.快速转发直通式,接收到前 14 个字节就转发数据;2.碎片丢弃式,缓存前 64 个字节;3.储存转发式,转发之前读取整个帧
- 三层交换机是具有部分路由器功能的交换机,用于加快大型局域网内部的数据交换
2.3.12 路由器
- 丢包率是衡量路由器超负荷工作时的性能指标之一
- 背板能力决定路由器吞吐量
- 传统路由器一般采用共享背板的结构,高性能路由器一般采用交换式的结构
- 突发处理能力不是以最小帧间隔值来衡量的
- 语音视频业务对延时抖动要求较高
- 高端路由器应达到:无故障连续工作时间大于 10 万小时;故障恢复时间小于 30 分钟;切换时间小于 50 毫秒
2.3.13 IEEE 802.11
- IEEE 802.11 最初定义的三个物理层包括了两个扩频技术和一个红外传播规范,无线频道定义在 2.4GHz ISM频段,传输速度 1~2 Mbps
- 802.11b 最大容量 33 Mbps,将传输速率提高到 11 Mbps,802.11a和802.11g 将传输速率提高到 54 Mbps
- IEEE 802.11d 是当前最流行的 STP(生成树协议)标准
- IEEE 802.11b 标准使用的是开放的 2.4GHZ 频段,无须申请就可以直接使用
2.3.14 蓝牙
- 同步信道速率 64 kbps,跳频速率为 1600 次/s
- 工作在 2.402 ~ 2.480 GHz 的 ISM 频段
- 非对称的异步信道速率为 723.2 kbps / 57.6 kbps
- 对称的异步信道速率为 433.9 kbps
- 发射功率为100mw时,最大传输距离为100米
2.3.15 Serv-U FTP 服务器
- 使用动态 IP 地址时,服务器 IP 地址应配置为空,而不是 0.0.0.0。(为空代表全部 IP 地址)
- 每个 Serv-U FTP 服务器中的虚拟服务器由 IP 地址和端口号唯一识别,而不是依靠 IP 地址
- 向服务器中添加“anonymous”,系统自动判定为匿名。而不是创建新域时自动添加一个“anonymous”匿名
- 服务器最大用户数是指服务器允许同时在线的最大用户数量
- 用户上传下载选项要求 FTP 客户端在下载信息的同时也要上传文件
2.3.16 DNS 服务器
- 允许客户机在发生更改时动态更新其资源记录
- DNS 服务器中的根服务器被自动加入到系统中,不需管理员手工配置
- 转发器是网络上的 DNS 服务器(不是路由器),用于外域名的 DNS 查询
- 使用 nslookup 命令可以测试正向和反向查找区域
- 主机记录的生存时间指该记录被客户端查询到,放在缓存中的持续时间
2.3.17 DHCP 服务器
- 负责多个网段 IP 地址分配时需配置多个作用域
- 添加保留时需在 DHCP 客户机上获得其 MAC 地址信息(添加排除时不需从客户端获得 MAC 地址)
- 不添加排除和保留时,服务器可将地址池内的 IP 地址动态指派给 DHCP 客户机
- 地址池是作用域应用排除范围之后剩余的 IP 地址
- 保留是指确保 DHCP 客户端永远可以得到同一 IP 地址,客户端可以释放该租约
- 收到非中继转发的“DHCP发现”消息时,选择收到该消息的子网所处的网段分配 IP 地址
2.3.18 WWW 服务器
- Web 站点可以配置静态和动态 IP 地址
- 访问 Web 站点时可以使用站点的域名或站点的 IP 地址
- 建立 Web 站点时必须为该站点指定一个主目录好,也可以是虚拟的子目录
- Web 站点的性能选项包括影响带宽使用的属性和客户端 Web 连接的数量
- 在 Web 站点的主目录选项卡中,可配置主目录的读取和写入等权限
2.3.19 Wmail 邮件服务器
- Winmail 用户不可以使用 Outlook 自行注册新邮箱
- Winmail 快速设置向导中创建新用户时,输入新建用户的信息,包括用户名、域名及用户密码(不是系统邮箱的密码)
- 建立路由时,需在 DNS 服务器中建立该邮件服务器主机记录和邮件交换器记录
- 邮件系统工作过程:1.用户在客户端创建新邮件;2.客户端软件使用 SMTP 协议将邮件发到发件方的邮件服务器;3.发件方邮件服务器使用 SMTP 协议将邮件发到收件方的邮件服务器;4.接收方邮件服务器将收到邮件储存待处理;5.接收方客户端软件使用 POP3 或 IMAP4 协议从邮件服务器读取邮件
- 邮件交换器记录的配置只能在服务器上,不能通过浏览器配置
- Winmail 支持基于 Web 方式的访问和管理,管理工具包括系统设置、域名设置等
- 发送邮件时通常采用 SMTP 协议,接收邮件时通常采用 POP3 或者 IMAP 协议。Winmail 用户使用浏览器查看邮件会使用到 HTTP 协议
2.3.20 PIX 防火墙
- 监视模式中,可以更新操作系统映像和口令恢复
- 防火墙开机自检后处于非特权模式,输入“enable”进入特权模式
2.3.21 可信计算机评估准则
- 没有保护就是 D类,不能用于多用户环境下重要信息处理
- 提到用户自主保护就是 C类
2.3.22 入侵防护系统
- HIPS 基于主机的入侵防护系统,安装在受保护的主机系统中
- NIPS 基于网络的入侵防护系统,布置在网络出口
- AIPS 基于应用的入侵防护系统,部署于应用服务器前端 (他们的首字母 H、N、A 即 Host、Net、Application)
2.3.23 网络攻击
- DDos 攻击:利用已经攻占的多个系统向目标攻击,被害设备面对大量请求无法正常处理而拒绝服务
- SYN Flooding 攻击:利用 TCP 三次握手过程,使受害主机处于会话请求之中,直至连接超时停止响应
- SQL 注入攻击:属于利用系统漏洞,防火墙(基于网络的防护系统)无法阻断
- Land攻击:向某个设备发送数据包,并将数据包的源 IP 地址和目的地址都设置成攻击目标的地址
- 基于网络的防护系统也无法阻断 Cookie篡改 和 DNS欺骗
- Tear doop 、Smurf 攻击可以被路由器阻止
2.3.24 无线局域网设备
- 无线接入点(AP):集合无线或者有线终端(类似于集线器和交换机),负责频段管理和漫游工作(SSID 是客户端设备用来访问接入点的唯一标识)
- 无线路由器:具有无线路由功能和 NAT 功能的 AP ,可用来建立小的无线局域网。
- 无线网桥:用于连接几个不同的网段,实现较远距离的无线通信(网桥最重要的维护工作是构建和维护 MAC 地址表)
- 无线网卡:实现点对点通信,安装于各终端节点
2.3.25 VLAN
- VLAN name 用 1~32 个字符表示,它可以是字母和数字。不给定名字的 VLAN 系统自动按缺省的 VLAN 名(VLAN00xxx)
- VLAN ID的取值范围是 1~4094。其中无法执行“no vlan 1”命令
2.3.26 Cisco 路由器上的存储器
- Flash 主要用于存储当前使用的操作系统映像文件和微代码
- NVRAM 主要存储启动配置文件或备份配置文件
- RAM 主要存储路由表、快速交换缓存、ARP 缓存、数据分组缓冲区和缓冲队列、运行配置文件等
- ROM 主要用来永久保存路由器的开机诊断程序、引导程序和操作系统软件
2.3.27 防火墙对应端口的连接方案
pix525 在缺省情况下
- ethernet0 被命名为外部接口 outside,安全级别是 0
- ethernet1 被命名为内部接口 inside,安全级别是 100
- ethernet2 被命名为中间接口 dmz,安装级别是 50
2.3.28 STP 生成树结构
- 无论是根的确定,还是树状结构的生成,主要依靠 BPDU 提供的信息
- Bridge ID 由两个字节的优先级值和 6 个字节的交换机 MAC 地址组成,优先级取值范围是0~61440,增值量是4096,优先值越小,优先级越高
- MAC 地址最小的为根网桥
- BPDU 数据包有两种类型,配置 BPDU 不超过 35 个字节,拓扑变化通知 BPDU 不超过 4 个字节
2.3.29 Catelyst 配置命令
- Catelyst3548 设置时间的格式是:clock set 小时:分钟:秒 日 月 年
- Catelyst6500 设置时间的格式是:set time 星期 月/日/年 小时 分钟 秒
2.3.30 其他
有一些知识点因为考频不是很高或者比较复杂,就不写了,自己做题时积累或者放弃。
在遇到陌生题目时,试着结合常识思考推断。 比如说,某网络计划有三台计算机,但只有一个 VALN 端口,需要的设备是() 这里需要的其实就是路由器,联想宿舍上网的情况
3.大题(前四道每道10分,最后一道20分)
3.1 第一道 填地址表
例:
| IP 地址 | 115.151.29.58 |
|---|---|
| 子网掩码 | 255.240.0.0 |
| 地址类别 | 【1】 |
| 网络地址 | 【2】 |
| 直接广播地址 | 【3】 |
| 主机号 | 【4】 |
| 子网内第一个可用 IP 地址 | 【5】 |
解:
| IP 地址类别 | IP 首段范围 |
|---|---|
| A类 | 1~127 |
| B类 | 128~191 |
| C类 | 192~223 |
则【1】填:A类
对 IP地址和子网掩码做如下处理:
熟练以后其实没有看起来这么麻烦,做两道就会了。少数情况会给出表格的后两项,让你补充前五项,原理其实是一样的,倒推一下。
这道题是大题里面考点最稳定的一道,必须掌握。
3.2 第二道 配置路由器
例:
一般就考这些空,做几道之后就能填上大部分,小部分可以放弃。
3.3 第三道 DHCP 报文
例:


3.4 第四道 sniffer 数据包
例1:
根据图中信息回答以下问题
- 该主机执行的命令是( ),该主机配置的 DNS 服务器的 IP 地址是( ) 解:看图中有 ICMP 几个字母,还有个邮箱地址,所以命令是 tracert mail.tj.edu.cn,DNS服务器的 IP 地址是第一行第二个地址 202.113.64.3(只要这么问,就基本是第一行第二个)
- 图中 ② ③ ④ 处分别是( ) 解:② 处前面 Protocol 意思是协议,协议就是 ICMP;③ 写源地址,就是第一行第一个地址 202.113.64.137;④ Destination address 意思是目的地址,这个位置应该写题中有的网址 mail.tj.edu.cn。
例2:
根据图中信息回答以下问题
- 该主机配置的域名服务器的 IP 地址是( ) 解:和上题一样,还是第一行第二个 202.113.64.3
- ① 处的信息应该是( ) 解:填 ACK。一般都是有一个 SEQ,后再有一个 ACK,接着再有 SEQ,再有 ACK。他们的数值每次 +1,有时候会根据上下行填数字。
- 主机 202.38.97.197 是( )服务器,其提供服务的端口是( ) 解:因为图中有 FTP 几个字母,所以这是 ftp服务器;提供服务的端口是 21(DNS服务器的端口是 53,邮件服务器的端口是 6)
- 该主机执行的命令是( ) 解:填 ftp ftp.pku.edu.cn(网站在图中,前面加 ftp)
这道题通常就考上面这两种模式,一种有 ICMP 对应 tracert mail.tj.edu.cn 的,一种有 FTP 对应 ftp ftp.pku.edu.cn 的。 如果让写 URL 就是 https :// mail.tj.edu.cn 或者 ftp :// ftp.pku.edu.cn(中间都没有空格,我为了格式不自动转换成链接才加的)
第四道大题也是考点很不稳定的一道。
3.5 最后一道

3.5.1 填表部分(12分)
| 目的网络/掩码长度 | 输出端口 |
|---|---|
| 【1】 | S0(直接连接) |
| 【2】 | S1(直接连接) |
| 【3】 | S0 |
| 【4】 | S1 |
| 【5】 | S0 |
| 【6】 | S1 |
解:图中最上方的 RG 有两个分支,左侧分支是 S0 ,有末段为 129 和 130 的两个地址,进行聚合:
所以【1】处填 192.168.6.128/30 ;同理【2】处是 192.168.6.133 和 192.168.6.134 聚合,结果为 192.168.6.132/30。
做题实际上只要写出最后那段就行,前面选择题时已经说过了。
【3】是 RE 下方 192.168.6.65、192.168.6.66、192.168.6.67 三个子网的聚合; 【4】是 RF 下方 192.168.6.80、192.168.6.81、192.168.6.82 三个子网的聚合; 【5】是 左下方 192.168.64.0/24、192.168.65.0/24、192.168.66.0/24、192.168.67.0/24 四个地址块的聚合; 【6】是 右下方 192.168.96.0/24、192.168.97.0/24、192.168.98.0/24、192.168.99.0/24 四个地址块的聚合;
在【3】【4】两空聚合时往往需要多注意
最终答案应为
【3】192.168.6.64/29
【4】192.168.6.64/27
【5】192.168.64.0/22
【6】192.168.96.0/22
这个填表是必拿分的题。
3.5.2 中间部分(2~4分)
这部分考点很不固定,下面是频率稍高的,考试这几分放弃也可以
- 问在某路由器上,最多还可链接的路由器数量是多少。如果所在子网掩码是 /29 就填 3,是 /28 就填 11。
- 问串接一种设备能监听路由器之间的流量,写 TAP
- 问串接一种设备能提供安全保护,一般是 IPS
- 问防火墙访问外网设置,分别填 nat 和 global
3.5.3 计算子网掩码和 IP 段部分(4~6分)
例:将 192.168.66.128/25 划分为三个子网,子网 1 能容纳 50 台主机,子网 2 和 3 能分别容纳 20 台主机……求他们的子网掩码和可用 IP 地址段
解:题中说多少台主机的具体数字不重要,刚好大于那个数字的 2 的 n 次方的数才重要。 比如 50 台,就是 64,是 2 的 6 次方。所以子网掩码后 6 位都是 0 (前面全是 1 ),11111111.11111111.11111111.11000000 ,最后填空写 255.255.255.192 同理 20 台,就是 32,是 2 的 5次方。所以子网掩码后 5位都是 0,最后填空 2 和 3 的子网掩码都是 255.255.255.224
可用 IP 地址从题目所给的那个数 +1 开始,本题是 192.168.66.129(因为太乱,下面只写末段数字,反正前面都一样)
从 129 开始,因为子网 1 的那个数字是 64 ,所以到 190 结束(129+64**-3**=190,不用管为什么,结束都是 -3)
下一段从 193 开始(190**+3**=193,不用管为什么,开始都是 +3),因为子网 2 的那个数字是 32 ,所以到 222 结束(193+32**-3**=222)
再下一段从 225 开始(222**+3**=225),因为子网 3 的那个数字也是 32 ,所以到 254 结束(225+32**-3**=254)
写成答案分别为:
子网 1 的可用 IP 地址段为 192.168.66.129192.168.66.190
子网 2 的可用 IP 地址段为 192.168.66.193192.168.66.222
子网 3 的可用 IP 地址段为 192.168.66.225~192.168.66.254
看起来上面写了一大堆,其实明白了就很简单,这个也是必拿分的题。