Network-CS144 の 1 Introduction

Introduction

网络应用:

  • 基于网络读取和写数据
  • 常见通信模型:双向的可靠的字节流(为什么是字节流)
    • 通信双方一边写入数据,一变读取数据
    • 可靠的(除非连接中断)

四层网络模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1. Application
2. Transport
3. Network:[Data, headder: [from, to]]
4. Link: 数据组织形式:Packet, Link层,是在路由之间的数据传递,eg: wifi and 以太网


=> Router: 路由从链路层解析网络层的数据,获取target,根据路由转发标寻找下一跳,包装好后形成新的Link数据包,继续转发
3. Network:[Data, headder: [from, to]]
4. Link: 数据组织形式:Packet, Link层,是在路由之间的数据传递,eg: wifi and 以太网


=> Router: 路由从链路层解析网络层的数据,获取target,根据路由转发标寻找下一跳,包装好后形成新的Link数据包,继续转发
3. Network:[Data, headder: [from, to]]
4. Link: 数据组织形式:Packet, Link层,是在路由之间的数据传递,eg: wifi and 以太网


=>
1. Application
2. Transport
3. Network:[Data, headder: [from, to]]
4. Link: 数据组织形式:Packet, Link层,是在路由之间的数据传递,eg: wifi and 以太网

网络层是特殊的:因为必须要使用 Internet Protocol

  • IP尽最大努力转发数据报,但是不能保证
  • IP数据报可能会丢失,会无需,会损坏,这些都是没办法保证的

IP是最重要的,IP是瘦身层,因为其他协议都有很多种类,但是IP就一种,为什么呢

1
2
3
4
http, smtp, ssh, ftp
tcp, udp, rtp
IP
Ethernet Wifi DSL 3G 5G

传输层:

  • TCP:虽然IP不保证,但是TCP保证
  • UDP

七层OSI模型:

1
2
3
4
5
6
7
Application =< http
Presention => ASCII
Session => TCP
Transport => TCP
Network => IP
Link => Link
Physical => Link

IP模型:

1
2
3
4
Application
Transport: [Data][Header]
Network [ IP Data ][IP Header]
Link [ Link Data ][Link Header]

性质 行为
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
2
3
4
5
6
7
8
9
10
11
Client => Server (No, 么有直接连接),一般是通过路由转发

IP addr: 171.67.76.157
TCP port: 80


Server:
IP addr: 128.148.252.129
TCP port: 56567

Client => router1 => router2 => Server (No, 么有直接连接),一般是通过路由转发,每个路由里面都有路由表,如果没有找到则从默认路由转发

网络中的设计模式

分组交换原理

将数据切割成小块(Packet)

Packet: A self-contained unit of data that carries infomation for it to reach its destination

分包转发(packet switching):每个到达的包都是相互独立的,如果这条链路是availble的,则服用;否则缓存数据包后,继续等待。

分包转发相当于让路由自己去做转发动作,可不可以在每个Packet里携带转发目的地信息呢?可以的,但是这种没有必要,占用了一定的数据,以及存在一定安全问题(会被诱导到不安全的网络)

分包转发的好处:

  • 交换机为每个数据包做单独的本地决策,不需要在数据包中指明路由
  • 高效的链路共享
  • 分包转发不需要为每个流量保存自己的状态,每个包都是自包含的

分层原则

将大系统切分成多个独立功能的部分

1
layer1 => layer2 => ... => layern

好处:

  • 独立
  • 顺序通信,从上到下,从下到上通信
  • 上层为下层提供定义完整的服务,不需要了解下层是什么

为什么要分层:

  • 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
2
3
[link, ip, tcp, tls, ip, tcp, http]

to next hop to vpn gateway, to vpn gateway, to vpn gateway, to web server, to web server

字节顺序

IPv4 vs IPv6

最长前缀匹配

地址解析协议

总结

nat和子网的区别,nat属于特殊的子网的一种

子网内可以通过arp协议解析mac地址

A => B,A和B不在同一个网络里,A如何寻找到B的IP?

A发起ARP,收到响应,没有符合的全部丢弃,但是收到了路由器的广播帧,发往路由器,路由器可以解析广播帧,在路由表里查找,如果有则直接转发,没有则走路由器的默认路由(一般是网关),路由器在转发时,它将所有非本网段的目的IP包都发到WAN的网关去,网关可以是代理服务器或者是类似路由协议的服务,网关负责转发。。。从而不断地向外查找。当然在这过程中,路由器是隔绝广播的,它是不会转发广播数据的


Network-CS144 の 1 Introduction
https://mingmingjiang1.github.io/emocoder/2023/06/10/计算机网络一/
作者
迷途知返
发布于
2023年6月10日
许可协议