计算机网络
第一章、计算机网络体系结构
1.主机间的通信方式(应用程序结构)
客户机服务器结构(C/S):提供一个长期在线的服务器,客户机间无需直接通信
P2P 结构:没有长期在线的服务器,任意端系统间可以直接进行通信,同一端系
统既可以作为主机也可以作为服务器。
2.电路交换、报文交换和分组交换的区别?
电路交换:整个报文的比特流从源点直达终点,如传统电话网络
报文交换:将整个报文转发到相邻节点,全部存储下来,查找转发表,转发到下
一个节点,是存储-转发类型的网络。
分组交换:将报文分组转发到相邻节点,全部存储下来,查找转发表,转发到下
一个节点,是存储-转发类型的网络。
3.计算机网络的主要性能指标
带宽:每秒传输多少比特的数据,表示网络的通信线路所能传送数据的能力
时延:总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延
(1) 排队时延:分组在路由器的输入队列和输出队列中排队等待的时间 。
(2) 处理时延:路由器收到分组时进行处理所需要的时间。
(3) 传输时延(发送时延) :结点将分组推向链路所需的时间。
(4) 传播时延 :电磁波在信道中传播所需要花费的时间。
4.计算机网络提供的服务的三种分类?
面向连接服务与无连接服务
可靠服务和不可靠服务
有应答服务和无应答服务
5.OSI和TCP/IP模型各个层之间的协议和功能★★★★★★(必考)
OSI 参考模型各层功能:
(上)应用层:支持网络应用。
表示层:为应用层进程提供格式化表示和转换数据服务。
会话层:允许不同主机上的各个进程间进行会话。
传输层:进程间的数据传输。
网络层:数据报从源到目标的路由选择
数据链路层:网络中邻居节点的数据传输。
(下)物理层:在物理媒体上传输原始的数据比特流。
各层的代表协议:
应用层: FTP(文件传输协议),SMTP(电子邮件协议),HTTP(超文本传输
协议),域名解析服务(DNS)
传输层:TCP(Transmission Control 传输控制协议) UDP(User Datagram 用户
数据报协议)
网络层:IP、ARP、OSPF
链路层:PPP、以太网、帧中继
传输单元:
应用层: message 报文
传输层:segment 报文段
网络层:datagram 数据报
链路层:fram帧
TCP/IP 模型:
(高)应用层(会话层+表示层+应用层)
传输层:
网络层:
(低)网络接口层(物理层+链路层)
6.TCP/IP模型与OSI参考模型的比较
**相似:**二者都采用分层的体系结构,将复杂的问题划分成若干易于处理的问题。
二者都基于独立的协议栈的概念。
**不同:**OSI参考模型的最大贡献就是定义了服务、协议、接口这三个概念,符合面向对象的思想,而TCP/IP模型在这三个概念上没有明显的区分,不符合软件工程的思想。
7.计算机网络为什么要分层?优点? ★★★
**作用:**分层是为了封装对下层的变化
优点:
1.分层可以将复杂的问题划分成若干易于处理的问题,降低问题的复杂度。
2.各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口(即界面)所提供的服务
2.灵活性好,易于维护和升级。当任何一层发生变化时,只要层间接口关系保持不变,其他层均不受影响。
8.什么是封装?通信协议栈的通信过程?
**封装:**应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部
**过程:**数据沿着协议栈从应用层开始传递,每层协议都将在上层数据的基础上加上自己的头部信息,报文被封装成报文段,然后封装成数据报,最终被封装成了帧,发送到了传输介质上。到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。
9.端到端通信和点到点通信的区别
端到端:机器之间的通信,
点到点:进程间的通信
10.协议三要素?(语法、语义、时序)★★
语义:用来说明通信双方应当怎么做。比如:需要发出何种控制信息,以及完成的动作与做出什么样的响应。
语法:用来规定信息格式。
时序:时序是对事件发生顺序的详细说明。(也可称为"同步")。
第二章、物理层

1.单工、半双工、全双工通信
单工:只有一个方向可以通信
半双工:通信双方都可以发送接收信息,但不能同时发送接收信息
全双工:通信双方可以同时发送接收信息
2.奈示准则与香农定理
奈示准则:带宽受限无噪声的情况下,理想低通信道的极限数据传输率。
香农定理:带宽受限有噪声的情况下,信道的极限数据传输速率。
3.分组交换的两种方式:虚电路和数据报
数据报网络应用于internet,是面向非连接的,提供不可靠的服务,没有流量控制和拥塞控制。
虚电路网络是传统电话衍生而来的,是面向连接的,提供可靠的服务,具有流量控制和拥塞控制。
4.传输介质
有导传输媒体:同轴电缆、光纤、双绞线
无导传输媒体:无线电、卫星通讯
5.频分复用 时分复用 波分复用 码分复用
复用是指将一个物理信道根据时间、频率、空间等资源划分为多个虚拟信道。
第三章、数据链路层

1.流量控制和拥塞控制是什么关系? ★★★★
- 流量控制:如果发送方把数据发送得过快,接收方可能会来不及接收,这
就会造成数据的丢失。
(2)拥塞控制:拥塞控制就是防止过多的数据注入到网络中,防止网络中的路由器或链路过载。拥塞的两种解决方法:慢开始+拥塞避免,快重传+快恢复。
(3)关系:流量控制是为了预防拥塞。流量控制指点对点通信量的控制。而拥塞控制是全局性的,涉及到所有的主机和降低网络性能的因素。
2.流量控制的常见方式?
(1)停 - 等方式:发送方每发送一帧,都要等待接收方的应答信号,之后才能发
送下一帧,如果接收方的应答信号丢失,则发送方必须一直等待,效率低。
- 滑动窗口方式:接收方在返回的数据中会包含自己的接收窗口的大小,以
控制发送方的数据发送。
- 后退N 帧协议(GBN):发送方在流水线里发送N个未被确认的包,接收
方采用累计确认,例如接收方回复ACK5表示5号及之前的包都被正确接收。计时器给最早未被确认的包计时,若超时则重传所有未被确认的包(流水线协议)
(4)选择重传:单独确认所有被正确接收的包,在缓存中将这些包排好序送到上一层。发送方为每个未确认的包计时,超时则重传。(流水线协议)
3.随机访问:
胜利者通过争用获得信道,从而获得信息的发送权
4.什么是介质访问控制?为什么要采用介质访问控制?都有什么方法?
分配传输介质的使用权,使得两对结点之间的通信不会发生相互干扰的情况
原因:因为局域网是一种广播式的网络(广域网是一种点对点的网络),所有联网计算机都共享一个公共信道,所以,需要一种方法来分配传输介质的使用权,使得两对结点之间的通信不会发生相互干扰的情况,这种功能就叫介质访问控制。

5.ALOHA协议
纯ALOHA :只要结点需要发送数据,那么就不进行任何检测就发送信息。如果一段时间后没有收到回复信息那么认为信道发生碰撞,等待一段时间后再次发送,直到发送成功为止。最大效率0.18。
时隙ALOHA:将时间划分为等长的时隙,当结点有新的帧时,在下一个时隙发送。如果2个或2个以上结点在同一时隙发送帧,结点可以检测到冲突,并使该结点在下一个时隙以概率p重传该帧,直至成功。最大效率0.37。
6.简述一下CSMA/CD协议★★★★
CSMA :载波侦听多路访问
发前先听(终端设备在发送前要先侦听线路状态),如果侦听到信号忙则推迟发送,如果侦听到信号空闲则立即发送整个帧。冲突(存在另一个设备同时发送数据)也要发完,因此会浪费信道。
CSMA/CD :载波侦听多路访问/ 冲突检测技术
发前先听,如果侦听到信号忙则推迟发送,如果侦听到信号空闲则立即发送整个帧。边发边听,冲突则中止发送,发送特殊阻塞信息(以强化冲突信号,使线路上其他站点能够尽早检测到冲突),等待一段时间后再发送数据,可以节省信道。
7.PPP 协议:
PPP协议是一种点到点链路层协议,是为在两个对等点之间传输数据包的简单链路而设计的。
第四章、网络层

1.路由器的主要功能?
一是路由选择(确定哪一条路径),二是分组转发(当一个分组到达
时所采取的动作)
2.距离向量算法(RIP算法)
每个结点仅与它的直接邻居交谈,每个结点为它的邻居提供从自己到网络中所有其他结点的最低费用估计。
每个路由器维护一个距离向量表,然后通过相邻路由器之间的距离向量通告进行表的更新。每个距离向量表项包括两部分:到达目的结点的最佳线路,和到达目的结点所需距离。每隔一段时间,路由器会向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表。
3.链路状态路由算法(例如OSPF算法)
每个结点通过广播的方式与所有其他结点交谈,但它仅告诉它们与它直接相连的链路的费用。
4.边界网关协议(Border Gateway Protocol, BGP) :
是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。
5.机器的ip地址和mac地址,他们有什么区别,有什么用途?★★
IP **地址:**是网络中设备的唯一标识,每台连网计算机都依靠IP地址来标识自己。IPv4 32位,包括网络部分和主机部分
**子网掩码:**用来指明一个IP地址的哪些位是网络部分,哪些位是主机部分
**子网:**当一个较大的网络被划分为较小的网络时,这就是所谓的子网。对于较小的网络,维护更容易。
MAC **地址:**用于在网络中唯一标识一个网卡,每个网卡都有一个全球唯一的 MAC 地址。
区别:
(1)IP地址可变,而MAC地址不可变。
(2)长度不同。IP地址为32位,MAC地址为48位。
(3)IP 地址是网络层使用的地址,它是分层次等级的。MAC地址是数据链路层使用的地址,它是平面式的。
6.地址解析协议(ARP)和RARP协议★★
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时,将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网的网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。 RARP 可以使用于以太网、光纤分布式数据接口及令牌环 LAN等。
7.动态主机配置协议
动态主机配置协议(Dynamic Host Confifiguration Protocol, DHCP) 常用于给主机动态地分配IP地址,它提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP 地址而不用手工参与。
两台连接到互联网上的电脑相互之间通信,必须有各自的IP地址,由于IP地址资源有限,宽带接入运营商不能做到给每个用户都分配一个固定的IP地址,所以要采用DHCP方式对上网的用户进行临时的地址分配。
也就是你的电脑连上网,DHCP服务器才从地址池里临时分配一个IP地址给你,每次上网分配的IP地址可能会不一样,这跟当时IP地址资源有关
第五章、传输层

1.TCP和UDP的异同点★★★★★★(必考)
TCP(Transmission Control Protocol),传输控制协议。
UDP(User Data Protocol),用户数据报协议。
相同点: TCP和UDP都是传输层的协议
区别:
- TCP 是面向连接的 ,发送数据前需要在客户机服务器间建立连接;UDP 是面向非连接的,即发送数据之前不需要建立连接
- TCP 是一种可靠的数据传输 ,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP 是一种不可靠的数据传输,只是尽最大努力交付并不提供其他保障。
- TCP 可以提供流量控制和拥塞控制,而UDP 不提供这些保障。因此网络出现拥塞不会使源主机的发送速率降低(UDP对实时应用很有用,如实时视频会议等)
- UDP 是面向报文的 ,发送端什么,接收端就收什么。TCP 是面向字节流的,数据是分批次发过去的。
2.TCP的三次握手四次挥手过程?为什么会采用三次握手,若采用二次握手可以吗?★★★★★(必考)
三次握手:(建立连接)
第一次握手:客户机TCP向服务器TCP发送连接请求报文段,TCP客户进程进入SYN_SEND(同步已发送)状态。
第二次握手:服务器的TCP收到连接请求报文段后,如同意建立连接,则向客户发回确认(SYN+ACK包),TCP服务器进程进入SYN_RECV(同步收到)状态。
第三次握手:客户端收到服务器的确认报文段(SYN+ACK包),向服务器发送确认包ACK(ack=y+1),客户端和服务器进入ESTABLISHED(已建立连接)状态,完成三次握手。

STN:报文段首部中的同步位
Seq=x:选择一个初始序号(SYN报文段不能携带数据,但是需要消耗一个序号)
确认号ack:其数值等于发送方的发送序号seq+1(即接收方期望接收的下一个序列号)。
Seq=y ack=x+1: 发送的报文段的序号是y,下一个想要接收到的报文段序号为x+1
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
四次挥手:(断开连接)
第一次挥手:客户机打算关闭连接时,发送连接释放报文段(该报文段终止位FIN置1),并停止发送数据。(但还可以接收数据)
第二次挥手:服务器收到连接释放报文段后即发出确认,确认号为收到序号+1。服务器进入CLOSE-WAIT(关闭等待)状态,此时从客户机到服务器这个方向的连接就释放了。
第三次挥手:若服务器已经没有数据要向客户机发送,则发出FIN=1的连接释放报文段,重复上次已发送的确认号,此时服务器进入LAST-ACK(最后确认)状态。
第四次挥手:客户机收到连接释放报文段后,发送确认ACK=1的确认报文段,客户机进入CLOSER(连接关闭)状态。

为什么采用三次握手?
采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。
采用两次握手不行,原因就是上面说的失效的连接请求的特殊情况,因此采用三次握手刚刚好,两次可能出现失效,四次甚至更多次则没必要,反而复杂了。
3.介绍下TCP和UDP协议的特点、头部结构★★★★★
TCP :
(1)TCP是面向连接的,发送数据前需要在客户机服务器间建立连接;
(2)TCP是一种可靠的数据传输。传送的数据无差错、不丢失、不重复、按序到达;
(3)TCP可以提供流量控制和拥塞控制
(4)TCP是面向字节流的,数据是分批次发过去的。
(5)每一条TCP连接只能有两个端点(即两个套接字),只能是点对点的;
UDP :
(1)UDP是面向非连接的,发送数据前不需要建立连接;
(2)UDP是一种不可靠的数据传输,只是尽最大可能交付而不提供其他保障。
(3)UDP不提供流量控制和拥塞控制,因此网络出现拥塞不会使源主机发送速率降低(UDP对实时应用很有用,如实时视频会议等)
(4)UDP是面向报文的,发送端发送什么,接收端就接受什么
TCP 头部结构:
一个TCP报文段分为首部和数据两部分,头部长度为20~60字节(选项最多占40个字节)

源端口号:告知主机该报文段来自哪里
**目的端口号:**该报文段要传给哪个上层协议或应用程序
序号:TCP是面向字节流的,所以TCP连接传送的字节流中的每个字节都按照序号编号。序号字段的值是指本报文段所发送数据的第一个字节的序号。
确认号:期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,表明到序号N-1为止的所有数据都已经正确收到。
头部长度:指出TCP报文段的数据起始处距离报文段的起始处有多远。
6 位标志位包含如下几项:
URG标志(紧急位):表示紧急指针是否有效。
ACK标志(确认位):表示确认号是否有效,我们称携带ACK标识的TCP报文段为确认报文段。
PSH标志(推送位):提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。
RST标志(复位位):表示要求对方重新建立连接。
SYN标志(同步位):请求建立一个连接,表示这是一个连接请求报文。
FIN标志(终止位):用来释放一个连接,我们称携带FIN标志的TCP报文段为结束报文段。
窗口大小:指出现在允许对方发送的数据量,是TCP流量控制的一个手段,这样对方就可以控制发送数据的速度。
**校验和:**检验TCP报文段在传输过程中是否损坏,由发送端填充,校验范围包括首部和数据。这是TCP可靠传输的一个重要保障。
UDP 头部结构:
一个UDP报文段分为首部和数据两部分,头部长度为8字节
(1)源端口号: 记录源端口号,在需要对方回信时选用。不需要时可全0。
(2)目的端口号: 记录目标端口号。这在终点交付报文时必须要使用到。
(3)UDP 长度: UDP数据报的长度(包括数据和首部),其最小值为8B(仅有首部没有数据的情况)。
(4)UDP 校验和: 检测UDP数据报在传输中是否有错,有错就丢弃。
|---|-----------------------------------------------------------------------------|
| |
| | |
4.在TCP拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?★★
★★
(1 )慢开始算法(接收窗口rwnd,拥塞窗口cwnd) (慢启动阶段)
在开始时,将拥塞窗口(cwnd)初始值设为1MSS(MSS是最大报文段长
度),等接收方确认数据之后,拥塞窗口成倍增加,直到窗口大小等于慢开始门限值时,改用拥塞避免算法。
(2 )拥塞避免算法(拥塞避免阶段)
发送端的拥塞窗口cwnd 每经过一个往返时延RTT 就增加一个MSS的大小,
而不是加倍,使cwnd 按线性规律缓慢增长(即加法增大)。
(3 )拥塞处理
当出现一次超时(网络拥塞)时,令慢开始门限ssthresh 等于当前拥塞窗口
的一半(即乘法减小)。然后把拥塞窗口设置为1,重新执行慢开始算法。

(4 )快重传
当发送方连续收到三个重复的ACK 报文时,直接重传对方尚未收到的报文
段,而不必等待那个报文段设置的重传计时器超时。(快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段)
(5 )快恢复
快恢复算法的原理如下:发送端收到连续三个冗余ACK (即重复确认)时,
把慢开始门限设置为出现拥塞时发送方拥塞窗口的一半。与慢开始的不同之处是,它把拥塞窗口的值设置为慢开始门限ssthresh 改变后的数值,然后开始执行拥塞避免算法使拥塞窗口缓慢地线性增大

5.简述下TCP建立连接的过程,TCP如何保证可靠传输?★★★★★★
TCP采用三次握手建立连接
TCP 实现可靠性传输机制:
检验和:通过检验和的方式,接收端可以检测出数据是否有差错,假如有就会直接丢弃并重新发送。
ACK:发送端发送了一个包,但接收端没有回应确认包(ACK包),则重传,可以保证数据的完整性。
超时重传:发送方发送了一个包,但是在规定时间内没有收到他的确认包,则被认为是丢包了,进行重传。
拥塞控制:解决两台主机之间因传送速率而可能引起的丢包问题,保证了TCP数据传送的可靠性。
**流量控制:**根据接收端的处理能力,来决定发送端的发送速度。
6.TCP的快速重传机制★★★★

当发送方连续收到三个重复的ACK 报文时(其实是收到4个同样的ACK,
第一个是正常的,后三个才是冗余的),直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。(快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段)
第六章、应用层

1.简述下DNS域名解析的过程。★★★★★
域名解析是指把域名映射成为IP 地址
首先查询本地的DNS server,如果本地有缓存则直接返回,如果本地没有就问根DNS server,但他不进行解析只告诉顶级的DNS server是谁,顶级也不解析,而是告诉权威DNS server是谁,权威DNS server中有映射关系,会把她的IP地址反馈给本地DNS server,本地DNS server缓存这个映射对后再返回给主机。
2.FTP(文件传输协议)
是基于TCP的文件传输协议。它的特点是带外控制:数据连接(20)和控制连接(21)只用不同的端口号进行。
|---------------------|------------|
| 应用层协议 | 下层对应的传输层协议 |
| SMTP简单邮件传输协议 | TCP |
| POP3:(邮局协议,是邮件读取协议) | TCP |
| HTTP超文本传输协议 | TCP |
3.点击网页一次HTTP请求过程?(在浏览器里输入一个网址,会发生什么)★★★
域名解析
发起TCP3次握手
建立TCP连接后发起http请求
服务器响应请求,返回结果
浏览器得到html标签代码
浏览器解析html代码中的资源,例如js,css,img等
浏览器对页面进行渲染并呈现给用户
4.HTTP状态码及其含义★★★★ HTTP和HTTPS的区别★★★★
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。
常见的HTTP 状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
503 - 服务器超时
HTTP 和HTTPS 的区别:
HTTPS(SSL+HTTP)(SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密)
(1)HTTP是明文传输,数据未加密,安全性较差;HTTPS数据传输过程是加密的,安全性较好。
(2)使用 HTTPS 协议需要到 CA(数字证书认证机构)申请证书,一般免费证书较少。
(3)HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
(4)端口不同,HTTP是80,HTTPS是443。
(5)HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以, HTTPS 比 HTTP 要更耗费服务器资源。
第七章、没找到在哪儿
1.网卡是什么?功能?★★★
网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。由于其拥有唯一的MAC地址,因此属于OSI模型的物理层和链路层之间。
网卡的主要功能:
(1)数据的封装与解封,发送时将上一层传递的数据加上首部和尾部,成为以太网的帧;
(2)链路管理,通过CSMA/CD协议来实现;
(3)数据编码与译码
2.了解Socket吗?什么是socket?★★★★
socket是对TCP/IP协议的封装,它的出现只是使得程序员更方便地使用TCP/IP协议栈而已。他本身并不是协议,而是一组用来调用TCP/IP网络API函数的接口。
3.简述一下Cookie 和 Session的区别★★★
(1)cookie存储在客户端,session存储在服务器。
(2)session机制更安全,因为cookie存放在客户端,容易被窃取。
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器
的性能,
(4)cookie存储量有限(<=3KB);session可以无限量地往里面添加内容。
(5)结论:将登陆信息等重要信息存放为session;其他信息如果需要保留,可以放在cookie中