Unit 1. The Internet and IP Introduction

互联网和 IP 介绍

接下来的几周我们会学习关于互联网的一切,关于什么是互联网,IP 如何进行互联网交互。

Main Topics.

  • 四层网络模型

  • 网络设计架构

    • 互联网通过 packet 来传输数据 - 数据包

    • Layering 分层

    • 封装来实现上面两点

  • Internet Protocol IP 协议

  • TCP 协议

这些看似底层的东西,实际上是网络正在使用的最前沿的东西 特别是 TCP/IP

1. A Day in the Life of an Application

1.1. Network Applications

  • 通过网络读写数据

  • 字节流是目前网络中最常用的通信方式

1.2. Byte Stream Model

1.3. World Widw Web

Command:GET

  • 200:OK

  • 400:NOT OK

1.4. BitTorrent

将文件分成片段。

Tracker -> Client

1.5. Skype

Client A --Internet-- Client B

1.5.1. Skype with Complication

NAT、Rendezvous

1.5.2. Skype with More Complication

Relay

2. The Four Layer Internet Model

Source End-Host

  1. Application

  2. Transport

  3. Network:Packet 包括数据头...

  4. Link:数据逐跳进行传输,选择一条合适的链路

2.1. The Network Layer is "Special"

We must use IP(Internet Protocol)

Transport:

  • TCP(Transmission Control Protocol)

  • UDP(User Datagram Protocol) 不提供送达保证

四层中的每一层对等通信。

数据由链路层传输,中间逐跳经过路由器,再运输到链路层返回应用层。

2.2. IP is the "Thin Waist"

2.3. The 7-Layer OSI Model

  1. Physical:电路等...物理层

  2. Link

  3. Network

  4. Transport

  5. Session

  6. Presentation

  7. Application

3. The IP Service Model

3.1. Property & Behavior

Datagram:

  • 独立的数据包

  • 包含了 Data、目标 DIP、SIP 地址

  • 逐跳到达目的地

Unreliable

  • 包有可能会丢失

  • IP 不保证数据一定到达目的地,不提供任何保证

Best effort

  • IP 保证指在必要时丢失数据

  • IP 不知道数据是否丢失......

  • 也不会重新发送

Connectionless

3.2. Why is the IP service so simple?

  • 保证最小化和高效,快速低成本地发送数据 lower cost to build and maintain

  • end-to-end principle 端到端原则,避免网络拥堵

  • IP works over any link layer 可以运行在任何链路层

3.3. The IP Service Model(Details)

  1. 防止循环发生

    1. 措施:添加一个 Time-to-Live TTL 字段

    2. 相当于计数器,如果数据陷入循环,会舍弃该数据

  2. 对长数据进行切片

    1. 措施:避免长数据无法承载

    2. 适用一些头部字段,保证正确切分和正确重组

  3. 适用校验和来判断不会到达错误地址

  4. 运行适用不同版本的 IP

    1. IPv4:32 bit 地址:目前最常用,快被耗尽了

    2. IPv6:128 bit 地址:正在转变

  5. 允许添加新的字段 when necessary

4. Life of a Packet

4.1. TCP Byte Stream

Client --- Internet --- Server

数据交换需要三个消息 - 三次握手 - "3-way handshake"

  1. SYN:客户端向服务器发送一个同步消息

  2. SYN/ACK:服务端响应一个同步消息,同时确认客户端的请求

  3. ACK:客户端确认服务器的同步请求响应

网络上的数据传输

需要两个地址

  1. network layer address:IP address

  2. transport layer address:TCP port

经过多次 hops ,每次 hop 连接两个路由器

4.2. Inside Each Hop

路由器检查当前跳数...以及与 SIP 和 DIP 是否匹配。

检查校验字段等等操作。

5. Principle: Packet Switching

Packet:自包含的数据单元,携带着使其能够到达目的地的必要信息

5.1. 两种模式

  1. 源数据会把所有中间节点、目标地址的地址记录下来。路由器根据记录进行对应的转发,把数据包发送到下一跳的地址

    1. 极大加强了交换机的效率,it means 只需要负责转发数据,而不用记录

    2. Efficient sharing of links

  2. 路由器有一个目标地址和下一地址的状态表(少量),用来注明对应目标地址的下一跳应该传达的地址

5.2. No Per-Flow State Required

数据包一般成流出现。

  • 交换机需要关心数据的流

  • 交换机不会存储状态,而是专注于搞笑的转发

  • 交换机不会关心故障

5.3. Efficient Sharing of Links

数据的传输是间歇性的,路由器可以根据使用情况合理的分配数据传输容量。

This is called Statistical Multiplexing.

6. Principle: Layering

分层的系统:

  • 层级是分明的,每一层负责具体的任务和服务

  • 层级交流尽量不要跨越 2 层,而是邻层交流

6.1. 层级之间不跨层关心

  • 好处:每一层只需要和上下层通信。这样的设计使得每一层可以专注于自己的任务。

  • 坏处:有时候我们需要打破分层结构来完成任务

6.2. Reasons for layering

  1. Modularity

  2. Weill defined service

  3. Reuse

  4. Separation of concerns

  5. Continuous improvement

  6. Peer-to-peer communications 对等通信

7. Principle: Encapsulation

封装原则,回顾一下 Layering,分层原则无需关心跨层通讯原理。

封装有助于我们实现 Layering,通过封装把细节全部进行黑盒化

7.1. Encapsulation

把数据成段封装为一个数据包。

这样只需要每段数据代表什么,而不需要关系数据到底如何书写...

  • Example:Virtual Private Network(VPN)

8. Byte Order

8.1. Computer Memory

计算机存储:字节存储的端序号

8.2. Endian

  • Big Endian:大端序,从高位到低位存储

  • Little Endian:小端序,从低位到高位进行存储

判断题...

8.3. Network Byte Order

端序的顺序对于计算机网络的影响:

  • 可以进行数据的端序判断

如果数据是大端序,端口是小端序怎么办?可以进行 Conver Byte Order

8.4. Portable Code

C 语言中使用一个结构体。

  • Helper functions: htons(), ntohs(), htonl(), ntohl()

  • htos: "host to network short"

  • ntohl: "network to host long"

  • 处理网络数据时要多加小心。convert twice? or forget to convert......

8.5. Packet Formats

  • 老师用的软件叫:Wireshark......

  • May I?

网络协议需要规定。

9. Name and Addresses: IPv4

路由器根据地址来决定数据包会发向何处。

9.1. Goal of Internet Protocol Addresses

  • 使得连接的计算机能够互相通信

  • 需要唯一的标识

9.2. Internet Protocol, Version 4

  • 32 bits,表示为 4 octets

  • Netmask

子网掩码,用来判断两台机器是否在同一个子网?是否需要路由器来连接?

Quiz,国内叫例题,有趣。

  • 根据子网掩码进行判断(进行与运算,判断得到的结果)

  • 如果源地址和目标地址在同一个子网(符合子网掩码的规则)

  • 那么就可以直接进行通讯

  • 255.255.255.224 这样的子网掩码要动手算

9.3. 如今的地址结构

地址结构化、寻址和管理的高效方式

Classless Inter-Domin Routing (CIDR)

分配一个地址块: address, count

  • "/ 16"指16位的地址

  • "/ 20"指20位的地址

IP 地址有可能会耗尽,就是IP地址不唯一,所以 IP地址的管理很重要。有专门的机构。

10. Longest Prefix Match

数据传输时,选择哪条条链路进行转发?

10.1. 转发表 forwarding table

通过记录 dest 的通配地址来决定下一跳的 link

通常采用的是 最长前缀匹配法

10.2. 方法

匹配前面所有的具体字节,后面使用通配符。

默认使用 default link

这里没听懂,贴一个 Ref,以免以后忘记

Longest Prefix Matcharrow-up-right,原来本质上还是通过子网掩码进行与,而且要把 x.x.x.x 转写为 32 bits 的形式。

11. Address Resolution Protocol (ARP)

地址解析协议

解决了如何知道目的地址、下一跳地址是啥的问题

11.1. 地址层

链路层 和 网络层本质上是耦合的。只是需要协议进行解析。

APR 表可以解决这样的问题。

IP 地址属于网络层

MAC 地址属于链路层

  1. 网络层封装在 link 层外面

网络层就像是快递公司,它负责把包裹(数据)从一个城市(源IP地址)送到另一个城市(目标IP地址)。

IP地址就是快递单上的地址信息。

  1. link 层可以更加接近目的地,更接近于数据域

数据链路层就像是快递公司派送员,他只负责在同一个小区(局域网)里派送包裹。

MAC地址就像是小区里的门牌号,派送员(数据链路层)通过门牌号(MAC地址)把包裹送到正确的家门口。

11.2. ARP

ARP 可以将设备之间的 IP Address 和 ARP Address 进行映射缓存。便于收发数据。

  • 在已知 IP,未知 MAC 时可以进行 Simple request-reply protocol,此时每个节点都可以接收到 request

  • 如果有映射过期,会占用内存。所有现存的 ARP 采用了动态缓存机制,固定时间会清空映射情况

11.3. 通讯的块

包含了许多信息。包含了 响应的许多字段。

Last updated