网络层

网络层提供的两种服务

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每一个分组(也就是IP数据报)独立发送,与其后面的分组无关(不进行编号)。网络层不提供服务质量的承诺

对比的方面 虚电路服务 数据服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
链接的建立 必须有 不需要
终点地址 仅在链接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
当结点出故障时 所有通过故障的虚电路均不能工作 出故障的节点可能会丢失分组,一些路由可能发生变化
分组的顺序 总是按发送顺序到达终点 到达时间不一定按照发送顺序
端到端差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责

网际协议IP

网际协议IP是TCP/IP体系中两个最主要的协议之一,与之配套使用的还有三个协议:

  • 地址解析协议 ARP(Address Resolution Protocol)
  • 网际控制报文协议 ICMP (Internet Control Message Protocol)
  • 网络组管理协议 IGMP(Internet Group Management Protocol)

虚拟互联网络

将网络互相链接起来要使用一些中间设备。根据中间设备所在的层次,可以有以下四种不同的中间设备。

  • 物理层:转发器
  • 数据链路层:网桥桥接器
  • 网络层:路由器
  • 网络层以上:网关,用网关链接连个不兼容的系统需要在高层进行协议转换。

分类的IP地址

IP地址:给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位的标识符。
IP地址的编址方法:

  1. 分类的IP地址
  2. 子网的划分
  3. 构成超网

分类IP地址:每一类地址都是由两个固定长度的字段组成,其中一个字段是网络号,它标志主机(或路由器)所链接到的网络。第二个字段是主机号,它标志该主机(或路由器)。主机号在前面网络号所指明的范围是唯一的。

地址类别 地址前缀 网络号长度 可指派网络号 每个网路号可指派的地址
A类地址 0 8 126 (27-2)包括全0和127(环回地址) 16777214 (214-1)
B类地址 10 16 16383 (214-1) 65534 (216-2)
C类地址 110 24 2097151 (221-1) 254 (28-1)
D类地址 1110 多播地址 - -
E类地址 1111 保留为今后使用 - -

IP地址放在IP数据的首部,而硬件地址则放在MAC帧的首部。在网络层和网络层以上使用的是IP地址,而数据链路层及以上使用的是硬件地址。

地址解析协议ARP

为了解决:已经知道一个机器(主机或路由器)的IP地址,需要找出其相应的硬件地址。

解决方法:在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或动态删除)。

过程:

  1. 广播发送ARP请求分组
  2. 在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组
  3. 如果有一个主机的IP与查询IP一致,则就收下这个ARP请求,并发送ARP响应分组。不一致则不理睬,所以ARP响应是单播。
  4. 源主机收到ARP响应分组后,在ARP高速缓存中写下主机B的IP地址到硬件地址的映射。

IP数据报的格式

一个IP数据报由首部和数据两部分组成。首部前一部分是固定长度,共20字节,是所有IP数据报必须具有的。首部的后面一部分是可选字段,长度可变。

评论和共享

JavaEE 考点

解决乱码

1
response.setContentType("text/html;charset=UTF-8");

接收参数

1
req.getParameter("words");

接收多个参数 返回数组

1
req.getParameterValues("接收多个参数");

输出

1
PrintWriter out = response.getWriter();

跳转JSP

1
req.getRequestDispatcher("calculator.jsp").forward(req, resp);

重定向

1
response.sendRedirect("http://www.baidu.com");

传参

1
req.setAttribute("number","hello");

JSP设置编码

1
<%@ page contentType="text/html;charset=UTF-8" language="java" import="??,??" %>

注解方式

1
@WebServlet(name = "Annotate", urlPatterns = {"/Annotate"})

Cookie

1
2
3
4
5
6
//javax.servlet.http.cookie
Cookie[] cookies = req.getCookies();
cookie = new Cookie("name","killer");
cookie.setPath(req.getContextPath());
cookie.setMaxAge(30);
resp.addCookie(cookie);

Session

1
2
HttpSession session = req.getSession(true);
session.setAttribute("max","1");

Servlet Context 用来不同Servlet传递数据

1
String s = (String)getServletContext().getAttribute("temp");

Filter

1
2
3
4
5
6
7
8
9
10
11
@WebFilter(filterName = "LoginFilter", urlPatterns = {"/Login"})
public class LoginFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {}
}

操作数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class DatabaseManager {
private Connection connection;

public void init(){
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/table?useUnicode=true& characterEncoding=utf8","root","");
}catch (Exception e){
e.printStackTrace();
}
}

public void close(){
try {
connection.close();
}catch (Exception e){
e.printStackTrace();
}
}

public boolean addOrDeleteOrUpdate(String sql){
boolean i = true;
try {
PreparedStatement ps = connection.prepareStatement(sql);
i = ps.execute();
} catch (Exception e){
e.printStackTrace();
}
return i;
}
}

  • JavaEE 是一个标准中间件体系结构,是企业分布式应用开发标准。
  • JDK (Java Development Kit) JDK是 Java 语言的软件开发工具包,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库
  • JRE (Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
  • Servlet 是一种独立于操作系统平台和网络传输协议的服务器端的 Java 应用程序,它用来拓展服务器的功能,可以生成动态的Web页面
  • JSP (Java Server Pages),中文名叫java服务器页面,其根本是一个简化的Servlet设计。它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)
  • Cookie 有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。
  • Session 称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。
  • Servlet 上下文 提供了一个同一 Web 应用内的不同资源间共享信息的场所。
  • Filter 拦截请求和响应,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。
  • Listener 是Servlet 2.4 规范以后增加的新特性。用来主动监听 Web 容器事件。
  • JavaBean 是一些可移植、可重用,并可以组装到应用程序中的 Java 类。
  • JDBC (Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
  • JPA JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
  • EJB EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。
  • Web服务 Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

java线程实现方法:

  • 继承Thread类,重写父类run()方法
  • 实现runnable接口
  • 使用ExecutorService、Callable、Future实现有返回结果的多线

java多态性的机制

  • 重载:有同样的方法名称不同的参数列表。a(){} a(String b){}…
  • 重写(也称覆盖):即可以重新编写与父类同名方法形象的称之为重写(覆盖)。

JSP中动态include和静态include区别:

动态INCLUDE在使用的时候,会先解析所要包含的页面(你例子中的included.jsp),解析后在和主页面放到一起显示;
静态INCLUDE在使用的时候,不会解析所要包含的页面(你例子中的included.htm),也就是说,不管你的included.htm中有什么,我的任务就是把你包含并显示,其他的一概不管搜索

jsp:include是先编译一下included.jsp文件,然后再包含 先编译,后包含
@ include是先把文件包含就来,然后统一编译 先包含,后编译

评论和共享

作者的图片

Archie Shi

Nothing to say


Front-End Development Engineer