Java面试之网络知识

网络知识面试的特点:相对固定,理论偏多:

本文主要包括以下内容

抓包工具:wireshark

1:网络协议,七层协议的架构体系:物理层,数据链路层,网络层,传输层,会话层,应用层

2:TCP的三次握手建立连接,四次挥手断开连接:为什么是三次握手,为什么要传回SYN和ACK,为什么是四次挥手?

3:TCP,UDP协议的区别

4:TCP协议如何保证可靠传输(停止等待协议,自动重传请求ARQ协议,连续ARQ协议,滑动窗口,流量控制,拥塞控制)

5:在浏览器中输入URL地址显示主页的过程

6:常见的状态码

7:七种协议与HTTP协议之间的关系

8:HTTP长连接,短链接

9:HTTP和HTTPS的区别

10:Cookie和Session的区别

11:Socket相关知识点

下面一一介绍相关问题:

1:网络协议架构图

应用层:应用层的任务是通过应用进程间的交互来完成特定的网络应用,应用层协议定义应用进程间通信和交互的规则,网络应用不同应用层协议不同,如域名系统DNS,支持万网应用的HTTP协议,支持电子邮件的SMTP协议,应用层交互的数据成为报文

HTTP协议:字面意思,超文本传输控制协议(HyperText Transfer Protocal)

传输层:Transport layer,主要负责两台主机之间的数据传输服务,传输层的复用和分用,所谓的复用指的是多个应用进程可以同时使用下面运输层服务,分用和复用相反,是运输层把收到的信息分别交付到应用层的相关进程

传输层主要使用以下两种协议:

传输控制协议TCP:提供面向链接的,可靠的数据传输服务

用户数据协议UDP:提供无连接的,尽最大努力传输服务(不保证数据的可靠传输)

UDP的特点:无连接,尽最大努力交付,面向报文,没有拥塞控制,支持一对一,一对多,多对一,多对多的交互通信,开销小,只支持8字节

TCP的特点:面向链接,一对一,可靠交付服务,无差错,不丢失,不重复,并且按序到达,全双工通信,允许通信双方应用进程如何实践都能发送数据,面向字节流

网络层:选择合适的网间路由和交换节点,确保数据及时送达,网络层使用IP协议(IP数据抱)

 数据链路层:两台主机之间的数据传输

物理层:传递单位为比特

总结:图片来源https://blog.csdn.net/yaopeng_2005/article/details/7064869

2:TCP的三次握手和四次挥手:

第一次握手:建立连接时,客户端发送SYN包到服务器,并进入SYN-SEND状态,等待服务器确认

第二次握手:服务器收到SYN包,必须确认客户端的SYN同时自己也发送一个SYN包(SYN+ACK),此时服务器进入SYN-RECV状态

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack+1),此包发送完毕,客户端和服务器进入EATABLESHED状态,完成三次握手

三次握手的目的是为了初始化sequence number的值 

四次挥手:图片来源于网络

断开一个 TCP 连接则需要“四次挥手”:

  • 客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送
  • 服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号
  • 服务器-关闭与客户端的连接,发送一个FIN给客户端
  • 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1

为什么要四次挥手

任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。

3:TCP,UDP的区别

4:TCP协议保证可靠传输

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

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

6:常见的状态码

7:七种协议与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和HTTPS的区别

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

  HTTPS和HTTP的区别主要如下:

  1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

  2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

10:Cookie和Session区别

11:Socket:

Socket通信步骤:(简单分为4步)

1.建立服务端ServerSocket和客户端Socket

2.打开连接到Socket的输出输入流

3.按照协议进行读写操作

4.关闭相对应的资源

文中资源大多来源于网络

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值