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
Application
Transport
Network:Packet 包括数据头...
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
Physical:电路等...物理层
Link
Network
Transport
Session
Presentation
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)
防止循环发生
措施:添加一个 Time-to-Live TTL 字段
相当于计数器,如果数据陷入循环,会舍弃该数据
对长数据进行切片
措施:避免长数据无法承载
适用一些头部字段,保证正确切分和正确重组
适用校验和来判断不会到达错误地址
运行适用不同版本的 IP
IPv4:32 bit 地址:目前最常用,快被耗尽了
IPv6:128 bit 地址:正在转变
允许添加新的字段 when necessary
4. Life of a Packet
4.1. TCP Byte Stream
Client --- Internet --- Server
数据交换需要三个消息 - 三次握手 - "3-way handshake"
SYN:客户端向服务器发送一个同步消息
SYN/ACK:服务端响应一个同步消息,同时确认客户端的请求
ACK:客户端确认服务器的同步请求响应
网络上的数据传输
需要两个地址
network layer address:IP address
transport layer address:TCP port
经过多次 hops ,每次 hop 连接两个路由器
4.2. Inside Each Hop
路由器检查当前跳数...以及与 SIP 和 DIP 是否匹配。
检查校验字段等等操作。
5. Principle: Packet Switching
Packet:自包含的数据单元,携带着使其能够到达目的地的必要信息
5.1. 两种模式
源数据会把所有中间节点、目标地址的地址记录下来。路由器根据记录进行对应的转发,把数据包发送到下一跳的地址
极大加强了交换机的效率,it means 只需要负责转发数据,而不用记录
Efficient sharing of links
路由器有一个目标地址和下一地址的状态表(少量),用来注明对应目标地址的下一跳应该传达的地址
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
Modularity
Weill defined service
Reuse
Separation of concerns
Continuous improvement
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 Match,原来本质上还是通过子网掩码进行与,而且要把 x.x.x.x 转写为 32 bits 的形式。
11. Address Resolution Protocol (ARP)
地址解析协议
解决了如何知道目的地址、下一跳地址是啥的问题
11.1. 地址层
链路层 和 网络层本质上是耦合的。只是需要协议进行解析。
APR 表可以解决这样的问题。
IP 地址属于网络层
MAC 地址属于链路层
网络层封装在 link 层外面
网络层就像是快递公司,它负责把包裹(数据)从一个城市(源IP地址)送到另一个城市(目标IP地址)。
IP地址就是快递单上的地址信息。
link 层可以更加接近目的地,更接近于数据域
数据链路层就像是快递公司派送员,他只负责在同一个小区(局域网)里派送包裹。
MAC地址就像是小区里的门牌号,派送员(数据链路层)通过门牌号(MAC地址)把包裹送到正确的家门口。
11.2. ARP
ARP 可以将设备之间的 IP Address 和 ARP Address 进行映射缓存。便于收发数据。
在已知 IP,未知 MAC 时可以进行 Simple request-reply protocol,此时每个节点都可以接收到 request
如果有映射过期,会占用内存。所有现存的 ARP 采用了动态缓存机制,固定时间会清空映射情况
11.3. 通讯的块
包含了许多信息。包含了 响应的许多字段。
Last updated