【八股】计算机网络

1 概述

1.1 网络的网络

网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。

1.2 ISP

互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。

目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。

1.3 主机之间的通信方式

  • 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。

  • 对等(P2P):不区分客户和服务器。

1.4 电路交换与分组交换

1.4.1 电路交换

电路交换用于电话通信系统,电路交换需要建立一条专用的数据通信路径,这条路径上可能包含许多中间节点。这条通信路径在整个通信过程中将被独占,直到通信结束才会释放资源。电路交换适合实时性要求较高的大量数据传输的情况。

优点:

  • 线路独占,没有冲突。
  • 实时性强。通信双方通过专用线路进行通信,数据可以直达。当数据传输量较大时,优点将十分显著。

缺点:

  • 线路独占,利用率太低。
  • 连接建立时间过长。

1.4.2 报文交换

报文交换以报文作为数据传输单位,携带有源地址和目的地址等信息。

优点:

  • 无需建立连接。
  • 线路利用率高。
  • 动态分配线路。

缺点:

  • 报文交换在节点处要经历存储、转发等操作,从而引起一定时延。
  • 报文交换对报文的大小没有限制,需要网络节点有足够的缓存空间。

1.4.3 分组交换

分组交换是将大的数据块分割成小的分组,每个分组都有首部和尾部,包含了源地址、目的地址和分组编号等控制信息,在同一个传输线路上同时传输多个分组互相不会影响,因此在同一条传输线路上允许同时传输多个分组,也就是说分组交换不需要占用传输线路。

在一个邮局通信系统中,邮局收到一份邮件之后,先存储下来,然后把相同目的地的邮件一起转发到下一个目的地,这个过程就是存储转发过程,分组交换也使用了存储转发过程。

优点:

  • 无需建立连接。
  • 线路利用率高。
  • 相对报文交换,分组长度固定,缓冲区容易管理。
  • 分组比报文小,因此传输时间更短。

缺点:

  • 仍然存在时延。
  • 需要传输包括源地址、目的地址、分组编号等额外信息。
  • 分组可能遇到失序、丢失、重复等问题。

1.5 时延

总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延

1.5.1 排队时延

分组在路由器的输入队列和输出队列中排队等待的时间,取决于网络当前的通信量。

1.5.2 处理时延

主机或路由器收到分组时进行处理所需要的时间,例如分析首部、从分组中提取数据、进行差错检验或查找合适的路由等。

1.5.3 传输时延

主机或路由器传输数据帧所需要的时间。

其中 l 表示数据帧的长度,v 表示传输速率。

1.5.4 传播时延

电磁波在信道中传播所需要花费的时间,电磁波传播的速度接近光速。

其中 l 表示信道长度,v 表示电磁波在信道上的传播速度。

1.6 计算机网络体系结构

1.6.1 五层协议

  • 应用层 :为特定应用程序提供数据传输服务,例如 HTTPDNS 等协议。数据单元为消息(message)。

  • 传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。
    传输层包括两种协议:
    (1)传输控制协议 TCP:提供面向连接、可靠的数据传输服务,数据单元为报文段(segment)。
    (2)用户数据报协议 UDP:提供无连接、尽最大努力的数据传输服务,数据单元为用户数据报(datagram)。
    TCP 主要提供完整性服务,UDP 主要提供及时性服务。

  • 网络层 :为主机提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。数据单元为数据包(packet)。

  • 数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。数据单元为(frame)。

  • 物理层 :考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。数据单元为比特流(bit)。

1.6.2 OSI

其中表示层和会话层用途如下:

  • 表示层 :数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。

  • 会话层 :建立及管理会话。

五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。

1.6.3 TCP/IP

它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。

TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。

1.6.4 数据在各层之间的传递过程

在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。

路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要传输层和应用层。

2 物理层

2.1 通信方式

根据信息在传输线上的传送方向,分为以下三种通信方式:

  • 单工通信:单向传输
  • 半双工通信:双向交替传输
  • 全双工通信:双向同时传输

2.2 带通调制

模拟信号是连续的信号,数字信号是离散的信号。

带通调制把数字信号转换为模拟信号。

3 数据链路层

3.1 封装成帧

将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。

3.2 透明传输

透明表示一个实际存在的事物看起来好像不存在一样。

帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。

3.3 差错检测

目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。

3.4 信道分类

一对多通信,一个节点发送的数据能够被广播信道上所有的节点接收到。

所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞)。

主要有两种控制方法进行协调,一个是使用信道复用技术,一是使用 CSMA/CD 协议。

信道复用技术

分为频分复用,时分复用(统计时分复用),波分复用,码分复用。
(1)频分复用(FDM):用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。频分复用的用户在同样的时间内占用不同的带宽资源(这里的带宽是频率带宽)。该种复用方式是效率较高,实现简单,但是信道利用率不高。
(2)时分复用(TDM):时分复用的用户是在不同的时间占用同样的频带宽度。当某用户无数据发送时,该时分复用帧分配给该用户的时隙只能处于空闲状态,即使其他用户一直有数据发送,也不能使用这些空闲的时隙,导致复用后信道的利用率不高。所以又研究出了统计时分复用(STDM):统计时分复用是一种改进的时分复用,主要作用是提高信道的利用率。统计时分复用不是固定分配时隙,是按需动态分配时隙。
(3)波分复用(WDM):其实就是光的频分复用,光纤传多种不同波长(频率)的光信号,波长不同,各路光信号互不干扰。
(4)码分复用(CDM)/码分多址(CDMA):将每一个比特时间划分为m个短的间隔,称为码片。每个站点被指定一个唯一的m bit的码片序列,发送1时站点发送芯片序列,发送0时站点发送芯片序列反码(通常把0写成-1)。
举例说明:
假设A站点的发送芯片序列A1为(+1,-1,-1,+1,+1,+1,+1,-1),那么它的芯片反码序列A0为(-1,+1,+1,-1,-1,-1,-1,+1)。
同样假设B站点的发送序列B1为(-1,+1,-1,+1,-1,+1,+1,+1),那么它的芯片序列反码B0为(+1,-1,+1,-1,+1,-1,-1,-1)。
互不干扰:多个站点同时发送数据,要求各个站点芯片序列相互正交。所以(A1B1)/8=0,二者正交,所以互不干扰。
合并:各路数据在信道中被线性相加。(假设A发送0数据,B发送1数据),所以C=A0+B1=(-2,+2,0,0,-2,0,0,+2)。
分离:合并的数据和源站规格化内积。上面合并的数据是C,以C举例说明,源站指的是源站的芯片化序列,所以(CA1)/8=-1,上面说明通常把0写成-1,最终结果为0,就可以推测出A站点给C发送的数据是0比特位。

5 传输层

1.5.1 三次握手

假设 A 为客户端,B 为服务器端。

  1. 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。
  2. A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。
  3. B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。
  4. A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。
  5. B 收到 A 的确认后,连接建立。

三次握手的原因

2 JAVA

2.1 hashmap的结构

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap 是无序的,即不会记录插入的顺序。

内部包含了一个 Entry 类型的数组 table。Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶取模运算结果相同的 Entry。

------------------------------------------------------------------------------------

参考:

CS-Notes 面试笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值