计算机网络与javaweb

计算机网络

1.OSI七层模型

答:OSI七层模型包括:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
应用层:由用户自己规定,规定各个应用之间消息传递的形式等,包括各机互访协议,分布式数据库协议等。常见的应用层协议有HTTP协议和FTP等。
表示层:在满足用户需求的基础上,尽可能的节省传输费用而设置的,比如传输压缩文件,jpeg或者加密文件等格式。
会话层:用于建立和拆除会话。
传输层:负责将来自会话层的消息传递给网络层,常见的传输层协议有TCP和UDP等协议。
网络层:规定通信网内的路由选择等方式,建立用户间的信息报传输设施。常见的网络层协议有IP,ICMP以及ARP等协议。
数据链路层:与建立数据传输链路相关。
物理层:规定一些机电性能,也包括工作方式如双工、单工或半双工,建立通信的启动和终止等。

2.HTTP和HTTPS的区别

答:HTTP和HTTPS的主要区别可以总结如下:
HTTP是超文本传输协议,数据明文传输;HTTPS在HTTP的基础上加入了SSL协议,实现数据的加密传输
HTTPS需要区申请证书,一般是收费的
HTTP默认使用80端口,HTTPS默认使用443端口

3.Session和Cookie的区别

答:用户发起请求,服务端收到请求处理后可以生成一个sessionId,并且将sessionId存入cookie中返回给客户端,将session的内容存储在服务器上。在下一次的请求中,客户端带着cookie来请求服务器,服务端从cookie中取出sessionId,实现了用户会话状态的保持。
总结:session保存在服务端。cookie保存在客户端,并且cookie有大小限制

4.Get和Post的区别

Get一般用来从服务器上查询获取资源;Post一般用来更新服务器上的资源;
Get方法将参数直接拼接在了URL后边,明文显示,可以通过浏览器地址栏直接访问;
Post请求用于提交表单,数据不是明文的,安全性更高;
Get请求有长度限制,Post请求没有

5.HTTP code有哪些?

1xx(临时响应)
2xx(成功)
3xx(重定向):表示要完成请求需要进一步操作
4xx(错误):表示请求可能出错,妨碍了服务器的处理
5xx(服务器错误):表示服务器在尝试处理请求时发生内部错误

常见HTTP协议的状态码:
200(成功)
302 (重定向):请求重定向到指定网页
401(未授权):请求要求身份验证
403(禁止):服务器拒绝请求(比如死循环了,一直访问)
404(未找到):服务器找不到请求的网页
405 (方法禁用):Post请求当成了Get请求直接访问
500 (服务器内部错误):有bug导致程序嗝屁了
502 (错误网关):服务器从上游接到了无效响应

6.TCP协议和UDP协议的区别

答:TCP和UDP协议都是传输层常见的协议,它们的主要区别如下所示:
TCP协议进行数据通信之前需要三次握手建立连接,UDP协议不需要建立连接即可发送数据。
TCP有确认机制,丢包可以重发,保证数据的正确性;UDP不保证正确性,只是单纯的负责发送数据包。
网络包中的TCP头部为20个字节;UDP头部只有8个字节。

7.TCP三次握手四次挥手

TCP三次握手
在这里插入图片描述
在这里插入图片描述
TCP四次挥手
1)客户端发出连接释放报文,并且停止发送数据。此时,客户端进入FIN-WAIT-1(终止等待1)状态。
2)服务器收到连接释放报文,发出确认报文,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
3)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文。
4)服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5)客户端收到服务器的连接释放报文后,必须发出确认,此时,客户端就进入了TIME-WAIT(时间等待)状态。经过(最长报文段寿命)2MSL的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。
TCP用一种叫做TCB,也叫传输控制块的数据结构把发给不同设备的数据封装起来,我们可以把该结构看做是信封

为什么要三次握手?两次可以吗?

为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤。如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认

为什么连接的时候是三次握手,关闭的时候却是四次握手?

答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

答:虽然按道理,四个报文都发送完毕,可以直接进入CLOSE状态了, 但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

8.Servlet是什么?运行在Servlet容器中,其生命周期由容器来管理。

Servlet是一种独立于平台和协议的服务器端的Java技术,可以用来生成动态的Web页面。
Servlet的生命周期包含了下面4个阶段:

1.加载和实例化

2.初始化

3.请求处理

4.服务终止

9.Web服务器在与客户端交互时Servlet的工作过程是:

  1. 在客户端对web服务器发出请求
    
  2. web服务器接收到请求后将其发送给Servlet
    
  3. Servlet容器为此产生一个实例对象并调用ServletAPI中相应的方法来对客户端HTTP请求进行处理,然后将处理的响应结果返回给WEB服务器.
    
  4. web服务器将从Servlet实例对象中收到的响应结果发送回客户端.
    

10.ajax

Ajax的工作原理通过 js 异步发起请求,局部更新页面的技术。 与传统请求相比,这样使客户端和服务端发生了少量的数据交换,ajax实现局部页面的更新
$.ajax({
url:
type:
data:
success:function(data){
if(data.success){

}else{
}
}
})

// ajax–get 请求
$("#getBtn").click(function(){
$.get(“url”,“data”,function (data) {
$("#msg").html(" get 编号:" + data.id + " , 姓名:" + data.name); },“json”); });

// ajax–post 请求 $("#postBtn").click(function(){
$.post(“url”,“data”,function (data) {
$("#msg").html(" post 编号:" + data.id + " , 姓名:" + data.name)},“json”); });

11.如何修改tomcat端口号

8080,找到tomcat的server.xml修改 port:8080改为8009

12.dispatcher和redirect区别

dispatcher是服务器跳转,url地址栏不变
redirect是客户端跳转,地址栏改变

13.上传文件和上传数据有什么区别?

上传文件

上传数据

少了enctype=“multipart/form-data”

14.jsp是什么?

1.jsp实际上也是一个servlet,jsp 的主要作用是代替 Servlet 程序回传 html 页面的数据
Servlet是运行在服务端的小程序;作用是用来接收用户请求,并做出响应;(用来动态地生成html页面;)

15,动态包含于静态包含区别

动态INCLUDE用jsp:include动作实现 <jsp:include page=included.jsp flush=true />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
静态INCLUDE用include伪码实现,不会检查所含文件的变化,适用于包含静态页面 <%@ include file=included.html %>

16.JSP四大作用域分别为:page, request ,session, application 。

第一个作用域是page,他只在当前页面有效,
第二个作用域是request,他在当前请求中有效
第三个作用域是session,他在当前回话中有效。
第四个作用域是application,他整个服务器中都有效

17.Servlet声明周期

实例化,初始化,处理请求以及服务结束
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

18.Tomcat的优化经验

答:去掉对web.xml的监视
把jsp提前编辑成Servlet。
加大tomcat使用的jvm的内存

19.IP地址

分为IPV4和IPV6,我们所说的的IP地址指的是IPV4的地址。
IP地址有5类,A类到E类,各用在不同类型的网络中。地址分类反映了网络的大小以及数据包是单播还是组播的。
A类到C类地址用于单点编址方法,但每一类代表着不同的网络大小。
A类地址(1.0.0.0-126.255.255.255)用于最大型的网络,该网络的节点数可达16,777,216个。
B类地址(128.0.0.0-191.255.255.255)用于中型网络,节点数可达65,536个。
C类地址(192.0.0.0-223.255.255.255)用于256个节点以下的小型网络的单点网络通信。
D类地址并不反映网络的大小,只是用于组播,用来指定所分配的接收组播的节点组,这个节点组由组播订阅成员组成。D类地址的范围为224.0.0.0-239.255.255.255。
E类(240.0.0.0-255.255.255.254)地址用于试验。
public String validIPAddress(String IP) {
if(isIPv4(IP)) return “IPv4”;
if(isIPv6(IP)) return “IPv6”;
return “Neither”;
}

private boolean isIPv4(String IP){
    String[] strings = IP.trim().split("\\.");
    if(strings.length!=4||IP.charAt(IP.length()-1)=='.') return false;
    for (String s:strings){
        if(s.length()==0||s.length()>3) return false;
        char[] chars = s.toCharArray();
        if(chars[0]=='0'&&chars.length!=1) return false;
        int sum = 0;
        for (char c:chars){
            if(c>='0'&&c<='9'){
                int t = c-'0';
                sum = sum*10+t;
            }else {
                return false;
            }
        }
        if(sum>255) return false;
    }
    return true;
}

20.Tomcat集群

在这里插入图片描述
复制两个tomcat,修改端口号
修改nginx的config文件里的server下的location
在这里插入图片描述
upstream负载均衡,与下面的proxy_pass,weight权重
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值