Network-CS144 の 1 Introduction
Introduction
网络应用:
- 基于网络读取和写数据
- 常见通信模型:双向的可靠的字节流(为什么是字节流)
- 通信双方一边写入数据,一变读取数据
- 可靠的(除非连接中断)
四层网络模型
1 |
|
网络层是特殊的:因为必须要使用 Internet Protocol
- IP尽最大努力转发数据报,但是不能保证
- IP数据报可能会丢失,会无需,会损坏,这些都是没办法保证的
IP是最重要的,IP是瘦身层,因为其他协议都有很多种类,但是IP就一种,为什么呢?
1 |
|
传输层:
- TCP:虽然IP不保证,但是TCP保证
- UDP
七层OSI模型:
1 |
|
IP模型:
1 |
|
性质 | 行为 |
---|---|
Datagram | 独立的路由包,包是一跳一跳的转发 |
不可信 | 包可能会丢失 |
尽力 | 尽最大里交付数据 |
Connectionless | No per-flow state(连接是无状态的) 包可能乱序 |
为什么IP模型如此简单?
- 快
- 端到端原则
- 更方便自定义在其上封装一些定制的协议(可信的or不可信的)
- 实现的简单,能够适用于各种链路层协议
IP模型的特点:
- 防止循环转发(套娃)
- 如果数据太长,将会分割数据报
- 使用checksum减少错误分发的机会
- 允许更多的IP版本,ipv4, ipv6
- 允许自定义header
Ipv4数据报格式:网上有自己查
- version
- header len
- Toatl Packet len
- Packet ID
- flags
- flags offset
- TTL
- protocol ID
- checksum
- src ip addr
- dest ip addr
- options
- padding
- Data
整体流程:
1 |
|
网络中的设计模式
分组交换原理
将数据切割成小块(Packet)
Packet: A self-contained unit of data that carries infomation for it to reach its destination
分包转发(packet switching):每个到达的包都是相互独立的,如果这条链路是availble的,则服用;否则缓存数据包后,继续等待。
分包转发相当于让路由自己去做转发动作,可不可以在每个Packet里携带转发目的地信息呢?可以的,但是这种没有必要,占用了一定的数据,以及存在一定安全问题(会被诱导到不安全的网络)
分包转发的好处:
- 交换机为每个数据包做单独的本地决策,不需要在数据包中指明路由
- 高效的链路共享
- 分包转发不需要为每个流量保存自己的状态,每个包都是自包含的
分层原则
将大系统切分成多个独立功能的部分
1 |
|
好处:
- 独立
- 顺序通信,从上到下,从下到上通信
- 上层为下层提供定义完整的服务,不需要了解下层是什么
为什么要分层:
- Modularity
- Well defined service
- Reuse
- Seperation of concerns
- Continuous improvement
封装原则
Layer N data is payload to layer N - 1, eg:
- Http application payload in
- a TCP transport segment in
- an IP network packet in
- a wifi link frame
分层的好处:Encapsulation Flexibility
Encapsulation allows you to layer recursively
VPN:
- HTTP application payload in
- a TCP transport segment in
- an IP network packet in
- a secured TLS presentation message in
- a TCP transport segment in
- an IP network packet in
- an Ethernet link frame
1 |
|
字节顺序
IPv4 vs IPv6
最长前缀匹配
地址解析协议
总结
nat和子网的区别,nat属于特殊的子网的一种
子网内可以通过arp协议解析mac地址
A => B,A和B不在同一个网络里,A如何寻找到B的IP?
A发起ARP,收到响应,没有符合的全部丢弃,但是收到了路由器的广播帧,发往路由器,路由器可以解析广播帧,在路由表里查找,如果有则直接转发,没有则走路由器的默认路由(一般是网关),路由器在转发时,它将所有非本网段的目的IP包都发到WAN的网关去,网关可以是代理服务器或者是类似路由协议的服务,网关负责转发。。。从而不断地向外查找。当然在这过程中,路由器是隔绝广播的,它是不会转发广播数据的