面试相关——计算机网络基础

目录

1. 计算机网络体系

2. TCP和UDP有什么区别

3、三次握手与四次挥手

4、为什么TCP链接需要三次握手,两次不可以么,为什么?

5.   从输入网址到获得页面的过程

6.   IP地址的分类、划分,及各类地址支持的主机数。

7、常见状态码及原因短语

8.   相关协议


1. 计算机网络体系

面试相关——计算机网络基础_第1张图片

 

1). 物理层

实现了相邻计算机节点之间比特流的透明传送,并尽可能地屏蔽掉具体传输介质和物理设备的差异,使其上层(数据链路层)不必关心网络的具体传输介质。

2). 数据链路层(data link layer

接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。

3). 网络层

将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。

4). 传输层(transport layer

在源端与目的端之间提供可靠的透明数据传输,使上层服务用户不必关系通信子网的实现细节。在协议栈中,传输层位于网络层之上,传输层协议为不同主机上运行的进程提供逻辑通信,而网络层协议为不同主机提供逻辑通信, 实际上,网络层可以看作是传输层的一部分,其为传输层提供服务。但对于终端系统而言,网络层对它们而言是透明的,它们知道传输层的存在,也就是说,在逻辑上它们认为是传输层为它们提供了端对端的通信,这也是分层思想的妙处。

5). 会话层(Session Layer

会话层是OSI模型的第五层,是用户应用程序和网络之间的接口,负责在网络中的两节点之间建立、维持和终止通信。

6). 表示层(Presentation Layer):

数据的编码,压缩和解压缩,数据的加密和解密

表示层是OSI模型的第六层,它对来自应用层的命令和数据进行解释,以确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。

7). 应用层(Application layer):为用户的应用进程提供网络通信服务

2. TCP和UDP有什么区别

UDP是用户数据报协议,是一个简单的面向无连接的协议。UDP不提供可靠的服务。在数据传输前不用建立连接故而传输速度很快。UDP主要用户流媒体传输,IP电话等对数据可靠性要求不是很高的场合。

TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。通信双方彼此交换数据前,必须先通过三次握手协议建立连接,之后才能传输数据。TCP提供超时重传,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

可靠传输的实现机制:

停止等待协议: 每发完一个分组就停止发送,直到收到上一个分组的确认信息。若超过规定时间没有接收到确认信息,边认为是分组丢失,开始重传。

连续ARQ协议: 发送方采用滑动窗口的形式,处于滑动窗口的分组可以直接发送出去;接收方一般采用累积确认的方式,也就是说接受方不必对接收到的每一个分组都进行确认,而是对按序到达的最后一个分组进行确认,而发送方每接收到一个确认,窗口就向前滑动一定距离。

流量控制:协调发送方和接收方的收发速率,利用滑动窗口来协调,使用探测报文来探测当前应该发送的速率,采用Nagle算法

拥塞控制:
当网络中某一资源的需求超出了该资源所能提供的可用部分,这时网络的性能就要开始变坏,这种情况就叫做拥塞。而拥塞控制就是为了减少或者避免拥塞对网络性能的影响而做出的一种控制手段。

拥塞控制思路:发送方维持一个叫做拥塞窗口的状态变量,拥塞窗口的大小取决于网络的拥塞程度,并且在动态的变化。发送方让自己的发送窗口等于拥塞窗口,如果在考虑接收方的接收能力,一般发送窗口还要小于拥塞窗口。

慢开始:当主机开始发送数据的时候,由小到大的增大发送窗口,也就是由小到大的增大拥塞窗口。接收方接收到一个报文之后就回传一个确认报文,发送方每接收到一个确认报文,就将拥塞窗口加1,这样每经过一个传输轮次之后,拥塞窗口就增大一倍。

拥塞避免:思路是让拥塞窗口缓慢的增大,即每经过一个往返时间RTT就把发送方的拥塞窗口加1,而不是加倍,这样拥塞窗口就是线性缓慢增加,比慢开始的增长速率缓慢的多。

慢开始门限:为了防止拥塞窗口增长过大引起网络拥塞,还需要设置一个慢开始门限

拥塞窗口<慢开始门限时,使用慢开始算法

拥塞窗口>慢开始门限时,使用拥塞避免算法

拥塞窗口=慢开始门限时,两种算法都可以

快重传:要求收到方每收到一个时序的报文段之后就立即发出重复确认,而不要等到自己发送数据时才进行捎带确认。而发送方只要一连收到三个重复确认就应当立即重传对方尚未接受到的报文,而不必等待为报文设置的重传计时器到期。

快回复:与快重传配合使用,当发送方连续收到三个重复确认的时候,就执行“乘法减小”算法,将慢开始门限减半。将拥塞窗口设置为慢开始门限减半之后的值,并开始指向拥塞避免算法。

3、三次握手与四次挥手

(1)三次握手(我要和你建立链接,你真的要和我建立链接么,我真的要和你建立链接,成功)

面试相关——计算机网络基础_第2张图片

第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

 

(2)四次挥手(我要和你断开链接;好的,断吧。我也要和你断开链接;好的,断吧)

面试相关——计算机网络基础_第3张图片

第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。此时TCP链接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。

第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

 

4、为什么TCP链接需要三次握手,两次不可以么,为什么?

为了防止 已失效的链接请求报文突然又传送到了服务端,因而产生错误。

客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达Server。这是,Server误以为这是Client发出的一个新的链接请求,于是就向客户端发送确认数据包,同意建立链接。若不采用“三次握手”,那么只要Server发出确认数据包,新的链接就建立了。由于client此时并未发出建立链接的请求,所以其不会理睬Server的确认,也不与Server通信;而这时Server一直在等待Client的请求,这样Server就白白浪费了一定的资源。若采用“三次握手”,在这种情况下,由于Server端没有收到来自客户端的确认,则就会知道Client并没有要求建立请求,就不会建立链接。

5.从输入网址到获得页面的过程

(1)浏览器查询 DNS获取域名对应的IP地址:具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。对于向本地DNS服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具有权威性);如果要查询的域名不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析(此解析不具有权威性)。如果本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询;

(2)浏览器获得域名对应的IP地址以后,浏览器向服务器请求建立链接,发起三次握手;

(3)TCP/IP链接建立起来后,浏览器向服务器发送HTTP请求

(4)服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

(5)浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;

(6)浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

6. IP地址的分类、划分,及各类地址支持的主机数。

1IP地址的分类,划分

面试相关——计算机网络基础_第4张图片

(2IP地址的指派范围

面试相关——计算机网络基础_第5张图片

A类地址网络数这里减2的原因是:网络号字段全0的IP地址是保留地址,意思是“本网络”;网络号127(01111111)保留为本地软件环回测试本主机的进程之间的通信之用。若主机发送一个目的地址是换回地址的数据报,则主机中的协议软件就处理数据报中的数据,而不会吧数据发送到任何网络。

 

 

A类主机号减2的原因是:全0的主机号表示该IP地址是“本主机”所连接到的单个网络地址;全1表示“在该网络上所有的主机”。

B类网络前面两位10已经固定,不会出现全0或全1,这里不存在网络总数减2的问题。但是B类网络的128.0.0.0是不指派的,最小的网络地址是128.1.0.0,所以网络数减1。主机数减2扣除全0全1的情况。

C类网络数减1是因为192.0.0.0是不指派的,最小的网络地址是192.0.1.0。主机数减去全0全1的情况。

7、 常见状态码及原因短语

  HTTP请求结构: 请求方式 + 请求URI + 协议及其版本

  HTTP响应结构: 状态码 + 原因短语 + 协议及其版本

  • 1×× : 请求处理中,请求已被接受,正在处理
  • 2×× : 请求成功,请求被成功处理
  • 200 OK
  • 3×× : 重定向,要完成请求必须进行进一步处理
  • 301 : 永久性转移        302 :暂时性转移      304 : 已缓存
  • 4×× : 客户端错误,请求不合法
  • 400:Bad Request,请求有语法问题   403:拒绝请求     404:客户端所访问的页面不存在
  • 5×× : 服务器端错误,服务器不能处理合法请求
  • 500 :服务器内部错误      503 : 服务不可用,稍等

8.相关协议

 

面试相关——计算机网络基础_第6张图片

(1)网络层——IP协议(网际协议):

IP协议是TCP/IP体系中最主要的协议之一,一切在IP之下,一切又在IP之上。我们常说的应该是IP协议族,还包含配套的协议:

ARP(地址解析协议):将网络的IP地址转化为实际的物理地址(MAC地址),并存储在MAC地址表中。

ICMP(网际控制报文协议):用于进行差错情况和异常情况的反馈,分为询问报文和差错报告报文。

IGMP(网际组管理协议):用于控制和管理多播和组播的协议。

(2)网络层——ARP协议

网络层的ARP协议完成了IP地址与物理地址的映射。首先,每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址:如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

(3)网络层——路由信息协议RIP(内部网关协议):

RIP是一种分布式的基于距离向量的路由选择协议 ,使用UDP传输端口为(520)

优点:实现简单,开销较少  缺点:换消息传的慢

总结:仅相邻路由器中间交换信息,按照固定时间交换路由信息(每个30s)好消息传的快,坏消息传的慢适用与规模较小的网络。

(4)应用层——HTTP协议

HTTP协议由两部分程序实现:一个客户机程序和一个服务器程序,它们运行在不同的端系统中,通过交换HTTP报文运行会话。HTTP定义了Web客户机是如何向Web服务器请求Web页面,以及服务器如何将Web页面传送给客户机的。

HTTP使用TCP作为它的支撑运输协议。HTTP客户机发起一个与服务器的TCP连接,一旦连接建立,浏览器(客户机)和服务器进程就可以通过套接字接口访问TCP。至于TCP是什么,在后面的文章中,会详细介绍,这里读者只需要知道,TCP是面向连接的,提供可靠的数据传输服务,可以无差错、按顺序地交付要发送的数据。即使用TCP作为其支撑的HTTP协议不用担心数据丢失,也不用担心TCP是如何从网络的数据丢失和乱序故障中恢复的,因为那是TCP以及协议栈底层协议的工作。

HTTP是一个无状态协议,所以服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息。举个例子来说,就是假如某个特定的客户机在短短几秒内两次请求同一个对象,服务器并不会因为刚刚为该用户提供了该对象而不做出反应,而是重新发送该对象,就好像服务器已经完全忘记了之前所做的事一样。

(5)传输层——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服务。

你可能感兴趣的:(面试基础)