up md md md md md md md md md md md md md md
返回上级
from - zero
计算机网络解决的是:
layering - encapsulation
网络协议很多:Ethernet、IP、TCP、UDP、DNS、HTTP、TLS。
physical - link - ethernet
网络最终要把 bit 从一台设备传到另一台设备。
ip - subnet - routing
链路层只能解决相邻设备通信。互联网需要解决更大的问题:
arp - icmp - nat
学到 IP 和路由以后,很容易产生一个错觉:只要知道目标 IP,数据包就能自动到达目标机器。
udp
很多人第一次学网络时会觉得:TCP 可靠,所以 TCP 更高级;UDP 不可靠,所以 UDP 像是残缺版本。
tcp - basics
IP 层尽力把包送到目标主机,但它不保证包一定到、不保证顺序、不保证只到一次,也不关心目标进程处理得过来没有。
tcp - flow - congestion
理解 TCP 基础以后,还会遇到一个更现实的问题:
dns
程序最终要用 IP 地址通信,但人和系统配置通常使用域名。
http
TCP 提供的是字节流。它不知道这些字节是在请求一个页面、提交一个表单、下载一个文件,还是调用某个接口。
tls - https
HTTP 本身可以表达请求和响应,但如果直接在明文网络上传输,会遇到三个根本问题:
proxy - gateway - load - balancer - cdn
真实网络服务通常不是“一台客户端直接访问一台服务器”这么简单。
network - troubleshooting
网络问题最容易被一句话糊弄过去:
README · computer-networks
计算机网络研究的是:一台机器上的程序,如何可靠、可控、高效地和另一台机器上的程序交换数据。