写在最前面:此为个人听课笔记。课程为B站 鬼谷良师 发布的视频“【斯坦福大学】CS144 计算机网络介绍(完结·中英字幕·机翻)”。
链接如下:
【斯坦福大学】CS144 计算机网络介绍(完结·中英字幕·机翻)
看视频全程开启英文字幕。虽然个人英文水平和中文表达能力比较有限,但想借此机会练习英语,所以中文内容为个人理解加手动搜词翻译,如有不当,敬请指正。
概要
从上到下依次为:
Application(应用层) | HTTP、SMTP、ssh、ftp | Application Presentation |
---|---|---|
Transport(传输层) | TCP、UDP、RTP | Session Transport |
Network(网络层) | IP | Network |
Link(链路层) | Ethernet、WiFi、DSL、3G | Link Physical |
The IP Service Model
-
属性:
- Datagram(数据报)
一个packet(数据包)中包含了
data | IP SA(source address) | IP DA(destination address) |
---|
-
-
不可信
数据包有可能会丢失
-
高效
-
无连接
路由器并没有暂存数据包中的内容(no per-flow state),数据包内容可能会错序
-
-
为什么IP服务如此简单?
- 简单、最小化 可更快、更流畅(streamlined)、更低成本 地构建和保持服务
- 端对端的原则
- 让更多可信赖与不可信赖的服务都能在顶层建立(IP服务是作为底层服务的)
-
一些细节:
-
尝试阻止数据包传输陷入死循环
由于这种从一个节点跳到另一个节点(hop to hop )的传输特性,有可能会在中途出现意外,使得数据在重复的路径间传输,陷入循环。
IP服务使用的一个很 简单 的解决方法是:在每个数据包的头部增加一个跳数域(hop-count field)(time to live ,即TTL),设定一个初始值(如128,我不是很懂为什么是128,可能是因为这个数足够大,或者超出了IP这块知识的某个极限值?),每经过一个路由,数值都会递减,当该数值为0时,传输中断。
这种方法没有办法及时中断死循环(正如有可能在中间某个值就已经开始死循环了而直到值递减为0才发现);也无法保证死循环不发生。
事实上,它旨在 尽可能 减少这种循环造成的破坏。
-
如果传输的数据包过长,会对其进行切片。
-
会在数据报(datagram)头部设置校验和(checksum),减少其发送至错误地方的几率
-
IP 版本,有IPv4,也有最新的IPv6
-
允许在(数据包?)头部增加新东西
-