1.DDoS攻击原理
DDoS是指分布式拒绝服务(Distributed Denial of
Service):试图通过恶意请求使系统或者网络超载进而无法继续提供服务。对于一个网站来说,这意味着,该网站将无法加载,用户无法进行交易,查看内
容或者登录账户。对于网络来说,DDoS攻击导致带宽饱和甚至淹没网络设施,对整个网络的用户造成大面积中断。慢慢地,一对一的DoS攻击形态已慢慢淡
出,取而代之的是DDoS攻击,其原理就是一次寻找几百台/几千台或几万台电脑,同时对受害者的服务器或电脑发动联合大攻击,这样就算是再强劲,面对如此
规模的攻击,仍无招架之力。

2.TCP连接有哪些状态

LISTEN:侦听来自远方的TCP端口的连接请求

SYN-SENT:在发送连接请求后等待匹配的连接请求(客户端状态)。客户端尝试链接服务端,通过open方法

SYN-RECEIVED:在收到和发送一个连接请求后等待对方对连接请求的确认(服务端状态)。服务接受创建请求的SYN后,也就是TCP三次握手中的第2步,发送ACK数据包之前

ESTABLISHED:代表一个打开的连接。客户端接受到服务端的ACK包后的状态,服务端在发出ACK在一定时间后即为ESTABLISHED

FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认。主动关闭的一方,在发出FIN请求之后,也就是在TCP四次握手的第1步

FIN-WAIT-2:从远程TCP等待连接中断请求。主动关闭的一方,在接受到被动关闭一方的ACK后,也就是TCP四次握手的第2步

CLOSE-WAIT:等待从本地用户发来的连接中断请求。被动关闭的一方,在接受到客户端的FIN后,也就是在TCP四次握手的第2步

CLOSING:等待远程TCP对连接中断的确认

LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认。被动关闭的一方,在发送ACK后一段时间后(确保客户端已收到),再发起一个FIN请求。也就是TCP四次握手的第3步

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认。主动关闭的一方,在收到被动关闭的FIN包后,发送ACK。也就是TCP四次握手的第4步

CLOSED:没有任何连接状态

3.HTTP/1.0 vs HTTP/1.1中Keep-Alive的作用
Keep-
Alive就是我们通常所说的长连接,他可以减少我们tcp链接的开销,加快网站的加载速度。在HTTP1.0及各种加强版中,需要在request中增
加”Connection: keep-alive“ header才能够支持,而在HTTP1.1中是默认打开的。

4.HTTPS的原理
https是基于安全目的的Http通道,其安全基础由SSL层来保证。最初由netscape公司研发,主要提供了通讯双方的身份认证和加密通信方法。现在广泛应用于互联网上安全敏感通讯。

 
http和https区别:
(1) 协议基础不同:Https在Http下加入了SSL层,
(2)通讯方式不同:Https在数据通信之前需要客户端、服务器进行握手(身份认证),建立连接后,传输数据经过加密,通信端口443。

SSL协议基础
SSL协议位于TCP/IP协议与各种应用层协议之间,本身又分为两层:
SSL记录协议(SSL Record Protocol):建立在可靠传输层协议(TCP)之上,为上层协议提供数据封装、压缩、加密等基本功能。
SSL握手协议(SSL Handshake Procotol):在SSL记录协议之上,用于实际数据传输前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

5.如何对HTTP数据进行gzip压缩
gzip
是一种数据压缩格式,默认且目前仅使用deflate算法压缩data部分;deflate是一种压缩算法,是huffman编码的一种加强,他能更加有
效节约带宽流量。他先把文本压缩为.gz然后传输给浏览器,最后由浏览器负责解压缩呈现给用户,其大致过程如下:

(1)首先浏览器请求某个URL 地址,并在请求的头 (head) 中设置属性accept-encoding值为gzip、deflate,表明浏览器支持gzip和deflate这两种压缩方式。
(2)WEB服务器接收到请求后判断浏览器是否支持压缩,如果支持就传送压缩后的响应内容,否则传送不经过压缩的内容;
(3)浏览器获取响应内容后,判断内容是否被压缩,如果是则解压缩,然后显示响应页面的内容。
servlet中的实现

String data = "abcdabcdabcdabcdabcdabcdab"               
        System.out.println("原始数据的大小为:" + data.getBytes().length);
        
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        GZIPOutputStream gout = new GZIPOutputStream(bout); //buffer
        gout.write(data.getBytes());
        gout.close();
        //得到压缩后的数据
        byte g[] = bout.toByteArray();
        response.setHeader("Content-Encoding", "gzip");
        response.setHeader("Content-Length",g.length +"");
        response.getOutputStream().write(g);
数据量过小时可能会发生压缩后更大的情况

6.Cookie的Domain, Path, Expires什么作用
Expires – 过期时间。指定cookie的生命期。具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间,就必须使用这个属性。当过了到期日期时,浏览器就可以删除cookie文件,没有任何影响。

Path

路径。指定与cookie关联的WEB页。值可以是一个目录,或者是一个路径。如果http://www.zdnet.com/devhead
/index.html
建立了一个cookie,那么在http://www.zdnet.com/devhead/目录里的所有页面,以及该目录下面任何子目录里的页面都可以
访问这个cookie。这就是说,在http://www.zdnet.com/devhead/stories/articles
里的任何页面都可以访问http://www.zdnet.com/devhead/index.html建立的cookie。但是,如果http:
//www.zdnet.com/zdnn/
需要访问http://www.zdnet.com/devhead/index.html设置的cookes,该怎么办?这时,我们要把cookies
的path属性设置成“/”。在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子:
如果想让 http://www.zdnet.com/devhead/filters/
和http://www.zdnet.com/devhead/stories/共享cookies,就要把path设成“/devhead”。

Domain

域。指定关联的WEB服务器或域。值是域名,比如zdnet.com。这是对path路径属性的一个延伸。如果我们想让
catalog.mycompany.com 能够访问shoppingcart.mycompany.com设置的cookies,该怎么办?
我们可以把domain属性设置成“mycompany.com”,并把path属性设置成“/”。FYI:不能把cookies域属性设置成与设置它的
服务器的所在域不同的值

7.浏览器如何缓存文件
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
Expires策略
    Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。
Cache-control策略
    Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过Cache-Control的选择更多,设置更细致,如果同时
设置的话,其优先级高于Expires。

javaweb作業中的幾個要點的更多相关文章

  1. [转]2010 Ruby on Rails 書單 與 練習作業

    原帖:http://wp.xdite.net/?p=1754 ========= 學習 Ruby on Rails 最快的途徑無非是直接使用 Rails 撰寫產品.而這個過程中若有 mentor 指導 ...

  2. 判斷作業系統為 64bit 或 32bit z

    有時我們在開發Windows 桌面應用程式時,會發生一些弔詭的事情,作業系統位元數就是一個蠻重要的小細節,若您寫的應用程式在Windows 的32bit 作業系統上可以完美的運行,但不見得在64bit ...

  3. WebRequest + Https + 憑証錯誤 = 作業逾時

    前言 一般的系統一登入時,都會顯示公告訊息,我們的系統也是! 因為系統效能問題,所以就幫忙看了程式.發現,每次登入時,都會到DB取公告資料,但公告並不會因為個人而有所不同,是針對整個系統的呀! 所以就 ...

  4. Azure SQL作業

    由於要定期去刪除比較久的資料,礙於Azure SQL DB目前無法直接創建作業,目前找到一種方式就是通過local的SQL SERVER來執行AZURE SQL指令. 步驟如下: SQL Server ...

  5. php 文件上传类,功能相当齐全,留作开发中备用吧。

    收藏一个经典好用的php 文件上传类,功能相当齐全,留作开发中备用吧. 好东西,大家都喜欢,才是真的好,哈哈!!! <?php  /**   * 文件上传类   */  class upload ...

  6. ES 處於“initializing”狀態,此時主節點正在嘗試將分片分配到集群中的數據節點。 如果您看到分片仍處於初始化或未分配狀態太長時間,則可能是您的集群不穩定的警告信號。

    指標要點: Cluster status: 如果集群狀態為黃色,則至少有一個副本分片未分配或丟失. 搜索結果仍將完成,但如果更多的分片消失,您可能會丟失數據. 紅色的群集狀態表示至少有一個主分片丟失, ...

  7. 這是我既C語言作業寫博客後寫的第一篇博客

    這篇博客應該算是寫給我自己的博客吧,所以這裏我想用繁體字寫,因為我漸漸地發現我已經很少使用到繁體字了,日常QQ聊天都使用簡體字,繁體字都懶得切換了,但是為了不讓別人麻煩,在外界交流的時候我會使用簡體字 ...

  8. 项目自动化建构工具gradle 入门4——javaWeb在浏览器中显示helloWorld

    在java应用中,其实做的最多的还是java web应用.所以现在我们做的就是用gradle构建一个简单的web项目,简单点,直接上代码吧. 1.进入目录D:\work\gradle\web,新建文件 ...

  9. [R] [Johns Hopkins] R Programming 作業 Week 2 - Air Pollution

    Introduction For this first programming assignment you will write three functions that are meant to ...

随机推荐

  1. AVFoundation--AVPlayer

    // // AVPlayerNetViewController.m // PodsTest // // Created by ZhuYi on 16/4/29. // Copyright © 2016 ...

  2. POJ 3259 Wormholes(SPFA+邻接表)

    ( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<queue> #include<vector ...

  3. 【Loadrunner】初学Loadrunner——录制脚本、回放、以及优化

    一.脚本录制(录制) 打开Loadrunner > 选择创建/编辑脚本 > NewScript > 选择协议(单协议.多协议) > Strart Recording >选 ...

  4. 菲菲更名宝贝 得意非凡版 v1.9 免费绿色版

    软件名称: 菲菲更名宝贝 得意非凡版软件语言: 简体中文授权方式: 免费软件运行环境: Win8 / Win7 / Vista / WinXP软件大小: 12.5MB图片预览: 软件简介:菲菲更名宝贝 ...

  5. ural 1352. Mersenne Primes

    1352. Mersenne Primes Time limit: 1.0 secondMemory limit: 64 MB Definition. If the number 2N−1 is pr ...

  6. 深入体会__cdecl与__stdcall

    在学习C++的过程中时常碰到WINAPI或者CALLBACK这样的调用约定,每每觉得十分迷惑.究竟这些东西有什么用?不用他们又会不会有问题?经过在网上的一番搜寻以及自己动手后,整理成以下的学习笔记.1 ...

  7. iOS 视图控制器生命周期

    1.init: 2.viewDidLoad: 3.viewWillAppear: 4.viewDidAppear: 5.viewWillDisappear; 6.viewDidDisappear

  8. javaWEB总结(1):第一个servlet程序

    1.新建一个javaWeb工程,工程的目录如下 2.在com.dao.chu的包下新建一个HelloServlet.java类 package com.dao.chu; import java.io. ...

  9. 编译使用luasocket

    编译lua5.1: 因为luasocket使用的是lua5.1,所以先下载lua5.1,编译,并把头文件和dll放在xxx/lua5.1/include和xxx/lua5.1/lib 编译luasoc ...

  10. 《C++ Primer》之面向对象编程(三)

    继承情况下的类作用域 在继承情况下,派生类的作用域嵌套在基类作用域中.如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义.正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就 ...