计算机考研复试计算机网络常见面试题
本文是我2021年考研时准备的复试面试题,现在拿出来给大家分享一下觉得好的点个赞哦,毕竟当初我也是整理了好久,改了好几次版本呢祝大家都上岸!!!!计算机网络 目录1、TCP三次握手建立连接 12、TCP四次握手释放连接 13、TCP拥塞控制的四种算法 24、拥塞控制和流量控制的区别 35、TCP是如何保证可靠传输的 36、TCP协议的特点 37、为什么不采用“两次握手”建立连接呢? 38、为何不采
本文是我2021年考研时准备的复试面试题,现在拿出来给大家分享一下
觉得好的点个赞哦,毕竟当初我也是整理了好久,改了好几次版本呢
祝大家都上岸!!!!
计算机网络 目录
9、为什么释放TCP时最后一次握手报文后要等待2MSL的时间呢? 4
10、为什么TCP在建立连接时不能每次都选择相同的初始序号 4
11、假定在一个互联网中,所有的链路传输都不出现差错,所有的结点也都不会发生故障。试问在这种情况下,TCP的“可靠交付”的功能是否就是多余的 4
46、选择重传ARQ(SR)为什么接收窗口+发送窗口要<=2n 8
47、IEEE802局域网参考模型和OSI参考模型有什么区别 8
58、因特网使用的IP协议是无连接的,那么为什么当初不把因特网设计为可靠的呢? 10
62、Cookie的作用是什么?和Session有什么区别? 11
第一步:客户机的TCP首先向服务器的TCP发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部中的SYN标志位被置为1。另外,客户机会随机选择一个起始序号x。
第二步:服务器的TCP收到连接请求报文段后,如同意建立连接,就向客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文段中,SYN和ACK位都被置为1,确认号字段的值为x+1,并且服务器随机产生起始序号y。确认报文段同样不包含应用层数据。
第三步:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段的ACK标志位被置1,序号字段为x+1,确认号字段为y+1。该报文段可以携带数据,若不携带数据则不消耗序号。
客户机在发送一次握手之后,收到第二次握手之前的状态为SYN-SENT,表示客户端已发送SYN报文。
客户机在发送第三次握手之后的状态为ESTABLISHED,表示TCP连接已经成功建立。
服务器在收到来自客户机的第一次握手之前,为LISTEN状态,表示服务器端的某个SOCKET处于监听状态,可以接受客户端的连接。
服务器在发送第二次握手之后,收到来自客户机发送的第三次握手之前,为SYN-RCVD状态,表示等待客户机的再次确认。
服务器在收到第三次握手之后,状态为ESTABLISHED。
至此,TCP连接正式完成。
第一步:客户机打算关闭连接时,向服务器发送一个连接释放报文段,并停止发送数据,主动关闭TCP连接,该报文段的FIN标志位被置1,假设序号字段为u,FIN报文段即使不携带数据,也要消耗一个序号。此时客户端不能再发送数据,但服务器还可以发送数据。
第二步:服务器收到连接释放报文段后即发出确认,确认号是u+1,假设这个报文段自己的序号是v。此时,从客户机到服务器这个方向的TCP连接就释放了,TCP连接处于半关闭状态。但服务器若发送数据,客户机仍要接收。
第三步:若服务器已经没有要向客户机发送的数据,可以通知TCP释放连接,此时向客户端发出FIN=1,ACK=1的连接释放报文段,确认序号为u+1,并假定报文段序号为w。
第四步:客户机收到连接释放报文段后,必须发出确认。在确认报文段中,ACK字段被置为1,确认号为w+1,序号为u+1。但此时TCP连接还未释放,必须等待两倍最大报文生存时间时间后,客户端才进入连接关闭状态,以保证此次TCP连接所产生的报文均在网络中消失。
客户端在发出第一次握手后,状态变为FIN-WAIT-1。收到第二次握手后,客户端状态为FIN-WAIT-2。收到来自服务器的第三次握手信息后,客户端变为TIME-WAIT状态,等待两倍最大报文段生存时间后,将变为CLOSED状态。
服务器在收到来自客户端的第一次握手后变为CLOSE-WAIT状态。当服务器向释放TCP连接时,向客户端发送第三次握手,此时服务器变为LAST-ACK状态,当收到来自客户端的第四次握手后,服务器变为CLOSED状态。
拥塞控制是指防止过多的数据注入网络,防止网络中的路由器或链路过载。
(1)慢开始算法
在TCP刚刚连接好并开始发送TCP报文段时,先令拥塞窗口为1,即一个最大报文段的长度。每收到一个对新报文段的确认后,拥塞窗口+1。也就是每经过一个往返时延,拥塞窗口加倍。慢开始一直把拥塞窗口增大到慢开始门限,然后改用拥塞避免算法。
(2)拥塞避免算法
发送端的拥塞窗口每经过一个往返时延就增加1,而不是加倍,使拥塞窗口按线性规律缓慢增长,也就是加法增大。而当出现一次超时时,令慢开始门限等于当前拥塞窗口的一半,并重置拥塞窗口为1,也就是乘法减少。
(3)快重传
当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。
(4)快恢复
发送端收到连续三个冗余ACK时,把慢开始门限设置为出现拥塞时发送方拥塞窗口的一半。与慢开始的不同之处是,它把拥塞窗口的值设置为慢开始门限改变后的数值,而不是1,然后开始执行拥塞避免算法使拥塞窗口缓慢地线性增大。
拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是指点对点的通信量的控制,即接收端控制发送端,它所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。
(1)确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。
(2)数据校验:检测数据在传输过程中是否发生变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据超时后会重发数据。
(3)数据合理分片和排序:TCP会根据最大传输单元合理分片,以防止在传输过程中进行二次分片。接收方会缓存未按序到达的数据,重新排序后再交给应用层。
(4)流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出。TCP使用的流量控制协议是可变大小的滑动窗口协议。
(5)拥塞控制:当网络拥塞时,TCP会减少数据的发送,以防止全网中网络负载过重。
(1)TCP是面向连接的传输层协议
(2)每条TCP连接只能有两个端点,每条TCP连接只能是点对点的
(3)TCP提供可靠的交付服务,保证传输的数据无差错、不丢失、不重复并且有序
(4)TCP提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。发送缓存用来暂存准备发送的数据和已经发送但尚未收到确认的数据。接收缓存暂存按序到达但尚未被接收应用程序读取的数据和不按序到达的数据。
(5)TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据仅视为一连串的无结构字节流
这主要是为了防止已失效的连接请求报文段突然又传送到服务器而产生错误。比如客户端向服务器发出TCP连接请求,第一个连接请求报文在网络的某个结点长时间滞留,客户端超时后认为报文丢失,于是再重传一次连接请求,服务器收到后建立连接。数据传输完毕后双方断开连接。而此时,前一个滞留在网络中的连接请求到达服务器,而服务器会认为客户端又发来连接请求,此时若使用三次握手,则服务器向客户端返回确认报文段,但由于这是一个失效的报文段,所以客户端将不会对服务器发送的确认报文段进行确认,也就不会错误地再次建立连接。但若采用的是“两次握手”,则这种情况下服务器认为传输连接已经建立,并一直等待客户端传输数据,而客户端此时并无连接请求,这样就造成了服务器的资源白白浪费。
关于MSL争议:由于TCP建议等待两个MSL,但是MSL具体设置为多少因厂家而异,各厂家有所区别。所以暂不考虑
如果客户端已经和服务器建立了TCP连接,当客户端主动断开与服务器的连接时,经过前两次挥手,客户端到服务器端的连接已经释放。在第三次挥手时,服务器往客户端发送连接释放报文段,如果客户端不进行第四次挥手对该报文进行确认,那么该报文一旦丢失,客户端将一直处于无法关闭状态。因为此时服务器已经关闭连接了,无法再次发送连接释放报文。
9、为什么释放TCP时最后一次握手报文后要等待2MSL的时间呢?
主机A在发送最后一个确认报文段后,再经过2MSL可保证本连接持续的时间内所产生的所有报文段从网络中消失。比如A关闭之前B还发送了很多数据包,如果这时候A的端口被一个新的应用占用了的话,那么新的应用就会接收到上个连接中B发送过来的数据包,这样就混乱了。
如果TCP在建立连接时每次都选择相同的、固定的初始序号,那么设想以下的情况:
(1)假定主机A和B频繁地建立连接,传送一些TCP报文段后,再释放连接,然后又不断地建立新的连接、传送报文段和释放连接。
(2)假定每一次建立连接时,主机A都选择相同的、固定的初始序号。
(3)假定主机A发送出的某些TCP报文段在网络中会滞留较长的时间,以致造成主机A超时重传这些TCP报文段。
(4)假定有一些在网络中滞留时间较长的TCP报文段最后终于到达了主机B,但这时传送该报文段的那个连接早已释放了,而在到达主机B时的TCP连接是一条新的TCP连接。
这样,工作在新的TCP连接下的主机B就有可能会接受过时的TCP报文段(因为这个TCP报文段的序号有可能正好处在现在新的连接所使用的序号范围之中)。结果产生错误。
因此,必须使得迟到的TCP报文段的序号不处在新的连接中所使用的序号范围之中。
这样,TCP在建立新的连接时所选择的初始序号一定要和前面的一些连接所使用过的序号不一样。因此,不同的TCP连接不能使用相同的初始序号。
除此之外,如果每一次都使用固定的序号,那么黑客很容易模拟任何IP与服务器建立连接,从而进行SYN泛洪攻击。
11、假定在一个互联网中,所有的链路传输都不出现差错,所有的结点也都不会发生故障。试问在这种情况下,TCP的“可靠交付”的功能是否就是多余的
不是多余的。TCP的“可靠交付”功能在互联网中起着至关重要的作用。
至少在以下所列举的情况下,TCP的“可靠交付”功能是必不可少的。
(1)每个IP数据报独立地选择路由,因此在到达目的主机时有可能出现失序,而TCP的可靠交付可以对其进行排序后再交给应用层。
(2)由于路由选择的计算出现错误,导致IP数据报在互联网中兜圈子,最后数据报TTL的数值下降到零,这个数据报在中途就被丢弃了。
(3)在某个路由器突然出现很大的通信量,以致路由器来不及处理到达的数据报,因此有的数据报被丢弃。
①为了保证最后一次挥手的确认报文段能够到达
如果第三次挥手和第四次挥手时为了释放服务器与客户端的单向TCP连接时,服务器没有收到来自客户端的第四次挥手信息,那么服务器将会重传第三次挥手信息。因此客户端必须维护状态信息,以便于再次对释放报文进行确认。
②防止新连接中出现旧连接的报文段
在四次挥手后,经过2MSL的时间足以让本次连接产生的所有报文段都从网络中消失,以防止下一个新连接中出现旧连接的报文段,从而导致数据错乱。
(1)GBN
如果某个报文段没有被正确接收,则从这个报文段到后面的报文段都要重新发送。
采用累计应答的方式。例如接收端返回ACK=3,则证明报文段3以及之前的报文段都被正确接收。
接收端每次仅接收一个报文段,不设置缓存区。
(2)SR
接收方设置缓存区,用于接收失序到达的分组。
接收端返回ACK是当前接收成功报文段的序号,SR不采用累计应答的方式。
为每个报文段设置单独的计时器,单个计时器超时只重发这一个报文段。
(3)TCP
TCP使用累计应答的方式,这一点与GBN类似。但是TCP中的ACK是指接收端希望从发送端收到的下一字节的序号。例如发送端发送了编号为0-5的字节,这时接收端成功接收后就会发送ACK为6,这一点与GBN不同。
TCP在接收端会设置缓存,来缓存正确接收但是失序的分组,这点与SR类似。TCP并不会为每一个报文段分别设置一个计时器,而是整体设置一个计时器,这一点与SR不同。
TCP使用快速重传机制,如果收到对于一个特定报文段的3个冗余ACK,则在超时事件发生前就会对该报文段进行重传,这一点是GBN和SR没有的。
所以TCP的差错恢复机制可视为GBN和SR的结合体。
(1)UDP无须建立连接。因此UDP不会引入建立连接的时延。
(2)无连接状态。TCP需要在端系统中维护连接状态。此连接状态包括接收和发送缓存、拥塞控制信息与确认号信息。而UDP不维护连接状态,也不跟踪这些参数。因此,某些专用应用服务器使用UDP时,一般都能支持更多的活动客户机。
(3)分组首部开销小。TCP有20B的首部开销,而UDP仅有8B的开销。
(4)应用层能更好地控制要发送的数据和发送时间。UDP没有拥塞控制,因此网络中的拥塞不会影响主机的发送效率。某些实时应用要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延,而UDP正好满足这些应用的需求。
TCP提供面向连接的、可靠的数据流传输,传输单位为报文段。
UDP提供的是非面向连接的、不可靠的数据流传输,传输单位为用户数据报。
TCP注重数据安全性,UDP数据传输快。
TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式。
TCP是面向字节流的,UDP是面向报文的。
TCP有拥塞控制机制,UDP没有拥塞控制。
TCP首部开销为20个字节,UDP的首部开销为8个字节。
TCP对应的协议:
(1)FTP:定义了文件传输协议。
(2)Telnet:一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3)SMTP:邮件传送协议,用于发送邮件。
(4)POP3:它是和SMTP对应,POP3用于接收邮件。
(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP对应的协议:
(1)DNS:用于域名解析服务,将域名地址转换为IP地址。
(2)TFTP:简单文件传输协议
(3)SNMP:简单网络管理协议,用来管理网络设备
(4)DHCP(应用层协议):给客户端分配IP,因为连IP都没有,肯定不能用TCP
在使用一些协议通讯的时候,比如Telnet,会出现每次仅发送一个字节的情景。如果不对其进行处理,每次发送这一个字节的有用数据,会额外产生20个字节的IP头和 20个字节的TCP头,这是一笔巨大的字节开销。
Nagle算法主要是避免发送小的数据包,要求TCP连接上最多只能有一个未被确认的小分组,在该分组的确认到达之前不能发送其他的小分组。并且在这期间TCP会收集这些将要发送的小分组,在确认到来时以一个分组的方式发出去。
如果一个数据包只是单纯地为了发送ACK,那么这个代价较高。所以TCP会延迟一段时间,如果这段时间内有数据需要发送给对方,则在发送数据时捎带发送ACK。
延迟ACK好处:
(1)避免糊涂窗口综合症;
(2)发送数据的时候将ACK捎带发送,不必单独发送ACK;
(3)如果延迟时间内有多个数据段到达,那么允许发送一个ACK确认多个报文段;
糊涂窗口综合症是指当发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之;就会使应用进程间传送的报文段很小,特别是有效载荷很小; 极端情况下,有效载荷可能只有1个字节;传输开销有40字节(20字节的IP头+20字节的TCP头) 这种现象。
发送端引起的糊涂窗口综合症的解决方案:Nagle算法
接收端引起的糊涂窗口综合症的解决方案:延迟ACK
(1)各层之间相互独立:上层不需要知道下层的功能是如何实现的,只需要知道通过下层的接口可以获得什么服务即可。
(2)灵活性好:只要服务和接口不变,层内实现方法可任意改变。所以随着技术的发展,每一层都可以采用最新的技术来实现功能。
(3)易于实现和标准化:采用分层结构后,可以将计算机网络复杂的通信过程划分为有序的连续动作与有序的交互过程,有利于将网络复杂的通信工作过程化解为一系列可以控制和实现的功能模块,使得复杂的计算机网络系统变得易于设计,实现和标准化
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
应用层的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;
传输层的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;
网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;
网路接口层主要协议有IEEE802.3、HDLC、PPP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。
TCP/IP协议能够迅速发展起来并成为事实上的标准,是它恰好适应了世界范围内数据通信的需要。它有以下特点:
(1)协议标准是完全开放的,可以供用户免费使用,并且独立于特定的计算机硬件与操作系统。
(2)网络地址统一分配,网络中每一设备和终端都具有一个唯一地址。
(2)高层协议标准化,可以提供多种多样可靠网络服务。
缺点:
(1)该模型没有明显地区分服务、接口和协议的概念。因此,对于使用新技术来设计新网络,TCP/IP模型不是一个太好的模板
(2)TCP/IP模型完全不是通用的,并且不适合描述除TCP/IP模型之外的任何协议栈
(3)TCP/IP模型不区分物理层和数据链路层。但这两层完全不同,物理层必须处理铜缆、光纤和无线通信的传输特征;而数据链路层的工作是确定帧的开始和结束,并且按照所需的可靠程度把帧从一端发送到另一端。
(1)地址性质不同:MAC地址是物理地址,IP地址是逻辑地址。
(2)可变性不同:MAC地址具有唯一性,每个硬件出厂时候的MAC地址是固定的;而IP地址是不固定的。
(3)工作层次不同:数据链路层基于MAC地址转发数据帧,网络层基于IP地址转发报文。
(4)长度不同:MAC地址为48位,IPv4是32位长,IPv6是128位。
(5)分配依据不同:IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商。
(1)物理层,主要负责比特传输,传输单位是比特,主要协议有CLOCK、IEEE802.3(中继器,集线器)
(2)数据链路层,主要负责加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。传输单位是帧,主要协议有PPP、HDLC
(3)网络层,主要负责IP选址及路由选择,传输单位是数据报,主要协议有IP、ICMP、OSPF、RIP
(4)传输层,主要负责建立和管理端到端的连接,TCP的传输单位是报文段,UDP的传输单位是用户数据报,主要协议有TCP、UDP
(5)会话层,主要负责建立和管理会话,主要协议有SQL
(6)表示层,主要负责数据格式转化和数据加密,主要协议有JPEG(图片)、MPEG(视频)、ASCII
(7)应用层,主要负责为应用程序提供服务,主要协议有FTP、DNS、SMTP、HTTP、TFTP
共同点:
(1)都是采用协议分层的方法,而且分层的功能也大体相似。
(2)两者都可以解决异构网的互连,实现世界上不同厂家生产的计算机之间的通信。
(3)两者都是基于独立的协议栈的概念
不同点:
(1)OSI精确地定义了服务、协议和接口这三个主要概念,符合现在面向对象编程的思想。而TCP/IP在这三个概念上没有明显区分,不符合软件工程思想。
(2)OSI参考模型产生在协议发明之前,没有偏向任何特定的协议,通用性良好。而TCP/IP模型正好相反,它首先出现的是协议,模型实际上是对已有协议的描述,所以不适合于任何其他非TCP/IP的协议栈。
(3)TCP/IP一开始就考虑到多种异构网的互连问题,并将网际协议IP作为TCP/IP的重要组成部分。而OSI最初仅考虑用一种网络将全世界计算机互联,在OSI认识到网际协议IP的重要性后,才在网络层中划分出一个子层来实现类似的功能。
(4)OSI参考模型在网络层支持无连接和面向连接的通信,但在传输层中仅有面向连接的通信。而TCP/IP认为可靠性是端到端的问题,因此它在网际层中仅有一种无连接的通信模式,但传输层支持无连接和面向连接两种模式。
(1)电路交换:整个报文的比特流从源点连续地直达终点,像在一个管道中传输。包括建立连接、传输数据和断开连接三个阶段。最典型的电路交换网络是传统电话网络。
优点:通信时延小;有序传输,不会出现失序状态;适用范围广,可以传输模拟信号,也可以传输数字信号
缺点:建立连接时间长;线路独占,信号利用率低;对故障敏感,通路中任何一点出现问题都无法继续传输;难以进行差错控制
(2)报文交换:将整个报文转发到相邻节点,全部存储下来,查找转发表,转发到下一个节点。是存储-转发类型的网络。
优点:无需建立连接;某条传输路径发生故障可以选择另外一条路径传输,提高了线路可靠性;提高了信道利用率
缺点:会有转发时延;对于报文大小没有限制,需要网络节点有较大的缓存空间
(3)分组交换:每次不再传输整个报文,将报文分组转发到相邻节点,查找转发表,转发到下一个节点。也是存储-转发类型的网络。
优点:因为分组的长度固定,所以便于缓冲区存储管理;分组是逐个传输的,所以可以使后一个分组的存储操作和前一个分组的转发操作并行,加快了传输时间;减少了重发数据量,需要重传时仅需要重传分组,而不用重传整个报文
缺点:每一个分组都需要额外的控制信息,比如源地址和分组编号等,增加了处理时间,控制相对复杂;分组可能会出现失序,需要对分组按照编号进行重新排序
虚电路和数据报都是物理层的分组交换技术(除此之外还有电路交换、报文交换)。
(1)数据报是无连接的服务,而虚电路是面向连接的;
(2)数据报的分组都是通过独立的路由选择和转发,而同属于一条虚电路的分组按照同一路由转发;
(3)数据报服务中每个分组都有完整的目的地址,但虚电路中每个分组仅存放长度较短的虚电路号。
(4)数据报不保证数据的可靠交付,虚电路可靠性由网络保证;
(5)数据报不保证分组的有序到达,虚电路保证分组的有序到达;
中继器的主要功能是将信号整形并放大再转发出去,消除因噪声而造成的失真和衰减。其原理是信号再生。中继器有两个端口,数据从一个端口输入,从另一个输出。由于中继器工作在物理层,所以它不能连接两个具有不同速率的局域网。
集线器,相当于多端口的中继器。一个端口收到数据信号后,先对信号进行整形放大,之后转发到其他所有端口。如果同时有两个或多个端口输入,那么输出时会发生冲突,致使这些数据都无效。
(1)面向连接服务与无连接服务
面向连接服务中,通信双方必须先建立连接再传输数据,这种服务可以分为连接建立、数据传输和连接释放三个阶段。例如TCP就是一种面向连接服务的协议。
无连接服务中,通信前双方不需要先建立连接,需要发送数据时可直接发送,这种服务常被描述为“尽最大努力交付”,例如IP和UDP。
(2)可靠服务与不可靠服务
可靠服务是指网络具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地。
不可靠服务是指网络只是尽量正确、可靠地传送,而不能保证数据正确、可靠地传送到目的地。
(3)有应答服务和无应答服务
有应答服务是指接收方在收到数据后向发送方给出相应的应答,该应答由传输系统内部自动实现,而不由用户实现。所发送的应答既可以是肯定应答,也可以是否定应答,通常在接收到的数据有错误时发送否定应答。例如,FTP就是一种有应答服务。
无应答服务是指接收方收到数据后不自动给出应答。若需要应答,则由高层实现。例如,对于WWW服务,客户端收到服务器发送的页面文件后不给出应答。
涉及发送数据帧时需不需要建立链路连接,目的机器收到数据帧时需不需要发回确认。
(1)无确认的无连接服务,适用于实时通信或者误码率较低的通信信道,如以太网
(2)有确认的无连接服务,适用于误码率较高的通信信道,如无线通信
(3)有确认的面向连接服务,适用于可靠性要求较高的场合
为了在出错的时候仅重发出错的帧,而不必重发全部比特流,从而提高效率。
因为网络中信息是以帧为最小单位进行传输的,所以接收端要正确的接收帧,必须要清楚该帧在一串比特流中从哪里开始到哪里结束,因为接收端收到的是一串比特流,没有首部和尾部是不能正确区分帧的。而IP数据报仅是包含在帧中的数据部分,所以不需要加尾部来定界。
(1)字符计数法
在帧的头部使用一个计数字段来表明帧内字符数,缺点是如果计数字段出错,那么就失去了帧边界划分的依据,接收双方将失去同步,从而造成灾难性后果。
(2)字符填充法
使用一些特定的字符来定界一帧的开始与结束。
(3)比特填充法
为比特流设定特殊的首尾标志,为了不使信息位中的数据被误判为首尾标志,每遇到5个连续的1时,将在其后面自动插入一个0.
(4)违规编码法
高-低电平和低-高电平用于表示数据,而高-高电平和低-低电平在数据比特中是违规的,可以利用这些违规编码序列来定界帧的开始和结束
目前常用的方法是比特填充法和违规编码法。
频分复用:将多路基带信号调制到不同频率载波上,再叠加形成一个复合信号的多路复用技术。
时分复用:将一条物理信道按时间分为若干时间片,轮流地分配给多个信号使用。
波分复用:就是光的频分复用,它在一根光纤中传输多种不同波长的光信号,由于波长不同,各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。(波长=波速/频率)
码分复用:码分复用是采用不同的编码来区分各路原始信号的一种复用方法,它既共享信道的频率,又共享时间。
假如用3比特作为数据帧编号,那么数据帧的编号是0~7,假设发送窗口为2n,也就是8,当发送端发给接收端0~7的数据帧后,接收端都成功接受并且返回确认帧。如果确认帧没有丢失,那么下一次发送端将发送新一轮的0~7数据帧;如果确认帧都丢失的话,那么下一次发送端将重传旧一轮的0~7数据帧。这两种情况下数据帧的编号都是一样的,所以接收端不能确定发送端发送的是新一轮的数据帧还是旧一轮的数据帧。
但如果是2n-1就可以了,连续ARQ包括GBN和SR。由于SR要求发送窗口+接收窗口<=2n,否则无法正常工作。所以当发送窗口为2n-1时,其接收窗口为1,退化到GBN。所以我们这里只考虑GBN即可。比如发送0~6数据帧,如果确认帧没丢失,并且GBN接收窗口为1,那么接收端将会收到编号为7的数据帧;如确认帧全部丢失了,下一次即便发送端发送的是旧一轮的0~6数据帧也没事,因为接收端会等到编号为7的数据帧,此时收到其他编号的数据帧也并不会接收(因为接收窗口为1),并且此时会重传ACK=6,告知发送端现在接收端已经收到了编号6之前的数据了。
它们都用来转发分组,工作原理也类似。但结点交换机是在单个网络中转发分组,而路由器是在多个网络构成的互联网中转发分组。
联系:两者都是互联网的重要组成构件,二者平等而不是包含关系。在广域网或局域网上的主机在该网内进行通信时,只需要使用其网络的物理地址。
区别:广域网结点之间是点到点连接,而局域网普遍是多点接入。广域网涉及物理层、数据链路层和网络层,而局域网仅涉及前两层。
两者都是广域网数据链路层协议,点到点连接,涉及物理层、数据链路层和网络层。
PPP面向字节,只支持全双工,不使用序号和确认机制,不可靠传输。并且PPP帧比HDLC帧多了一个2字节的协议字段。
HDLC面向比特,只支持全双工,使用序号和确认机制,可靠传输。
HDLC虽然是PPP协议的基础,但PPP被明确设计成用软件形式实现,而不像HDLC协议那样几乎总是用硬件形式实现。所以HDLC常采用比特填充,PPP常采用字符填充。
(1)ALOHA协议
①纯ALOHA协议
任何一个站点需要发送数据时,不进行任何检测就发送数据。如果一段时间内未收到确认,则认为传输过程中发生了冲突,此时发送站点等待一段时间后再次发送该数据。
②时隙ALOHA协议
时隙ALOHA协议把各个站点在时间上同步起来,并将时间划分为一段段等长的时隙,并规定只能在每一个时隙开始的时候发送数据。
(2)CSMA协议(载波侦听多路访问)
①1-坚持CSMA
信道忙,继续坚持侦听信道
信道空闲,立即发送数据
②非坚持CSMA
信道忙后,放弃侦听,等待一个随机时间后再次侦听
信道空闲,立即发送数据
③p-坚持CSMA
信道忙,等待下一个时隙再开始侦听
信道空闲,概率p发送数据,1-p推迟到下一个时隙发送
(3)CSMA/CD协议(载波侦听多路访问/碰撞检测)适用于有线局域网
侦听信道,信道空闲时发送数据。传输过程中边发送边侦听,若发生冲突,则采用截断二进制指数退避算法等待一段随机时间,之后准备重新发送。
(4)CSMA/CA协议(载波侦听多路访问/碰撞避免)适用于无线局域网
采用预约信道,防止其他发送站发送信息来进行碰撞避免,但只是尽量避免碰撞,而不能保证碰撞一定不会发生。
(1)两者的传输介质不同:CSMA/CD用于总线式以太网,而CSMA/CA则用于无线局域网。
(2)检测方式不同:CSMA/CD通过电缆中电压的变化来检测,而CSMA/CA采用能量检测、载波检测和能量载波混合检测。
(3)CSMA/CD可以检测冲突,但无法避免;CSMA/CA在发送数据包的时候不能检测有无冲突,但可以尽量避免。
(1)奈奎斯特定理(没有噪声、宽带有限)
W是理想低通信道的带宽,单位Hz。V表示不同码元的种类,则极限数据率为2Wlog2V。
其中2W代表波特率,如果给出波特率,则不用乘以2了。式子的单位是b/s
①在任何信道中,码元传输的速率是有上限的。若超过此上限,就会出现严重的码间串扰问题。
②信道的带宽越大,数据传输率越高。
③奈奎斯特定理给出了码元传输速率的限制,但是未对一个码元可以对应多少个二进制位给出限制。
(2)香农定理(有高斯白噪声、带宽有限)
极限数据传输率=Wlog2(1+S/N) 单位是b/s
S/N是信噪比,单位是dB。信噪比=10log10(S/N),比如S/N=1000,则信噪比为30dB。
①信道的带宽或信噪比越大,极限传输率越高
②对于一定的传输带宽和一定的信噪比来说,其信息传输速率的上限是确定的。
③只要信息的传输速率低于信道的极限传输速率,就能找到某种方法来实现无差错的传输。
数据变为模拟信号为调制,数据变为数字信号为编码。
(1)数字数据编码为数字信号
归零编码、非归零编码、反向非归零编码、曼彻斯特编码、差分曼彻斯特编码、4B/5B编码
(2)数字数据调制为模拟信号
幅移键控:改变载波信号的振幅。
频移键控:改变载波信号的频率。
相移键控:改变载波信号的相位。
正交振幅调制:在频率相同的前提下,将幅移键控和相移键控结合起来,形成叠加信号。
(3)模拟数据编码为数字信号
脉冲编码调制:对音频信号进行采样、量化,之后转换成相对应的二进制编码。
(4)模拟数据调制为模拟信号
频分复用:将不同的模拟数据调制到不同的频率,充分利用带宽资源。
基带传输是指在计算机内部或者相邻设备之间近距离传输时,信号不经过调制就在信道上直接进行传输的方式。
频带传输是指数字信号经过调制后再进行传输,适合远距离传输或者无线传输。
宽带传输是将一个信道分解成多个子信道,每个子信道可以携带不同的信号,比如频分复用。
网桥工作在数据链路层,用于连接两个或多个以太网,使之成为更大范围的以太网。网桥具有过滤帧及存储转发帧的功能,可以隔离冲突域,但不能隔离广播域。
交换机工作在数据链路层,相当于一个多端口的网桥。但网桥的端口一般连接局域网,而交换机的端口一般直接与局域网的主机相连。网桥采用存储转发,而以太网交换机还可以进行直通方式进行转发。并且由于交换机采用了专门的交换结构的芯片,所以转发速度比网桥快。
(1)透明网桥
透明网桥的路由过程取决于源网络和目的网络。透明网桥使用了一种生成树算法,以确保每个源到每个目的地只有唯一的路径,但生成树一般不是最佳路由。
(2)源路由网桥
源路由网桥选择的是最佳路由,这个最佳路由并不是经过路由器最少的路由,而是发送帧往返时延最短的路由。在源路由网桥中路由选择由发送数据帧的源站负责,源站经过探测后会在数据帧中加入路由信息。
以太网交换机主要采用两种交换模式,即直通式和存储转发式
直通式交换机只检查帧的目的地址,这使得帧在接收后几乎能马上被发送出去,这种方式速度快,但缺乏智能性和安全性,无法支持具有不同速率的端口的交换。
存储转发式交换机先缓存接收到的帧,并检查数据是否正确。确认无误后,再将该帧发送出去,如果发现帧有错误,那么就将其丢弃,转发式的优点是可靠性高并能支持不同速率端口间的转换,缺点是延迟较大。
IEEE802标准定义的局域网参考模型将数据链路层拆为两个子层,逻辑链路控制层(LLC)和媒体接入控制层(MAC)。
与接入传输媒体有关的内容都放在媒体接入控制子层中,它向上层屏蔽对物理层访问的各种差异,主要功能包括组帧和拆卸帧、差错检测。
逻辑链路控制子层与传输媒体无关,它向网络层提供无确认无连接、带确认无连接、面向连接三种不同的服务类型。
46、选择重传ARQ(SR)为什么接收窗口+发送窗口要<=2n
比如用两个比特作为数据帧编号,发送窗口为3,接收窗口为2,3+2>22
发送方发送0-2的数据帧,接收方接收后,希望下一次收到编号为3、0、1的数据帧,如果返回的确认帧都丢失的话,发送方会发送旧的0-2数据帧。如果没有丢失,将发送3和0数据帧。两种情况都含有0号帧,接收端无法判断这个0号帧是旧的还是新的。
47、IEEE802局域网参考模型和OSI参考模型有什么区别
局域网体系结构只有OSI的下两层,没有网络层及以上的结构。但即使是下两层,由于局域网是共享广播信道,两者也有很大差别。比如局域网模型的数据链路层被划分为媒体介入控制子层和逻辑链路控制子层。并且局域网模型没有网络层,这是因为在局域网中任意两个节点之间只有唯一的一条链路,不需要进行路由选择,所以局域网中不单独设置网络层。此外,IEEE802系列标准中,各个子标准的物理层和媒体接入控制子层是有区别的,而逻辑链路控制子层是相同的,也就是说,逻辑链路控制子层实际上是高层协议与任何一种媒体接入控制子层之间的标准接口。
通过观察网络负载间与网络的吞吐量的关系
如果随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,那么网络就可能进入轻度拥塞的状况。
如果网络的吞吐量随着网络负载的增大反而下降,那么网络就可能进入拥塞状态。
如果网络的负载继续增大,而网络的吞吐量下降到零,网络就可能进入了死锁状态。
A类地址:以0开头,第一个字节范围:1~127
B类地址:以10开头,第一个字节范围:128~191
C类地址:以110开头,第一个字节范围:192~223
D类地址:以1110开头,第一个字节范围:224~239(作为多播使用)
E类地址:以1111开头,保留
以下是留用的内部私有地址:
A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255
特殊的IP地址:
主机号全0表示网络本身,主机号全1表示本网络的广播地址。
127.0.0.0保留为环路自检,32位全0为本网络的本主机,32位全1为本网络的广播地址。
(1)ICMP差错报文出错时,不再发送ICMP差错报文。
(2)对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文
(3)对具有多播地址的数据报,都不发送ICMP差错报告报文
(4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报文
(1)IPv4是32位的,IPv6是128位的。
(2)IPv6只有在包的源点可以分片,传输过程中不能分片。
(3)IPv4支持单播、广播和组播,IPv6支持单播、多播和任播。
(4)IP分组头不一样,IPv4有12个域,IPv6有8个域,这一改变可以使路由器更好地处理分组,从而改善吞吐率。
IPv4向IPv6过渡可以采用双协议栈和隧道技术两种策略。双协议栈技术是指在一台设备上同时装有IPv4和IPv6协议栈,这台设备既可以和IPv4网络通信又能和IPv6网络通信。隧道技术,是将整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6可以在IPv4网络的隧道中传输。
心跳包就是在客户端和服务器间定时通知对方自己状态的数据包,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。在TCP/IP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。一方面,KeepAlive设置不合理时可能会因为短暂的网络波动而断开健康的TCP连接;另一方面,TCP自带的心跳包只能检测是否断开连接,而应用层编写的心跳包还能返回更多状态信息。所以现在大部分应用的心跳包都是在应用层重新实现的心跳包,而一般不使用TCP自带的心跳包。
(1)递归查询
当主机询问本地域名服务器时,如果本地域名服务器不知道被查域名的IP地址时,本地域名服务器将向根域名服务器发出请求报文,根域名向顶级域名服务器请求查询,之后顶级域名服务器再向权限域名服务器查询,查询完成后再一级一级反馈给根服务器,最终根服务器返回IP地址给本地域名服务器,本地域名服务器将结果保存到本地缓存,再将结果返回给主机。
- 迭代查询
主机询问本地域名服务器不知道被查域名的IP地址时,本地域名服务器将向根域名服务器发出请求报文,根域名服务器返回相应顶级域名服务器的IP地址,本地域名服务器再向顶级域名服务器发出请求,顶级域名服务器返回相应权限域名服务器IP地址。本地域名再向权限域名服务器发出请求,得到最终网站的IP地址后,本地域名将结果保存到本地缓存,最后再返回给主机。
根据IP找MAC
广播发送ARP请求,单播发送ARP响应。
工作原理如下:
(1)每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
(2)当源主机要发送数据时,首先根据目的IP地址检查ARP列表中是否有目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段广播ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。
(3)当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到自己的ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,单播发给源主机。
(4)源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。
根据MAC找IP
RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。(无盘工作站其实就是把硬盘和主机分离,无盘工作站只执行操作不执行存储。)
工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系。当无盘工作站启动后,就封装一个RARP数据包,然后广播到网络上去,请求其IP地址。当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给无盘工作站。
客户端输入 URL 或点击超链接
①如果客户端主机没有IP地址,需要向DHCP服务器请求,获取IP地址
②浏览器在本地和本地域名服务器高速缓存中查询最近是否访问过这个域名,若有记录,则返回IP地址;若无记录,浏览器向DNS服务器请求解析域名对应的IP地址
③浏览器和服务器三次握手建立TCP连接
④浏览器发出读取文件的HTTP请求,该请求报文在第三次握手的时候,作为报文数据发送给服务器
⑤服务器对请求作出响应,并把对应的文件发送给浏览器
⑥浏览器收到文件,四次挥手释放TCP连接
⑦浏览器将文件内容进行渲染显示
58、因特网使用的IP协议是无连接的,那么为什么当初不把因特网设计为可靠的呢?
传统电信网的主要用途是电话通信,并且普通电话机不是智能的,所以电信公司必须花大代价把电信网设计的非常可靠,保证用户的通信质量。
而在设计互联网时,用户端主机已经具备了一定的智能,在终端设备上就可以实现端到端的可靠传输,而不必像电信网一样设计的十分可靠,这样做会使计算机网络更便宜且更灵活。
传输媒体并不是物理层,由于传输媒体在物理层的下面,而物理层是体系结构的第一层,因此有时称传输媒体为0层。在传输媒体中传输的是信号,而传输媒体并不知道所传输的信号代表什么,但物理层由于规定了电气特性,因而能够识别所传送的比特流。
100 Continue:继续。客户端应继续其请求
101 Switching Protocols:切换协议。服务器根据客户端的请求切换协议。
200 OK:表示从客户端发送给服务器的请求被正常处理并返回
202 Accepted:已接受。已经接受请求,但未处理完成
301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改的URL;
302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL;
301与302的区别:前者是永久移动,后者是临时移动
400 Bad Request:表示请求报文中存在语法错误;
403 Forbidden:服务器拒绝该次访问(访问权限出现问题)
404 Not Found:表示服务器上无法找到请求的资源,除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用;
500 Inter Server Error:表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误时;
503 Server Unavailable:表示服务器暂时处于超负载或正在进行停机维护,无法处理请求;
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的Web页中包含有其他的Web资源时,每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间。实现长连接需要客户端和服务端都支持长连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
62、Cookie的作用是什么?和Session有什么区别?
Cookie 一般用来保存用户信息,典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。
Cookie 存储在客户端中,而Session存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中,最好能将 Cookie 信息加密然后到使用的时候再去服务器端解密。
HTTP 是一种不保存状态,即无状态(stateless)协议。也就是说 HTTP 协议自身不对请求和响应之间的通信状态进行保存。那么我们保存用户状态呢?Session 机制的存在就是为了解决这个问题,Session 的主要作用就是通过服务端记录用户的状态。典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。一般情况下,服务器会在一定时间内保存这个 Session,过了时间限制,就会销毁这个Session。
在服务端保存 Session 的方法很多,最常用的就是内存和数据库。大部分情况下,我们都是通过在 Cookie 中附加一个 Session ID 来方式来跟踪Session。
如果Cookie 被禁用,最常用的就是利用 URL 重写把 Session ID 直接附加在URL路径的后面。
URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
URL(Uniform Resource Location) 是统一资源定位符,可以提供该资源的路径。
URI的作用像身份证号一样,URL的作用更像家庭住址一样。URL是一种具体的URI,它不仅可以唯一标识资源,而且还提供了该资源的所在位置。
16、HTTP 和 HTTPS 的区别?
(1)端口不一致,HTTP的URL由“http://”起始且默认使用端口80,而HTTPS的URL由“https://”起始且默认使用端口443。
(2)安全性不一致,HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS 运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥进行了非对称加密。(接17)所以说,HTTP 安全性没有 HTTPS高。
(3)资源消耗不一致,HTTP 是明文传输,HTTPS 是加密传输,需要消耗更多的 CPU 和内存资源;
(4)花费不一致,HTTPS 协议需要到 CA 申请证书,一般免费证书很少,需要交费;
对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。
通过私钥是可以推导出公钥的,也就是说,公钥是基于私钥而存在的。但是无法通过公钥反向推倒出私钥,这个过程是单向的。
由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来速度非常慢,所以我们一般要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
Distributed denial of service attack,分布式拒绝服务攻击
TCP连接三步握手,服务器在第二次握手分配资源,而客户端在第三次握手分配资源。客户端如果在第三步握手时不回应服务器,则会造成服务器资源浪费,黑客基于此从而进行DDos攻击。
预防策略:
(1)限制同时打开SYN半链接的数目
(2)缩短SYN半链接的Time out 时间
(1)从功能上讲,GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源;GET不会改变服务器上的资源,而POST会对服务器资源进行改变;
(2)从请求参数形式上看,GET请求的数据会附在URL之后,即将请求数据放置在HTTP报文的请求头中;而POST请求会把提交的数据放置在HTTP请求报文的请求体中。
(3)就安全性而言,POST的安全性要比GET的安全性高,因为GET请求提交的数据将明文出现在URL上,而POST请求参数则被包装到请求体中,相对更安全。
(4)从请求的大小看,GET请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量较小,而POST请求则是没有大小限制的。
防火墙是由计算机硬件和软件组成的系统,部署于网络边界,是连通内部网络和外部网络的桥梁。防火墙主要有两类:包过滤型和应用代理型。
包过滤型防火墙工作在网络层和传输层,它根据数据包源地址、目的地址、端口号和协议类型等标志确定是否允许通过。只有满足过滤条件的数据包才被转发,其余数据包则将被丢弃。
应用代理型防火墙是工作在应用层。通过对每种应用服务编写专门的代理程序,实现监视和控制应用层通信流的作用。
特点:
防火墙可防止非法用户进入内部网络,减少内网中主机的风险;
集中管理内部网络,增强保密性;
不能防范来自内部的攻击;
不能防范未知的威胁。
语法,规定了传输数据的格式;
语义,规定了所要完成的功能;
同步,规定了各操作之间的时序关系;
同步通信的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。收发双方不停地发送和接收连续的同步比特流。同步通信主要有两种同步方式:一种是全网同步,即用一个非常精确的主时钟对全网所有结点上的时钟进行同步;另一种是准同步,即各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。同步通信数据传输率较高,但实现的代价也较大。
异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的,但接收端必须时刻做好接收的准备。发送端可以在任意时刻开始发送字符,因此必须在每个字符开始和结束的地方加上标志,即开始位和停止位,以便使接收端能够正确地将每个字符接收下来。异步通信也可以将帧作为发送的单位。这时,帧的首部和尾部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。异步通信的通信设备简单、便宜,但因为标志的开销所占比例较大,传输效率较低。
(1)静态路由
由网络管理员手动修改路由表中相关的静态路由信息。
(2)动态路由
①距离-向量路由算法(例如RIP算法[Routing Information Protocol,路由信息协议])
在距离-向量路由算法中,所有结点都定期地将它们的整个路由表传送给所有与之直接相邻的结点。这种路由选择表包含每条路径的目的地和需要经过的跳数。
坏消息传得慢:A-B-C,当AB连接断开后,B到A为16,C到A为2,之后C向B传递路由表,B会误以为C还有其他路径到达A,所以B更新为3,依次更新,直至两者均为16。
②链路状态路由算法(例如OSPF算法[Open Shortest Path First开放式最短路径优先])
Dijsktra的实际应用
主动测试所有邻接结点的状态。
使用泛洪法定期地将所有与之直接相邻的结点链路状态传播给所有其他结点,而不仅仅是传播给相邻结点。
③层次路由
每个路由器都知道在当前自治系统内如何把分组路由到目的地的细节,但不用知道其他自治系统的内部结构。如果需要将数据发送到其他自治系统,则要发给那个自治系统的BGP(边界网关协议)发言人。
OSPF的代价与链路的带宽成反比,带宽越高,Cost越小
P.S 这图是王道计网上面的表格,直接拍书上的担心大家看不清,所以我找了个网上的图一样的图(这知乎名不是我的)
(1)从数据报的首部提取目的主机的IP地址, 得出目的网络地址。
(2)若目的网络与此路由器直接相连,则把数据报直接交付给目的主机, 这称为路由器的直接交付。
(3)如果不能直接交付,则只能间接交付。若路由表中有目的地址的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器。
(4)若没有特定主机路由,但路由表中有到达网络的路由,则把数据报传送给路由表指明的下一跳路由器。
(5)若路由表中没有到达目的网络的路由,则把数据报传送给默认路由器,若没有配置默认路由,则报告转发分组出错。
此时需要先建立TCP连接,之后再进行下图的TLS连接。
IP数据报首部长度4B、总长度1B、片偏移8B。
转发时MAC地址会改变,普通路由器转发时IP源地址与目的地址都不变,但NAT路由器转发时一定会更改IP地址。
网络层只检查IP数据报的首部,不检验数据部分是否出错。传输层对首部和数据部分都进行差错控制。
电路交换在物理层,报文交换在数据链路层,分组交换在网络层。
分组交换有数据报和虚电路两种方式,若网络层采用虚电路方式,则传输层无法提供无连接服务。但传输层采用TCP不影响网络层提供无连接服务。
传输层可以既支持面向连接(TCP),又支持无连接(UDP)。而网络层只能提供面向连接的虚电路服务,或者无连接的数据报服务。
TCP要根据RTT来设置超时计时器的超时时间,对于一个重传报文的确认,很难分辨它是对原报文的确认还是对重传报文的确认,所以一个报文只要重传,就不采用其往返时延作为RTT计算。UDP没有超时重传机制,不需要计算RTT。
传输层的TCP报文段和UDP报文段都没有IP字段,那么向下传输的时候网络层是如何知道目的IP地址的呢?答:应用层跨越传输层,直接在网络层填写IP字段。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)