当前位置: 首页 > news >正文

Java面试题库——网络编程

1.http常见响应码

响应码含义
200成功
301永久移动。请求的资源已被永久的移动到新的URI,返回的信息会包括新的URI,浏览器会自动定向新的URI
302临时移动。与301类似,但资源只是临时被移动。客户端应继续使用原有的URI
400错误请求。客户端请求的语法错误,服务器无法理解
401未授权。请求要求用户的身份验证
403请求被禁止。服务器理解请求客户端的请求,但是拒绝执行此请求
404未找到。服务器无法根据客户端的请求找到资源
500服务器内部错误。无法完成请求
信息响应(100-199)、成功响应(200-299)、重定向(300-399)、客户端错误(400-499)、服务器错误(500-599)

2.forward和redirect的区别?

redirect是客户端发起的请求;forward是服务端发起的请求。
redirect浏览器显示被请求的URL;forward浏览器地址不显示被请求的URL。
redirect重新开始一个request,原页面的request生命周期结束;forward另一个连接时,request变量是在其生命周期内。
redirect实质上是两次HTTP请求;forward是一次请求。

3.简述tcp和udp的区别

TCP是面向连接的,TCP提供可靠的服务,通过TCP连接传输的数据不会丢失,没有重复,并且按顺序到达;UDP是无连接的,没有可靠性,但是速度快,操作简单,要求系统资源较少,可以实现广播发送。
TCP是面向字节流的;UDP是面向报文的。
TCP是全双工的可靠信道;UDP是不可靠信道。

4.简述TCP三次握手的过程

缩写含义
TCB传输控制块,打开后服务器/客户端进入监听(LISTEN)状态
SYNTCP报文标志位,该位为1时表示发起一个新连接
ACKTCP报文标志位,该位为1时,确认序号有效,确认接收到消息。TCP规定,在连接建立后所有报文的传输都必须把ACK置1
seq报文初始序列号,代表发送的第一个字节的序号
ack报文确认序号,代表希望收到的下一个数据的第一个字节的序号
第一次握手:建立连接时,客户端发送请求SYN+数据包当前序列号seq到服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器收到syn包,必须确认客户的SYN,然后发送应答ACK+请求SYN+确认收到上一个数据包的确认号ack+当前数据包序列号seq,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务端的syn+ack包,向服务器发送应答ACK+确认收到上一个数据包的确认号ack+当前数据包序列号seq,连接已建立,无需请求。客户端和服务端进入ESTABLISHED状态。简答:A与B建立TCP连接时:首先A向B发SYN(同步请求),然后B回复SYN+ACK(同步请求应答),最后A回复ACK确认,这样TCP的一次连接(三次握手)的过程就建立了!

5.tcp 为什么要三次握手,两次不行吗?为什么?

两次握手只能保证单向连接是畅通的。只有经过第三次握手,才能确保双向都可以收到对方发送的数据。

6.tcp粘包是怎么产生的?

TCP粘包:发送方发送的多个数据包,到接收方缓冲区首尾相连,粘成一包,被接收。
发送方原因:TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据。若连续几次发送的数据都很少,通常TCP会根据优化算法把这些数据合成一包后一次性发送出去,这样接收放就收到了粘包数据。
接收方原因:接收方引起的粘包是由于接收方用户进程不及时接收数据,从而导致粘包现象。这是因为接收方先把收到的数据放在系统接收缓冲区,用户进程从该缓冲区取数据,若下一包数据到达时前一包数据尚未被用户进程取走,则下一包数据放到系统接收缓冲区时就接到前一包数据之后,而用户进程根据预先设定的缓冲区大小从系统接收缓冲区取数据,这样就一次取到了多包数据。

7.OSI(开放式系统互联网通信)的七层模型有哪些?

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

8.get和post请求有什么区别?

get是从服务器上获取数据;post是向服务器提交数据。
get请求通过URL直接请求数据,数据信息可以在URL中看见;post请求是放在请求头中的,用户看不到。
get请求传送的数据量小,有限制,不能大于2kb;post传送的数据可以没有限制。
get安全性比较低;post相比较安全。

9.如何实现跨域?

代理跨域请求;
使用JSONP,利用了script不受同源策略的限制;
HTML5 的postMessage方法;
修改document.domain跨子域;
基于HTML5的websocket协议

10.说一下JSONP实现原理

同源:同协议、同主机、同端口号
json是一种数据格式,jsonp是一种数据调用的方式,带callback的json就是jsonp。
首先在客户端注册一个callback,然后把callback的名字传给服务器,此时,服务器先生成json数据,然后以JavaScript语法的方式,生成function,返回客户端,客户端解析script,并执行callback函数。

11.单工、半双工、全双工

单工:只支持数据在一个方向上传输;
半双工:允许数据在两个方向上传输,但在某一时刻,只允许数据在同一个方向上传输;
全双工:允许数据可以同时接收和发送信息,实现双向通信。

http://www.mrgr.cn/news/57001.html

相关文章:

  • 安卓設備上怎麼設置HTTP代理?
  • vue使用jquery的ajax,页面跳转
  • 10个巴西消费者中有7个买过中国商品,速卖通联手菜鸟给商家的好消息
  • JavaSE:15、集合类
  • 代码随想录算法训练营第46期Day35
  • 某ai gpt的bug
  • 洛谷 P3130 [USACO15DEC] Counting Haybale P
  • 科大讯飞AI开发者大赛颁奖典礼,万码优才荣获前三甲!
  • vue项目中pinia和vuex的使用
  • Android 默认去掉URL网络校验,设置不进行网络校验
  • 代码工艺:写代码的好习惯
  • arco-design 自定义table和for循环自定义form-item并添加自定义校验
  • Linux系统基础-进程间通信(4)_模拟实现进程池
  • 智慧楼宇平台,构筑未来智慧城市的基石
  • 聊一聊电的产生和输送联接到桌面PDU插座的那些事儿
  • Shiro授权
  • OpenHarmony4.0配置应用开机自启
  • 高效休息法
  • CSS背景
  • 【Java SE 】抽象类 和 接口 详解
  • 高标准农田信息化推动农业产业链升级
  • Scala的内部类
  • uniapp学习(007-3 壁纸项目:系统高度等信息的操作)
  • 线程池常见面试题
  • hadoop
  • linux 编译安装的php7.4 开启pgsql,pdo_pgsql的扩展