数据段 segment
数据报 datagram
帧 frame
.
.
应用层
HTTP/1.0的响应时间
HTTP/1.1减少了一个RTT
DHCP
Dynamic Host Configuration Protocol,使移动端设备可以加入网络,基于UDP
.
DHCP不仅可以分配IP地址,也可以分配第一跳的路由器地址,以及DNS服务器地址
SMTP
SMTP(Simple Mail Transfer Protocol)
mailbox: 接收消息
queue: 发送消息
.
SMTP使用长连接
格式👇
.
IMAP
IMAP(Internet Mail Access Protocol),用于对服务器上的邮件进行折叠,删除,访问等操作
.
P2P
区块链、快播都是P2P模式的应用
.
传统的C/S模式下,$N$个用户需要请求文件,只能利用服务器的带宽$u_s$,则有
$$
T=max\{\frac{NF}{u_s},\frac{F}{u_{min}}\}
$$
其中,$F$为文件大小,$u_{min}$为所有客户端中的最小带宽
.
而在P2P模式中,文件被分为许多块,存储于各个客户端内,每个客户端请求自己缺失的块,这样就可以利用上所有客户端的带宽
每个结点的地位都是对等的,既充当服务器,为其他结点提供服务,同时也享用其他结点提供的服务
$$
T=max\{\frac{NF}{\sum{u_i}},\frac{F}{u_{min}}\}
$$
优点:
- 下载速度快,人越多越快
- 不用担心服务器宕机,因为每个人都是服务器
Video Stream
DASH(Dynamic, Adaptive Stream over Http)
- 服务器把每段视频都用不同的码率存储
- 客户端周期性地测量带宽,请求当前带宽所能承受的最大码率的视频段
CDN(Content Distribution Network)
数百万量级的视频不可能全部存储在一个超大的服务器上:不安全、网络拥堵、….
CDN把很多视频副本分散存储在地理上相隔很远的服务器上
Socket
Socket在应用层和传输层之间
UDP
.
UDP Client
1 | server_name='xxxx' |
UDP Server
1 | server_port=12000 |
UDP: 无连接的demultiplexing,只使用目标端口进行识别
.
TCP
.
TCP Client
1 | server_name='xxxx' |
TCP Server
1 | server_port=12000 |
有连接的demultiplexing,基于源IP,源端口,目标IP,目标端口发送给对应的socket
.
传输层
- 应用层负责主机间通信
- 传输层负责进程间通信
传输层把数据切分为数据段(segment),接收后再组装起来送给应用层
UDP
报文格式👇,仅有8 byte固定长度的头部
.
校验和的目的是检测传输过程中的位错,但无法恢复
发送方将UDP数据段视为一系列16bits的整数,将他们相加,最后取反码即为校验和
.
溢出位要加到最后面
接收方重新计算校验和,比较是否一致
Reliable Data Transfer
一次只发送一个数据包,利用率Utilization很低
.
pipline可以提高利用率
.
关系图
前提条件:buffer无限
.
buffer有限,会发生丢包,传输层数据量>=应用层数据量
.
在重传的数据包中,有一些是因为超时重传而产生的非必须重传(只是延迟了,并没有丢失)
多个路由器,会造成雪崩效应
.
网络层
注意:源IP和目标IP没有变化,但源Mac和目标Mac发生了变化
.
.
.
四种延迟
- 处理延迟:检查位错+决定输出端口,在毫秒以内
- 排队延迟:取决于拥塞状况,是延迟的主要来源v
- 传输延迟(发送延迟):是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间,发送延迟 = $L/R$ ,L为数据帧长度(bit),R为信道带宽(bps),在毫秒以内
- 传播延迟:电磁波在信道中传播花费的时间,传播延迟 = $d/v$,d为信道长度,v为传播速度(一般为$\frac{2}{3}c$)
.
排队延迟可以用$La/R$(类似于一种密度)来估算,其中a表示数据包的平均到达速率
.
吞吐量(throughput)和带宽(bandwidth)的区别
- 带宽指信道的最大速率
- 吞吐量指实际传输的速率
IPv4
报文格式
.
不同的信道具有不同的MTU(Maximum Transmission Unit),所以一个数据包可能被拆成多个发送,叫做fragmentation
而被拆分的数据包只会在目的地聚合,叫做reassembly
.
.
NAT
Network Address Translation
内网的IP是和外网独立的,所有内网的设备在外网看来只有一个公网IP地址
.
IPv6
报文格式
.
相比IPv4
- 去除了校验和,目的是减少路由器的处理时间$d_{proc}$
- 去除了option
有些路由器不支持IPv6,可以借助“套娃”实现不同路由器之间的传播
.
示例👇
.
每个路由器内部都有一个流表,传统的流表只能根据IP地址定义行为
.
采用OpenFlow后,可以检测各个协议的头部信息
.
举例👇
.