计算机网络

#Computer

引言


参考模型

  1. OSI 参考模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

  2. TCP/IP 参考模型:链路层、互联网层、传输层、应用层

物理层


物理层考虑的是如何才能在连接各种计算输出设备上传输数据比特流。

  1. 数字带宽表示一个信道的最大数据速率,以每秒多少个比特来计量 (bps)
  2. 信道是用来表示向某一个方向传送信息的媒体,一般有三种形式:单工通信(单向通信信道)、半双工通信(双向交替通信,可以实现双向通信,但是不能同时进行)和全双工通信。
  3. 中继器和集线器工作在物理层

数据链路层


数据链路层位于物理层和网络层中间,其数据传输单元称之为帧。

  1. 数据链路层的任务就是将上层的数据封装成帧交给物理层传输,以及分析物理层提交的数据帧,提取出上层数据交给网络层。具体来说就是:
    • 信源的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
    • 信源把封装好的数据帧发送给信宿的数据链路层
    • 若信宿的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给网络层,否则丢弃这个帧
  2. 成帧的方法有字节计数、字节填充和比特填充
  3. 纠错和检错码使用不同的数学技术把冗余信息添加到帧的消息中
  4. 网桥和交换机工作在数据链路层,使用 MAC 地址发送帧,通过硬件层面来寻址定位
  5. 简单来说,数据链路层的目标只是考虑如何将帧从线路一边传送到了另一边。

网络层


网络层关注如何将源端数据包一路送到接收方。为了将数据包送到接收方,可能沿途要经过许多跳中间路由器。

  1. 路由算法是网络层软件的一部分,它负责确定一个入境数据包应该被发送到哪一条输出线路上
  2. 路由和转发:路由即对使用哪一条路径做出决策,而转发则是当一个数据包到达时该采取什么动作
  3. IPv4 协议:每个IP数据报包含两部分,一个头和一个正文
  4. IP 地址:IPv4地址是一个32位地址。IP 地址具有层次性,由高位的可变长网络和低位的主机两部分数据组成。同一网络上的所有主机,其地址的网络值是相同的。这意味着一个网络对应着一块连续的 IP 地址空间,这块地址空间就称为地址的前缀。
  5. 网络地址的书写格式是前缀IP地址后跟着一个斜线,斜线后面是网络部分的位长度,如:128.208.0.0/24
  6. 子网掩码:与一个IP地址进行AND操作,可提取出该IP地址的网络部分。如:255.255.255.0
  7. 子网划分:在内部将一个网络块分成几个部分供多个内部网络使用,但对外部世界仍然像单个网络一样。如:
    • 对外:128.208.0.0/16
    • 内部:128.208.0.0/18 、128.208.128.0/17、128.208.96.0/19
  8. NAT(网络地址转换):ISP 为每个组织分配一个公共 IP 地址,用这个 IP 地址来传输流量,在客户网内部,每台计算机有唯一的 IP 地址,该地址来路由内部流量。当一个数据包离开客户网络时,它执行一个地址转换,把内部IP地址转换为那个共享的公共IP地址。
  9. 外部流量进入客户网络如何寻址:把内部IP地址和源端口信息转换为一个索引值,插入到TCP包种的源端口字段,NAT盒子通过该索引得到内网IP地址和端口。
  10. ARP(地址解析协议):ARP协议解决了如何将 IP 地址映射到数据链路层地址,如MAC地址。
    • 当主机A要向本局域网上的某个主机B发送IP数据报时,先检查其ARP高速缓存,若有主机B的IP地址,则直接将这个地址写入到MAC帧中,然后通过局域网把该MAC帧广播发送到该硬件地址
    • 若检查不到主机B的IP地址的项目,则运行ARP协议,首先在本局域网上发送一个ARP请求(该请求是包含自己IP地址和MAC地址对应关系的一个IP数据包)
    • 本局域网上所有运行主机上运行的ARP进程都收到此ARP分组
    • 主机B的ARP进程分析请求帧中的IP地址是自己的,因此向主机A发送ARP响应分组,告知自己的MAC地址;同时将A的IP-MAC地址写到自己的ARP高速缓存
    • 主机A收到B的ARP响应分组后,在其ARP告诉缓存中写入主机B的IP地址到硬件地址的映射
    • 若所找的IP地址在另一个网络需要传递路由器,则ARP会找到本网络上路由器的接口的MAC地址返回
  11. DHCP(动态主机配置协议):网络中计算机启动后,将发送一个报文请求IP地址,这个包必须到达DHCP服务器,当DHCP服务器收到请求后,将发送一个 DHCP OFFER 包返回给主机,为其分配IP地址。
  12. 路由器工作于网络层。

传输层


  1. 传输层位应用层使用网络提供了抽象的模式。传输层的最终目标是向它的用户提供高效的、可靠的和成本有效的数据传输服务,它的用户通常是应用层的进程。
  2. 传输层通过端口来确定建立连接时的具体进程。
  3. TCP建立连接时,考虑到网络的不稳定和不安全,采用三次握手的协议来建立TCP连接,具体为:
    • 主机 1 选择一个序号 x,并且发送一个包含 x 的 CONNECTION REQUEST 段给主机 2
    • 主机 2 回应一个 ACK 段作为对 x 的确认,并且宣告它主机的初始序号 y
    • 最后,主机 1 在它发送的第一个数据段中,对主机 2 选择的初始序号进行确认
  4. TCP释放连接:采用对称释放方式来断开连接(每一边在发送完自己的数据之后用一个 FIN 数据包独立关闭其一半的连接)