计算机网络面试题总结

转载:https://www.cnblogs.com/inception6-lxc/p/9152691.html

1.OSI,TCP/IP,五层协议的体系结构,以及各层协议

image.png

1)物理层

该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。

2)数据链路层

该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
重点:

  • 数据链路层为网络层提供可靠的数据传输;
  • 基本数据单位为帧;
  • 主要的协议:以太网协议;
  • 两个重要设备名称:网桥和交换机。

3)网络层

目的是实现两个主机之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。

网络层中涉及众多协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。

IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。
重点

  • 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;
  • 基本数据单位为IP数据报;
  • 包含的主要协议:
    IP协议(Internet Protocol,因特网互联协议);
    ICMP协议(Internet Control Message Protocol,因特网控制报文协议);
    ARP协议(Address Resolution Protocol,地址解析协议)可看成是跨网络层和链路层的协议;
    RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。
  • 重要的设备:路由器

4)传输层

第一个端到端,即主机到主机的层次。作用:为应用进程之间提供端到端的逻辑通信。
重点

  • 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;
  • 包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议);
  • 重要设备:网关

【注】传输层与网络层区别

5)会话层

会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步

6)表示层

表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。

7)应用层

是最靠近用户的OSI层,为用户的应用程序提供网络服务的接口。将用户的操作通过应用程序转换成为服务,并匹配一个相应的服务协议发送给传输层

会话层、表示层和应用层重点

  • 数据传输基本单位为报文
  • 包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。
每一层的协议如下:

物理层: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、ASCII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

TCP/IP与HTTP协议的区别

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。

2.IP地址

1)网络地址

IP地址由网络号(包括子网号)和主机号组成,网络地址的主机号为全0,网络地址代表着整个网络。

2)广播地址

广播地址通常称为直接广播地址,是为了区分受限广播地址。

3)组播地址

D类地址就是组播地址

  • A类地址以0开头,第一个字节作为网络号,地址范围为:0.0.0.0~127.255.255.255;(modified @2016.05.31)
  • B类地址以10开头,前两个字节作为网络号,地址范围是:128.0.0.0~191.255.255.255;
  • C类地址以110开头,前三个字节作为网络号,地址范围是:192.0.0.0~223.255.255.255。
  • D类地址以1110开头,地址范围是224.0.0.0~239.255.255.255,D类地址作为组播地址(一对多的通信);
  • E类地址以1111开头,地址范围是240.0.0.0~255.255.255.255,E类地址为保留地址,供以后使用。
  • 只有A,B,C有网络号和主机号之分,D类地址和E类地址没有划分网络号和主机号。

4)255.255.255.255

该IP地址指的是受限的广播地址。只能用于本地网络,路由器不会转发以受限广播地址为目的地址的分组;

5)0.0.0.0

当一台主机还没有被分配一个IP地址的时候,用于表示主机本身。用作默认路由,表示”任意IPV4主机”。用来表示目标机器不可用。用作服务端,表示本机上的任意IPV4地址。

6)回环地址

127.0.0.0/8被用作回环地址,回环地址表示本机的地址,常用于对本机的测试,用的最多的是127.0.0.1。

7)A、B、C类私有地址

私有地址(private address)也叫专用地址,它们不会在全球使用,只具有本地意义。
A类私有地址:10.0.0.0/8,范围是:10.0.0.0~10.255.255.255
B类私有地址:172.16.0.0/12,范围是:172.16.0.0~172.31.255.255
C类私有地址:192.168.0.0/16,范围是:192.168.0.0~192.168.255.255

3.子网掩码以及网络划分

子网掩码

子网掩码是标志两个IP地址是否同属于一个子网的,也是32位二进制地址,其每一个为1代表该位是网络位,为0代表主机位。如果两个IP地址在子网掩码的按位与的计算下所得结果相同,即表明它们共属于同一子网中。

4.ARP/RARP协议

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。

IP地址和MAC地址的区别

  • IP地址分为IPV4和IPV6。IPV4由32位整数组成,分成4个部分,每块8位二进制。IPV6由128位整数组成,分成8个部分,每个部分16位二进制.一个完整的IP地址由两个部分组成:网络地址+主机地址。因为IP地址的存在使得将来自源地址的数据通过路由而传到目的地址的过程得以实现。
  • MAC地址也叫物理地址。这个地址与网络无关,无论将带有这个地址的硬件接到什么地方,他都有相同的MAC地址。MAC地址一般不可变,不能由用户自己设定。
    区别:IP地址可变,MAC地址不可变;IP地址的分配基于网络的拓扑结构;IP地址位于OSI第三层网络层。MAC地址位于第二层数据链路层。数据链路层可以使数据从一个节点传递到相同链路的另一个节点(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络(通过IP地址)。

网络的拓扑结构

主要结构有星型结构、环型结构、总线结构、分布式结构、树型结构、网状结构、蜂窝状结构等。

5.TCP与UDP区别

TCP传输控制协议,UDP用户数据报协议

区别

  • TCP面向连接,UDP面向非连接即发送数据前不需要建立链接
  • TCP提供可靠的服务(数据传输),UDP无法保证
  • TCP面向字节流,UDP面向报文
  • TCP数据传输慢,UDP数据传输快
  • TCP提供一种面向连接的、可靠的字节流服务
  • 在一个TCP连接中,仅有两方进行彼此通信,因此广播和多播不能用于TCP
  • TCP使用校验和,确认和重传机制来保证可靠传输
  • TCP使用累积确认
  • TCP使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制

6.TCP和UDP应用场景

TCP:当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。
UDP:当强调传输性能而不是传输的完整性时, 要求网络通讯速度能尽量的快。如:QQ语音 QQ视频等。

7.TCP对应的协议和UDP对应的协议

TCP对应的协议

  • FTP:定义了文件传输协议,使用21端口。
  • Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
  • SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
  • POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
  • HTTP:是从Web服务器传输超文本到本地浏览器的传送协议,端口默认80。

UDP对应的协议

  • DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
  • SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
  • TFTP(Trival File TransferProtocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务

8.TCP三次握手和四次挥手

在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换TCP窗口大小信息

标志位

SYN:建立联机
ACK:确认
PSH:传送
FIN:结束
RST:重置
URG:紧急
seq:顺序号码
ack:确认号码

三次握手

三次握手

1.客户端向服务器发送请求连接的报文,此时报文首部中的SYN=1,初始序列号seq=x,此时客户端进入了同步已发送状态。TCP规定,此时的SYN=1的报文不能携带数据,但要消耗掉一个序号。
2.服务器收到建立链接的请求后,如果同意连接,则想客户端发送一个确认连接的报文。确认报文中的ACK=1,SYN=1,确认号是ack=x+1,同时为自己初始化一个序列号seq=y,此时,服务器进入同步收到状态。这个报文不携带数据,也要消耗一个序号。
3.客户端收到服务器的确认连接报文以后,向服务器发送一个确认报文。此时的确认报文ACK=1,ack=y+1,自己的序列号是seq=x+1。此时客户端进入已建立连接的状态。此时的ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。

四次挥手

四次挥手
  • 客户端向服务端发送连接释放报文,并且停止发送数据。释放数据报文首部FIN=1,其序列号为seq=u,此时客户端进入FIN-WAIT-1(终止等待1)状态。FIN报文段即使不携带数据,也要消耗一个序号。
  • 服务器收到连接释放报文,发出确认报文给客户端,ACK=1,ack=u+1,并且带上自己的序号seq=v,此时服务器紧肤了CLOSE-WAIT(关闭等待)状态。此时半关闭,客户端不再发送数据,但服务器若发送数据,客户端依然接受。客户端收到服务器但确认释放请求后,客户端进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文。
  • 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,seq=w,此时服务器LAST-ACK(最后确认)状态,等待客户端等确认。
  • 客户端收到服务器等连接释放报文后,必须发出确认报文,ACK=1,ack=w+1,seq=u+1,此时客户端进入TIME-WAIT时间等待状态。服务器收到客户端发出等确认后立即进入CLOSED状态。服务器结束TCP连接的时间要比客户端早一些。

9.端口及对应的服务

端口

端口

  • 是应用层的各种协议进程与运输实体进行层间交互的一种地址
  • 端口号只具有本地意义,它只为标志计算机应用层中的各个进程在和运输层交互时的层间接口,在互联网不同计算机中,相同的端口号是没有关联的。
  • 两个计算机的进程相互通信,不仅需要知道对方的IP地址(为了找到对方计算机),还要知道对方的端口号(为了找到对方计算机中的应用进程)

10.HTTP超文本传输协议

HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。

HTTP请求/响应的步骤

1.客户端连接到Web服务器
2.发送HTTP请求
3.服务器接受请求并返回HTTP响应
4.释放连接TCP连接
5.客户端浏览器解析HTML内容

HTTP消息结构

格式:请求行,请求头部,空行,请求数据

HTTP响应

组成部分:状态行,消息报头,空行和响应正文

HTTP和HTTPS的区别

  • https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

11.TCP粘包问题

粘包现象

TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。

为什么出现粘包现象

(1)发送方原因
我们知道,TCP默认会使用Nagle算法。而Nagle算法主要做两件事:1)只有上一个分组得到确认,才会发送下一个分组;2)收集多个小分组,在一个确认到来时一起发送。
所以,正是Nagle算法造成了发送方有可能造成粘包现象。

(2)接收方原因
TCP将收到的分组保存至接收缓存里,然后应用程序主动从缓存里读收到的分组。这样一来,如果TCP接收分组的速度大于应用程序读分组的速度,多个包就会被存至缓存,应用程序读时,就会读到多个首尾相接粘到一起的包。

你可能感兴趣的:(计算机网络面试题总结)