【计算机网络】计算机网络面试常考知识点整理(一)

1、网络体系结构


1.1 基本概念:

网络体系结构(network architecture):是计算机之间相互通信的层次,以及各层中的协议和层次之间接口的集合。

网络协议:是计算机网络和分布系统中互相通信的对等实体间交换信息时所必须遵守的规则的集合。

语法(syntax):包括数据格式、编码及信号电平等。

语义(semantics):包括用于协议和差错处理的控制信息。

定时(timing):包括速度匹配和排序。


1.2 简介

1978年ISO提出了”异种机连网标准”的框架结构,这就是著名的开放系统互联基本参考模型 OSI/RM (Open Systems Interconnection Reference Modle),简称为 OSI 。

OSI参考模型用物理层、数据链路层、网络层、传输层、对话层、表示层和应用层七个层次描述网络的结构,它的规范对所有的厂商是开放的,具有指导国际网络结构和开放系统走向的作用。它直接影响总线、接口和网络的性能。常见的网络体系结构有FDDI、以太网、令牌环网和快速以太网等。从网络互连的角度看,网络体系结构的关键要素是协议和拓扑。


1.3 OSI模型

第一层:物理层(PhysicalLayer)

规定通信设备的机械的、电气的、功能的和规程的特性,用以建立、维护和拆除物理链路连接。具体地讲,机械特性定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小、阻抗匹配、传输速率距离限制等;功能特性是指对各个信号先分配确切的信号含义,即定义了DTE和DCE之间各个线路的功能;规程特性定义了利用信号线进行bit流传输的一组操作规程,是指在物理连接的建立、维护、交换信息时,DTE和DCE双方在各电路上的动作系列。

在这一层,数据的单位称为比特(bit)。物理层的主要设备:中继器、集线器、适配器。

第二层:数据链路层(DataLinkLayer)

物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。

数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

在这一层,数据的单位称为帧(frame)。

数据链路层主要设备:二层交换机、网桥。

第三层:网络层(Networklayer)

在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。

如果你在谈论一个IP地址,那么你是在处理第3层的问题,这是”数据包”问题,而不是第2层的”帧”。IP是第3层问题的一部分,此外还有一些路由协议和地址解析协议(ARP)。有关路由的一切事情都在第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。

在这一层,数据的单位称为数据包(packet)。

网络层协议的代表包括:IP、IPX、RIP、ARP、RARP、OSPF等。

网络层主要设备:路由器

第四层:传输层(Transportlayer)

第4层的数据单元也称作处理信息的传输层(Transport layer)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段(segments)而UDP协议的数据单元称为”数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所谓透明的传输是指在通信过程中传输层对上层屏蔽了通信传输系统的具体细节。

传输层协议的代表包括:TCP、UDP、SPX等。

第五层:会话层(Sessionlayer)

这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。

第六层:表示层(Presentationlayer)

这一层主要解决用户信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。例如图像格式的显示,就是由位于表示层的协议来支持。

第七层:应用层(Applicationlayer)

应用层为操作系统或网络应用程序提供访问网络服务的接口。

应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。


2、TCP和UDP有什么区别

2.1 UDP (User Data Protocol,用户数据报协议)

首先UDP协议是无连接,不可靠,面向数据报的。

无连接:知道对端的IP和端⼝号就直接进⾏传输, 不需要建⽴连接;
不可靠: UDP没有确认机制来确保报文的到达,没有对报文进行排序的机制,也不提供反馈信息来控制端到端报文传输的速度,所以它的传输是不可靠的。
面向数据报:不能够灵活的控制读写数据的次数和数量。

UDP常用端口:

  • 53:DNS域名服务
  • 69:TFTP(简单文件传输协议)
  • 123:NTP(网络时间协议)
  • 161:SNMP(简单网络管理协议)
  • 162:SNMP(简单网络管理协议:陷阱)
  • 520:RIP(路由信息协议)

2.1 TCP(Transmission Control Protocol,传输控制协议)

TCP协议是面向连接的,可靠地,面向字节的。

连接管理机制:

正常情况下,TCP要经过三次握手建立连接,四次挥手断开连接。

确认应答(ACK)机制:

TCP主机A每次给主机B发送一次数据,主机B都要给主机A发送一个确认应答(每一个ACK都带有对应的确认序列号,告诉发送者我已经收到了那些数据,下一次该从哪里开始发)。

超时重传机制:

如果主机A发送给主机B的数据因为网络拥堵等原因丢包了,数据无法到达主机B。
在特定时间内,主机A没有接收到主机B发送回来的ACK,就会把数据进行重发。

滑动窗口:

因为加入了确认应答机制和超时重传机制,导致性能变差,为了提高性能,引入滑动窗口机制。

即两主机发送数据帧时,不是一帧帧的发送,而是每次发送指定窗口大小的数据帧(当然可以不满,窗口的大小取决于接收窗口和拥塞窗口中的较小值)。

TCP滑动窗口工作过程如下:

  1. 双方在建立连接时确定发送和接受的字节序号,确定最大段长度MSS的值为标准长度(确定发送和接受的窗口)。
  2. 发送方发送一个报文(其数据长度为MSS)后启动计时器,转到步骤4等待接收方应答。
  3. 接收方收到报文后给出应答,其中包含的窗口值即为可以接受的字节数,调整可接收的序列号(接受窗口)。
  4. 发送方等待接收方应答,如果收到对方的应答,则根据接收到的应答报文段中的窗口值更新自己的MSS值,转到步骤二。
  5. 发送方如果超时未接收到对方应答,则重传该报文段后启动计时器,转到步骤四。

流量控制:

接收端处理数据的速度是有限的. 如果发送端发的太快, 导致接收端的缓冲区被打满, 这个时候如果发送端继续发送, 就会造成丢包, 继⽽引起丢包重传等等⼀系列连锁反应。

因此TCP支持根据接收端的处理能力,来决定发送端的发送速度,这个机制就叫做流量控制。

拥塞控制:

虽然TCP有了滑动窗⼝机制, 能够⾼效可靠的发送⼤量的数据. 但是如果在刚开始阶段就发送⼤量的数据, 仍然可能引发问题。
因为网络上有很多的计算机, 可能当前的网络状态就已经比较拥堵。在不清楚当前网络状态下,贸然发送大量的数据,很有可能造成严重的问题。

TCP引入慢启动机制,先发少量的数据,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据。

拥塞窗口的增长速度,是指数级别的。“慢启动”只是初始时慢,但是增长速度非常快。为了不增长的那么快,因此不能使拥塞窗口单纯的加倍,此处引用一个叫做慢启动的阈值,当拥塞窗口超过这个阈值的时候,不再按照指数方式增长,而是按照线性方式增长。

延迟应答:

如果接收数据的主机⽴刻返回ACK应答, 这时候返回的窗⼝可能⽐较⼩。

但实际上可能接收端的处理端的速度很快,很快就会将发送来的数据从缓冲区消费掉,这种情况下,接收端处理远不能达到自己的极限,即使窗口再大一些也可以处理过来。

因此引入延时应答机制,接收端每次都略等一会在应答,这时候返回的窗口大小就又会变大,从而在保证了网络不拥塞的情况下尽量提高了传输效率。窗口越大,网络吞吐量就越大,传输效率就越高。

捎带应答:

在延时应答的基础上,发送端与接收端在应用层也是“一发一收”的,在这个基础上,捎带应答就是令ACK与接收端回送的消息一起回给客户端。

面向字节流:

TCP通过字节流传输,即TCP将应用程序看成是一连串的无结构的字节流。每个TCP套接口有一个发送缓冲区,如果字节流太长时,TCP会将其拆分进行发送。当字节流太短时,TCP会等待缓冲区中的字节流达到一定程度时再构成报文发送出去,TCP发给对方的数据,对方在收到数据时必须给矛确认,只有在收到对方的确认时,本方TCP才会把TCP发送缓冲区中的数据删除。


3.什么是网络套接字(Socket)?流套接字(SOCK_STREAM)基于什么协议?

3.1 套接字(socket)

TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。

套接字用(IP地址:端口号)表示。

它是网络通信过程中端点的抽象表示,包含进行网络通信必需的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

3.2 流套接字(SOCK_STREAM)

流式套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流式套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。

流式套接字提供没有记录边界的数据流:可以是双向的字节流(应用程序是全双工:可以通过套接字同时传输和接收)。可依赖流传递有序的、不重复的数据。(“有序”指数据包按发送顺序送达。”不重复”指一个特定的数据包只能获取一次。)这能确保收到流消息,而流非常适合处理大量数据。


4、IP首部,TCP首部,UDP首部

4.1 IP首部

这里写图片描述

  • 版本:占4位,用于标识该数据报的IP协议的版本信息,对于IPv4,该字段值为4,对于IPv6,该字段值为6。无论是主机还是中间路由器,在处理每个接收到的IP数据报时,根据版本值以选择相应版本的IP协议模块来进行处理。
  • 首部长度:占4位,用于表示IP数据报首部的长度,其值以32位(4字节)为单位,因此,IP首部长度必须是32位的整数倍。当IP数据报首部长度不是32位的整数倍时,必须用填充字段加以填充来补齐32位。如果IP数据报长度为20个字节,该字段值为5。
  • 区分服务:占8位,用来获得更好的服务。这个字段在旧标准中称为服务类型ToS( Type of Service)。它包括优先权字段(3位,现在已不用)、ToS字段(4位,分别表示最小时延、最大吞吐量、最高可靠性和最小费用)、未用字段(1位)。
  • 总长度:占16位,总长度是指IP首部和数据部分长度之和,单位为字节。IP数据
    报的最大长度为215-1=65535字节。但是,这并不意味着IP数据报必须都按最大长度来组织。因为数据链路层存在着最大传送单元MTU( Maximum Transfer Unit)或网络中可能存在其他因素的限制。
  • 标识:占16位。标识的作用是当IP数据报在传输过程中由于低层网络传输限制而需要分片时,同一个P数据报的每个分片所共有的标记,表示这些分片属于同一个IP数据报,以便在目的主机重组这些分片时参照使用。标识的产生:IP层维持着个计数器,每产生一个IP数据报,计数器就加1,并将该值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。
  • 标志:占3位。第1位保留;第2位为不分片标志,记为DF(Don' t Fragment),当DF=1时,表示此IP数据报不允许被分片;当DF=0时,表示此IP数据报允许被分片;第3位为更多分片标志,记为MF( More Fragment),当MF=1时,表示此分片不是最后分片,其后还有更多分片;当MF=0时,表示此分片是最后分片,其后没有其他分片。
  • 片偏移:占13位。片偏移的作用是指明此分片在原IP数据报(未分片前)中的绝对位置,其值以8字节为单位。因为IP数据报的传输受物理网络的MTU限制,当
    个IP数据报较大,无法承载在数据链路层的一个帧中传输时,IP协议需要将IP数据报划分成多个较小的分片,并为每个分片构造一个单独的IP数据报,以适应物理网络的传输。
  • 寿命TTL( Time to Live):也称为生存时间,占8位。TTL以秒为单位设置了该IP数据报在互联网中允许存在的时间。当IP数据报经过主机或路由器时,它们将对数据报进行处理,根据时间的消逝,递减TTL的值。一旦TTL递减至0,路由器就丢弃该数据报,并向源主机发送一个ICMP超时差错报告报文。但是由于计算IP
    数据报延迟比较复杂,而且不准确。因此现在的路由器大多采用IP数据报所经过
    的路由器数量来计算TTL值,每经过一个路由器,TTL减1,直到减为0为止,这种计算方法又称为跳数(Hop)衡量法。
  • 协议:占8位,用于指出IP数据报携带的数据属于哪一种高层协议,该字段的值是高层协议对应的编号。
  • 首部校验和:占16位。用用于保证IP数据报首部数据的完整性。其计算方法是将首部看作一个16位的整数序列,对每个整数分别进行二进制反码相加,然后再对计算的结果求反。
  • 源IP地址和目的IP地址:各占32位,分别为发送主机的IP地址和接收主机的IP地址。IP数据报在传输过程中可能经过多个中间路由器,但这两个字段值在传送期间始终不变。
  • IP选项:可选项,长度可变。常用于网络测试和调试。目前常用的IP选项有记录路由选项、源路由选项和时间戳选项等。
  • 记录路由选项:用来监视和控制互联网路由器如何路由数据报。
  • 源路由选项:分为严格源路由选项和宽松源路由选项。严格源路由选项规定IP数据报必须严格按照指定的路径到达目的主机,否则报告错误。宽松源路由选项要求IP数据报必须沿着IP地址表中的地址序列传输,但允许表中相继两个地址之间经过其他的IP地址。
  • 时间戳选项:用于测量IP数据报路由过程中所经过的每个路由器的时间,便于对路由的性能进行分析。
  • 填充:可可选项,长度可变,取决于IP选项的长度,其目的是保证数据报首部为32位的整数倍。填充时,填充内容全为“0”。

4.2 UDP协议

这里写图片描述

  • 源端口和目的端口:源端口和目的端口字段各为16位(2字节),它是UDP协议的端口号,其中源端口是可选的(因为UDP不需要反馈信息,因此源端口基本不起作用),目的端口必须填写。若源端口不选,则取值为0。
  • 长度:长度字段为16位(2字节),它是指UDP报文的总长度,包括UDP首部和用户数据两部分,长度以字节为单位。
  • 校验和:校校验和字段为16位(2字节),UDP的校验和字段是保证UDP数据正确的惟一手段。计算UDP校校验和时必须包括UDP伪首部、UDP首部和用户数据3个部分。

4.3 TCP协议

这里写图片描述

  • 源端口号和目的端口号:各占2字节,分别表示发送方和接收方的应用程序端口号。
  • 序列号:占4字节,指派给该报文段第一个数据字节的一个号,表示该数据在发送方的数据流中的位置。初始序列号一般并不是从1开始的,而是根据采用某些算法计算出的一个数值作为起始序列号(5.3.3节讲述)。这样做的目的是为避免出现重复序列号。
  • 确认号:占4字节,确认号是接收方期望收到对方的下一个报文段数据的第一个字节的序号,也就是期望收到对方的下一个TCP报文段首部序列号字段的值。
  • 首部长度:占4位,表示TCP报文首部信息的长度。由于首部可能含有选项内容,因此TCP首部的长度是不确定的。首部长度的单位不是字节而是32位(以4字节为计算单位),其范围是5~15,对应首部的长度是20~~60字节。首部长度也指示了数据区在报文段中的起始偏移值。
  • 保留:占6位,保留为今后使用。目前为全0。
  • 紧急标志URG(U):占1位,当URG=1时,表示紧急指针字段有效。通知发送方本数据报文段中含有紧急数据,需要马上传输,这时发送方不会等到缓冲区满再发送,而是直接优先将该报文段发送出去。
  • 确认标志ACK(A):占1位,当ACK=1时,表示确认号字段有效。
  • 推送标志PSH(P):占1位,PSH=1时,表示当前报文段需要请求推送(Push)操作,即接收方TCP收到推送标志为1的报文时,就立即提交给接收的应用进程,而不必等到整个缓存都填满后再向上提交。
  • 复位标志RST(R):占1位,当RST=1时,表表示TCP连接中出现严重差错(如主机崩溃或其他原因),必须先释放连接,然后再重新建立传输连接。
  • 同步标志SYN(S):占1位,当SYN=1时,表示这是一个连接请求或连接接收报文,用于建立传输连接。
  • 终止标志FIN(F):占1位,当FIN=1时,表示此报文段的发送方的数据已发送完毕,并要求释放传输连接。
  • 窗口大小:占2字节,它是窗口通告值。该值由接收方设置,发送方根据接收到的窗口通告值来来调整发送窗口的大小。通过窗口机制,可以控制发送方发送的数据量,实现流量控制。
  • 校验和:占2字节,TCP的校验和是必选项,它的计算方法与UDP校验和的计算方法相同,同样需要包含TCP伪首部。TCP伪首部中的协议类型值为6(UDP伪首部中的协议类型为17)
  • 紧急指针:占2字节,与紧急标志URG配合使用。在TCP通信中,如果一方有紧急的数据(例如中断或退出命令等)需要尽快发送给另一方,并且让接收方的TCP协议尽快通知相应的应用程序时,可以将URG位置1,并通过紧急指针指示紧急数在报文段中的结束位置。
  • 选项:长度可变,可以是一个或多个字节,规定相应的功能。每个选项由类型、长度、数据3部分组成。
  • MSS:用于TCP连接双方在建立连接时相互告知对方期望的最大报文段长度MSS值。
  • 填充:为了使选项字段对齐32位,可以采用若干0作为填充数据。

猜你喜欢

转载自blog.csdn.net/sofia_m/article/details/80954691