【面试题笔记-Java】计算机网络

计算机网络

1.OSI与TCP/IP各层的结构与功能,都有哪些协议?

OSI:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

TCP/IP:应用层、传输层、网络层、网络接口层

应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用,交互的数据单元为报文

运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务,数据协议有TCP和UDP两种,TCP是面向连接的,可靠的数据传输服务;UDP是面向无连接的,不保证数据传输的可靠性

在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。使用IP协议,分组叫IP数据报

数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。 在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。

在物理层上所传送的数据单位是比特。 物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。

2.TCP 三次握手和四次挥手(面试常客)

TCP的三次握手

1.发送端向接收端发送一个SYN数据包

2.接收端接收到,并返回一个带有SYN/ACK的数据包

3.发送端收到,并返回带有ACK的数据包

第一次握手,接收端能够确定发送端能发送,自己能接收

第二次握手,发送端能确定自己能发送、接收,接收端能发送、接收;接收端能确定自己能接收,发送端能发送

第三次握手,发送端能确定自己能发送、接收,接收端能发送、接收;接收端能确定自己能接收、发送,发送端能发送、接收

TCP的四次挥手

1.客户端向服务端发送一个FIN,通知关闭

2.服务端发送一个ACK,表示已经接收到通知,这时候服务端继续发送未发送完成的数据,客户端停止发送

3.服务端发送完毕后,向客户端发送一个FIN,进入最后确认状态

4.客户端收到FIN后,进入关闭等待状态,向服务端发送一个ACK,服务端收到后关闭连接,等待时间过后,客服端也进行关闭

3.TCP与UDP 协议的区别

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP对系统资源要求较多,UDP对系统资源要求较少。

4.TCP 协议如何保证可靠传输

1.应用数据被分割成 TCP 认为最适合发送的数据块。
2.TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
3.校验和: TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
4.TCP 的接收端会丢弃重复的数据。
5.流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。 (TCP 利用滑动窗口实现流量控制)
6.拥塞控制: 当网络拥塞时,减少数据的发送。
7.ARQ协议: 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。
8.超时重传: 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

保证可靠性

1.分块,将数据分为tcp处理的各个段2.排序,tcp将发送的包进行编号,接收端排序后给应用层处理3.校验性,报文的首和数据进行校验,如果校验出现差错,则放弃该报文4.tcp会丢弃重复数据5.流量控制,使用滑动窗口协议,每个区都有缓冲区,接收方来不及处理,会降低发送方速率,防止包跌势6.拥塞控制,如果网络堵塞,减少数据发送7.ARQ协议,发送完一个分组就停止发送,等待对方确认,收到确认后再发送下一个分组8.超时重传,tcp发送一个段后,启动一个定时器,等待目标端确认,如果在规定时间内没有确认就重新发送

5.在浏览器中输入url地址 ->> 显示主页的过程(面试常客)

总体分为以下几个步骤

1.解析DNS

2.TCP建立连接

3.发送HTTP请求

4.服务端处理请求并发送HTTP报文

5.浏览器处理解析渲染界面

6.结束连接

6.常用状态码

状态码类别描述
1XX信息性状态码接受的请求正在处理
2XX成功状态码请求正常处理完毕
3XX重定向状态码需要进行附加操作以完成请求
4XX客户端错误状态码服务器无法处理请求
5XX服务端错误状态码服务器处理请求出错

7.各种协议与http协议的关系

在这里插入图片描述

1.HTTP协议用来发送HTTP请求报文

2.TCP协议用来将HTTP报文进行分段,加上序号,增加可靠性

3.IP协议将请求报文进行中转和发送

4.TCP协议负责将请求报文按照序号进行组装

5.HTTP协议处理请求,发送HTTP报文,方法相同

8.HTTP长连接,短连接

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:

Connection:keep-alive

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

9.HTTP是不保存状态的协议,如何保存用户状态?

HTTP 是一种不保存状态,即无状态(stateless)协议。也就是说 HTTP 协议自身不对请求和响应之间的通信状态进行保存。那么我们保存用户状态呢?Session 机制的存在就是为了解决这个问题,Session 的主要作用就是通过服务端记录用户的状态。

一般是在服务端的session 中存放数据,在cookie中存放sessionid,如果cookie被禁用,可以直接加载url路径后面

10.Cookie的作用是什么?和Session有什么区别?

Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。

Cookie 一般用来保存用户信息 比如①我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了;②一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);③登录一次网站后访问网站其他页面不需要重新登录。Session 的主要作用就是通过服务端记录用户的状态。 典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。

Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。

Cookie 存储在客户端中,而Session存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。

11.URI和URL的区别是什么?

URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
URL(Uniform Resource Location) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。
URI的作用像身份证号一样,URL的作用更像家庭住址一样。URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

12.Http和Https的区别

Http协议运行在TCP之上,明文传输,客户端和服务器都无法验证对方的身份;Https运行于SSL之上,SSL运行于TCP之上,是添加了加密和认证机制的Http。
端口不同:http和https使用不同的连接方式,默认用的端口也不一样,前者是80端口,后者是443端口;
资源消耗不同:和http通信相比,https通信会由于加减密处理消耗更多的CPU和内存资源;
开销:https通信需要证书,而证书一般需要向认证机构购买。
https的加密机制是一种共享密钥加密和公开加密并用的混合加密机制。

13.Http1.0与Http1.1的主要区别

  • 1.0使用的是短连接,如果发送100个图,就需要100次握手和挥手,而1.1是建立长连接,只需要一次握手挥手
  • http1.1新增了许多状态码
  • 在缓存处理方面,1.1之后新加了许多的请求头
  • 1.1版本支持断点续传和部分传送,返回状态码206
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值