0%

IP协议

IP协议是一个不可靠、无连接的服务,负责在源地址和目的地址之间传送数据报,为了适应不同网络对分组大小的要求,需要对上层传来的报文进行分割,最后调用本地网络协议将数据报传送给下一个网关或目的计算机,所有的TCP、UDP、ICMP数据都是以IP数据报格式传输的

不可靠是指不能保证IP数据报能成功地到达目的地

无连接是指IP并不维护任何关于后续数据报的状态信息,每个数据报的处理是相互独立的

主要功能

  • IP寻址
  • 路由
  • 分包和组包
阅读全文 »

局域网中的MAC子层

MAC子层又称为介质访问控制子层,主要作用是

  • 用来寻址
  • 解决网络中多个用户争抢共享物理介质或者共享信道的现象(只有在广播类型网络中存在)

信道类型

信道分为点对点信道和广播信道两大类

  • 点对点信道:由两个没有经过任何中间设备的节点间构成的通道
  • 广播信道:一个信道被多条链路所共享,一个节点发送的数据可以同时被多个节点接收到

引导类

之前简单地介绍了一下Bootstrap和ServerBootstrap两个引导类,先来看一下Bootstrap有哪些方法

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// 设置EventLoopGroup,EventLoopGroup用来处理所有通道的IO事件
public B group(EventLoopGroup group)

@SuppressWarnings("unchecked")
private B self() {
return (B) this;
}

// 设置通道类型
public B channel(Class<? extends C> channelClass)

// 使用ChannelFactory来设置通道类型
public B channelFactory(io.netty.channel.ChannelFactory<? extends C> channelFactory)

// 设置本地地址,也可以通过bind和connect方法来设定
public B localAddress(SocketAddress localAddress)

/**
* @see #localAddress(SocketAddress)
*/
public B localAddress(int inetPort)

/**
* @see #localAddress(SocketAddress)
*/
public B localAddress(String inetHost, int inetPort)

/**
* @see #localAddress(SocketAddress)
*/
public B localAddress(InetAddress inetHost, int inetPort)

// 设置通道选项,如果value为null,则删除设置对应的属性
public <T> B option(ChannelOption<T> option, T value)

// 设置属性到Channel,如果value为null,则删除对应的属性
public <T> B attr(AttributeKey<T> key, T value)

// 创建一个新的Channel并绑定
public ChannelFuture bind()

public ChannelFuture bind(int inetPort)

public ChannelFuture bind(String inetHost, int inetPort)

public ChannelFuture bind(InetAddress inetHost, int inetPort)

public ChannelFuture bind(SocketAddress localAddress)

// 设置ChannelHandler用于处理请求事件
public B handler(ChannelHandler handler)

// 连接远程通道
public ChannelFuture connect()

public ChannelFuture connect(String inetHost, int inetPort)

public ChannelFuture connect(InetAddress inetHost, int inetPort)

public ChannelFuture connect(SocketAddress remoteAddress)
阅读全文 »

文件管理

计算机中一般都把数据存储到文件中,需要时再将数据调入内存,这一过程是由操作系统完成的,该功能称为文件管理功能

  • 文件:具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合
  • 逻辑结构:有结构的记录式文件、无结构的流式文件
  • 物理结构:连续结构、链接结构(非连续)、索引结构、多个物理块的索引表

存储器管理

  • 确保计算机有足够的内存处理数据
  • 确保程序可以从可用内存中获取一部分内存使用
  • 确保程序可以归还使用后的内存以供其他程序使用

分页存储

由于连续分配方式会导致形成许多碎片,而如果总是进行碎片整合进行拼接会有很大的开销,为了解决这个问题,产生了一种离散分配的方式,基本单位是页,称为分页存储管理方式。

该方式是将一个进程的逻辑地址空间分成若干个大小相等的页,为各个页进行编号,同样将物理内存空间分成与页相同大小的若干个存储块,称为物理块(物理块号也叫做页帧号)。以页面为单位把进程空间装进物理内存中分散的物理块

地址结构

这样32位的分页地址的地址结构就是

分页地址结构

分为页号和偏移量,地址长度为32位,其中0~11位为页内地址,即每页的大小为4K;12~32位为页号,地址空间最多允许1M页

16位的分页地址的地址结构就是

16位分页式地址结构

分为页号和偏移量,地址长度为16位,其中0~11位为页内地址,即每页的大小为4K;12~15位为页号,地址空间最多允许16页

逻辑地址 = 页号+页内地址

物理地址 = 页帧号+页内地址

页面大小一般为512B~8K,过大的话难以分配,过小会导致内存碎片过多

阅读全文 »