Java开发校招面试考点汇总第九篇:计算机网络

1、 OSI七层协议体系结构
应表会传网数物

2、TCP/IP体系结构
应用层、传输层、网际层、网络接口层

3、五层协议(综合OSI七层协议体系结构和TCP/IP体系结构)
应用层,传输层,网络层、数据链路层、物理层

4、各层协议
应用层:
1、万维网的HTTP协议
2、支持电子邮件的SMTP协议
3、支持文件传送的FTP协议

传输层:
TCP
UDP

网络层:
IP协议
路由协议
ICMP协议

数据链路层:
CSMA/CD协议
PPP协议(点对点协议)

5、各层对数据的处理
Java开发校招面试考点汇总第九篇:计算机网络
6、物理层
6.1 通信方式有几种
单工通信:只能有一个方向的通信,没有反方向的通信。(如电视广播)
半双工通信:双方都可以发送信息,但是不能同时发送
全双工通信:双方可以同时发送和接收信息。

6.2 信道复用技术
频分复用
时分复用
波分复用(也就是光的频分复用)
码分复用:码型不同

7、数据链路层
7.1 局域网跨越了数据链路层和物理层

7.2 以太网是局域网,是一种基带总线局域网(即许多计算机都连接到一根总线上。)

7.3 交换机工作在数据链路层

7.4 以太网为了协调总线传输资源的使用,采用了CSMA/CD协议:先听后发,边听边发,碰撞停止,随机重发

7.5 使用CSMA/CD协议时某一个主机不能同时发送和接收,因此使用CSMA/ CD的以太网是半双工通信

7.6 PPP协议是点对点传输的协议

8、网络层
8.1 路由器在网络层

8.2 中间设备
物理层的中间设备为转发器
数据链路层的中间设备为交换机
网络层的中间设备是路由器
网络层以上的中间设备是网关

8.3 分类的IP地址
Java开发校招面试考点汇总第九篇:计算机网络
Java开发校招面试考点汇总第九篇:计算机网络

A类地址网络数减2是因为全0和全1都不能分配
B类地址网络数减1是因为最小的地址不分配
C类地址网络数减1是因为最小的地址不分配

A、B、C类主机数数减2是因为全0和全1都不能分配,全0代表本主机,全1代表该网络的所有主机

8.4 路由器总是具有两个或两个以上的IP地址,即路由器的每一个接口都有一个不同网络号的IP地址

8.5 IP地址是网络层以及网络层以上各层适用的地址,而MAC地址是数据链路层和物理层使用的地址

8.6 地址解析协议ARP:已知一个机器的IP地址,找出相应的硬件地址

8.7 子网掩码
因为两级IP地址不够灵活(网络号+主机号),所以在IP地址中增加了一个“子网号字段”,使得IP地址变成了三级(网络号+子网号+主机号)
1、A类默认的子网掩码:255.0.0.0
2、B类默认的子网掩码:255.255.0.0
3、C类默认的子网掩码:255.255.255.0

8.8● 什么是icmp协议,它的作用是什么?
网际控制报文协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

8.9 ping就是应用层直接使用网络层ICMP的一个例子,用来探测两个主机之间的连通性

9、传输层
9.1 UDP的特点(用户数据报协议)
1、无连接
2、尽最大努力交付
3、面向报文
4、没有拥塞控制(即网络出现的拥塞不会使源主机的发送速率降低)
5、支持一对一、一对多、多对一的交互通信
6、首部开销小

9.2 TCP的特点(传输控制协议)
1、面向连接
2、每一条TCP连接只有两个端点(即点对点)
3、TCP提供可靠交付服务
4、TCP提供全双工通信
5、面向字节流

9.3 TCP连接的端点叫套接字,即IP地址+端口号,如192.3.4.5:80

9.4 同一个IP可以有多个TCP连接,同一个端口号可以出现在不同的TCP连接中

9.5 停止等待协议:即每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组(是TCP协议的一部分)

9.6 连续ARQ协议:有一个窗口,可以将窗口内的N个分组连续发送出去,而不需要等待对方的确认,接收方一般采用累计确认的方式,即对按序到达的最后一个分组发送确认即可。

9.7 TCP的流量控制
流量控制就是让发送方的发送速率不要太快,使得接收方来得及接收
https://www.cnblogs.com/kubidemanong/p/9987810.html

9.8 TCP的拥塞控制
拥塞控制就是为了防止过多的数据注入到网络中,这样可以使网络的路由器或链路不至于过载。
常用的拥塞控制的方法:(谢希仁第六版219页)
慢开始:(刚开始传输时,让拥塞窗口大小为1,则刚开始就传的比较慢,当窗口大小小于慢开始门限时,使用慢开始算法,每经过一个传输伦次 ,让拥塞窗口加倍
拥塞避免:(当窗口大小大于慢开始门限时,使用拥塞避免算法,即每经过一个往返时间,让拥塞窗口大小加1,这样窗口就可以按照线性规律缓慢增长)

当网络拥塞时,就将慢开始门限置为当时拥塞窗口的一半,然后将拥塞窗口置为1,又开始执行慢开始算法。

**快重传 :**要求接收方每收到一个失序的报文段就立即发出重复确认。
**快恢复:**由于快重传并不能说明网络就真的拥塞了,所以快恢复让拥塞窗口变为慢开始门限的一半(即不再将拥塞窗口置为1),然后执行拥塞避免算法。

9.9 TCP的三次握手
前提知识:TCP首部的部分字段:
1、序号:TCP 是面向字节流的,在一个 TCP 连接中传输的字节流中的每个字节都按照顺序编号。首部中的序号字段值指的是本报文段所发送的数据的第一个字节的序号
2、确认号:期望收到对方下一个报文段的第一个数据字节的序号。
3、确认ACK:仅当ACK=1时确认号字段才有效,TCP规定,连接建立后所有传送的报文段都必须把ACK置1.
4、同步SYN在连接建立时用来同步序号,当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意时,则应在响应的报文段中使SYN=1和ACK=1,因此,SYN置1就表示这是一个连接请求或连接接受报文。

三次握手过程:
(1)首先A向B发出连接请求报文段,这时首部中的同步位SYN=1,同时选择一个初始序号 seq=x。TCP规定,SYN报文段不能携带数据,但要消耗掉一个序号。这时,A进入SYN-SENT状态。
(2)B收到请求后,向A发送确认。在确认报文段中把SYN和ACK位都置为1,确认号是ack=x+1(注意第一步中初始序号为x),同时也为自己选择一个初始序号seq=y。请注意,这个报文段也不能携带数据,但同样要消耗掉一个序号。这时B进入SYN-RCVD状态。
(3)A收到B的确认后,还要向B给出确认。确认报文段的ACK置为1,确认号ack=y+1,而自己的序号seq=x+1。这时,TCP连接已经建立,A进入ESTABLISHED 状态,当B收到A的确认后,也会进入 ESTABLISHED 状态。

为什么需要三次握手过程
为什么A还要发送一次确认呢?这主要是为了防止已失效的连接请求报文段突然又传送到了B,因而产生错误。
所谓已失效的连接请求报文段是这样产生的。A发送连接请求,但因连接请求报文丢失而未收到确认,于是A重发一次连接请求,成功后建立了连接。数据传输完毕后就释放了连接。现在假定A发出的第一个请求报文段并未丢失,而是在某个网络节点长时间滞留了,以致延误到连接释放以后的某个时间才到达B。本来这是一个早已失效的报文段。但B收到此失效的连接请求报文段后,就误以为A又发了一次新的连接请求,于是向A发出确认报文段,同意建立连接。假如不采用三次握手,那么只要B发出确认,新的连接就建立了。
  由于A并未发出建立连接的请求,因此不会理睬B的确认,也不会向B发送数据。但B却以为新的运输连接已经建立了,并一直等待A发来数据,因此白白浪费了许多资源。

9.10 四次挥手
前提知识:TCP首部的部分字段:
终止FIN:用来释放一个连接,当FIN=1时,表示此报文段的发送方的数据已发送完毕,并要求释放连接。

四次挥手具体过程
数据传输结束后,通信的双方都可以释放连接,并停止发送数据。
(1)客户端 A 的 TCP 进程先向服务端发出连接释放报文段,并停止发送数据,主动关闭 TCP 连接。释放连接报文段中 FIN=1,序号为 seq=u,该序号等于前面已经传送过去的数据的最后一个字节的序号加1。这时,A进入 FIN—WAIT-1 (终止等待1)状态,等待 B 的确认。TCP 规定,FIN报文段即使不携带数据,也要消耗掉一个序号。这是 TCP 连接释放的第一次挥手。
(2)B收到连接释放报文段后即发出确认释放连接的报文段,该报文段中,ACK=1,确认号为ack=u+1,其自己的序号为v,该序号等于B前面已经传送过的数据的最后一个字节的序号加1。然后B进入CLOSE—WAIT(关闭等待)状态,此时TCP服务器进程应该通知上层的应用进程,因而A到B这个方向的连接就释放了,这时TCP处于半关闭状态,即A已经没有数据要发了,但B若发送数据,A仍要接受,也就是说从B到A这个方向的连接并没有关闭,这个状态可能会持续一些时间。这是TCP连接释放的第二次挥手。
(3)A收到B的确认后,就进入了FIN—WAIT(终止等待2)状态,等待B发出连接释放报文段,如果B已经没有要向A发送的数据了,其应用进程就通知TCP释放连接。这时B发出的链接释放报文段中,FIN=1,确认号还必须重复上次已发送过的确认号,即ack=u+1,序号seq=w,因为在半关闭状态B可能又发送了一些数据,因此该序号为半关闭状态发送的数据的最后一个字节的序号加1。这时B进入LAST—ACK(最后确认)状态,等待A的确认,这是TCP连接的第三次挥手。
(4)A收到B的连接释放请求后,必须对此发出确认。确认报文段中,ACK=1,确认号ack=w+1,而自己的序号seq=u+1,而后进入TIME—WAIT(时间等待)状态。这时候,TCP连接还没有释放掉,必须经过时间等待计时器设置的时间2MSL后,A才进入CLOSED状态,时间MSL叫做最长报文寿命,RFC建议设为2分钟,因此从A进入TIME—WAIT状态后,要经过4分钟才能进入到CLOSED状态,而B只要收到了A的确认后,就进入了CLOSED状态。二者都进入CLOSED状态后,连接就完全释放了,这是TCP连接的第四次挥手。

为什么A在TIMW-WAIT状态必须等待2MSL的时间?
有两个原因:
①、为了保证A发送的最后一个ACK报文段能够到达B。即最后这个确认报文段很有可能丢失,那么B会超时重传,然后A再一次确认,同时启动2MSL计时器,如此下去。如果没有等待时间,发送完确认报文段就立即释放连接的话,B就无法重传了(连接已被释放,任何数据都不能出传了),因而也就收不到确认,就无法按照步骤进入CLOSE状态,即必须收到确认才能close。
②、防止“已失效的连接请求报文段”出现在连接中。经过2MSL,那些在这个连接持续的时间内,产生的所有报文段就可以都从网络中消失。

9.11 怎样创建一个可靠的UDP
由于在传输层UDP已经是不可靠的连接,那就要在应用层自己实现一些保障可靠传输的机制

简单来讲,要使用UDP来构建可靠的面向连接的数据传输,就要实现类似于TCP协议的

1、超时重传(定时器)

2、有序接受 (添加包序号)

3、应答确认 (Seq/Ack应答机制)

4、滑动窗口流量控制等机制 (滑动窗口协议)

等于说要在传输层的上一层(或者直接在应用层)实现TCP协议的可靠数据传输机制,比如使用UDP数据包+***,UDP数据包+时间戳等方法。

9.12 TCP为什么是可靠的
因为TCP有一些可靠传输的机制, 如超时重传,有序接受,应答确认,滑动窗口,流量控制、拥塞控制。

10、应用层
10.1 域名系统DNS
DNS解析就是将域名转换为IP地址

10.2 FTP协议(文件传送协议)
FTP使用TCP可靠地传输服务,FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
TFTP使用UDP

10.3 HTTP
万维网的客户程序和服务器之间采用超文本传输协议(HTTP),默认端口是80,HTTP通常使用TCP进行连接

10.4 浏览器输入一个地址回车后都发生了什么
1、使用DNS将域名解析成IP地址
2、浏览器与服务器建立TCP连接
3、浏览器通过http协议发送请求
4、服务器响应http请求,浏览器得到html代码
5、 浏览器解析html代码,并请求html代码中的资源
6、浏览器对页面进行渲染呈现给用户
7、断开TCP连接
https://www.cnblogs.com/humengxiangfeng/p/10534211.html

10.5 请说明一下http和https的区别
https协议要申请证书到ca,需要一定经济成本;2) http是明文传输,https是加密的安全传输;3) 连接的端口不一样,http是80,https是443;4)http连接很简单,没有状态;https是ssl加密的传输,身份认证的网络协议,相对http传输比较安全。

10.6 ● 请你讲讲http1.1和1.0的区别
http1.0的问题是非持续连接,http1.1是持续连接,即万维网服务器在发送响应后仍然在一段时间内保持这条连接,使得同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。