计算机网络 自顶而下的方法
概论
应用层 :是对应用到应用的抽象
运输层 :提供socket 到 socket的抽象接口
网络层 :提供主机到主机的抽象接口
链路层 :线缆的抽象接口
物理层 :发生在物理线路
1 第五层——应用层(application layer)
- 应用层(application layer):是体系结构中的最高。直接为用户的应用进程(例如电子邮件、文件传输和终端仿真)提供服务。
- 在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议,DNS,POP3,SNMP,Telnet等等。
2. 第四层——运输层(transport layer)
- 运输层(transport layer):负责向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能
- 复用,就是多个应用层进程可同时使用下面运输层的服务。
- 分用,就是把收到的信息分别交付给上面应用层中相应的进程。
- 运输层主要使用以下两种协议:
(1) 传输控制协议TCP(Transmission Control Protocol):面向连接的,数据传输的单位是报文段,能够提供可靠的交付。
(2) 用户数据包协议UDP(User Datagram Protocol):无连接的,数据传输的单位是用户数据报,不保证提供可靠的交付,只能提供“尽最大努力交付”。
3. 第三层——网络层(network layer)
- 网络层(network layer)主要包括以下两个任务:
- (1) 负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称为数据报。
- (2) 选中合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。
- 协议:IP,ICMP,IGMP,ARP,RARP
4. 第二层——数据链路层(data link layer)
- 数据链路层(data link layer):常简称为链路层,我们知道,两个主机之间的数据传输,总是在一段一段的链路上传送的,也就是说,在两个相邻结点之间传送数据是直接传送的(点对点),这时就需要使用专门的链路层的协议。
- 在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点之间的链路上“透明”地传送帧中的数据。
- 每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。典型的帧长是几百字节到一千多字节。
- 注:”透明”是一个很重要的术语。它表示,某一个实际存在的事物看起来却好像不存在一样。”在数据链路层透明传送数据”表示无力什么样的比特组合的数据都能够通过这个数据链路层。因此,对所传送的数据来说,这些数据就“看不见”数据链路层。或者说,数据链路层对这些数据来说是透明的。
(1)在接收数据时,控制信息使接收端能知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。
(2)控制信息还使接收端能检测到所收到的帧中有无差错。如发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续传送下去白白浪费网络资源。如需改正错误,就由运输层的TCP协议来完成。
5. 第一层——物理层(physical layer)
- 物理层(physical layer):在物理层上所传数据的单位是比特。物理层的任务就是透明地传送比特流。
数据在各层之间的传递过程
名词解释
RTT(Round Trip Time):往返时延,也就是数据包从发出去到收到对应 ACK 的时间。RTT 是针对连接的,每一个连接都有各自独立的 RTT。
RTO(Retransmission Time Out):重传超时,也就是前面说的超时时间。
TCP超时重传: 如果发送方认为发生了丢包现象,就重发这些数据包,接收方每收到一个包,就向发送方返回一个 ACK,表示自己已经收到了这段数据,反过来,如果发送方一段时间内没有收到 ACK,就知道很可能是数据包丢失了,紧接着就重发该数据包,直到收到 ACK 为止。
传播时延: dprop=m/s
传输时间: dtrans=L/R
第一章 计算机网络和因特网
1英特网
2网络边缘
住宅接入:DSL、电缆、FTTH、卫星、拨号接入(拨号调制解调器)、以太网、WiFi等
公司接入:以太网、WiFi等
广域无线接入:3G、4G、LTE等拨号调制解调器:最高速度为 56 Kbps,专用的
HFC:高达 42.8 Mbps 下行速率和高达 30.7 Mbps 的上行速率,共享的
DSL:最高 24 Mbps 下行速率和最高 2.5 Mbps 上行速率,专用的
FTTH: 最高 4Mbps 上行,100Mbps 下行速率,专用的
3交换机链路系统
- 电路交换网络预留了宽带,传统的电路交换分离出单个信号需要多个滤波器
- 谷歌使用专门网络避开高层ISP,获得更好的用户体验和公司的流量运输费用
4数据传输
- 处理时延,排队时延,传输时延,传播时延。
除了排队时延之外都是固定的 - 传送文件的吞吐量一般为途径链路的最小速度
- 流量强度=最大速度/最小速度
- 数据包传输具有随机性
传播时延和传输时延
假设AB间速率为Rbps,相隔M米,链路的传播速度s m/s,发送L比特长度文件
- 传播时延: dprop=m/s
- 传输时间: dtrans=L/R
- 端到端的时延: dprop=m/s +dtrans=L/R (去除其他时延)
5协议层次和模型
层次
5个
- 应用层
- 运输层
- 网络层
- 链路层
- 物理层
路由器
路由器处理网络层、链路层、物理层,链路层(现代的路由器有可能会担当防火墙或缓存,因此可能会处理运输层)。交换机处理链路层。主机处理所有五个层次。
6面对的网络攻击
病毒是需要用户交互来感染用户设备的恶意软件;蠕虫无需用户交互。
第二章 应用层
万维网应用
HTTP
拉的作用
电子邮件应用
SMTP
推的作用
POP3
负责邮件下载——删除——转移存储
文件传送
FTP
FTP使用两个并行的TCP连接,一个用于发送控制信息(比如传输文件的请求),另一个用于实际传输文件。因为控制信息不是通过发送文件的同一连接发送的,所以说FTP在带外发送控制信息
DNS
DNS就是把域名解析为IP地址,提供我们上网,我们能够上网最终是找到IP地址。
修改DNS的好处
- 适当提高上网速度;
- 更换DNS可以访问某些因为域名解析存在问题而不能访问的网站;
- 可以屏蔽运营商的广告,还可以帮助您避免被钓鱼的危险;
修改DNS带来的副作用
- 无法访问页面或者访问的页面不是你想要的页面;
- 访问速度没有你从运营商处获得的DNS访问分速度快,延时比较大;
- ·受到DNS劫持,插入广告和被钓鱼网站攻击;
注释:一个网站可有有多个域名,对应不同IP地址
Telnet
我为人人,人人为我
例子 : 迅雷BT种子
第三章 运输层
共同点
多路复用:家里某人收集众人邮件给邮递员
分解:邮递员把文件包给家中某人,其将包裹分解分发给家人
纠错检验功能:TCP相对比较复杂,UDP比较简单
TCP
概述
拥有拥塞控制、顺序控制、超时重传等等功能,因为套字相对于UDP比较多,速度相对较慢。
适合于大文件、要求文件传输完整性的传输。
需要两个套接字
握手协议
就是两个通信实体在互相发送数据之前首先交换控制数据包。SMTP在应用层使用握手协议,而HTTP没有。
三次握手,第四次携带请求下载的信息
非连续TCP
重新三次握手
连续TCP
后续 第二次请求即以后仅仅需要发送请求(1),得到回复信息(2),不需要两次握手
- 串联 重新考虑传播消耗
- 并联 均分速率,避开传播消耗
自动重传请求(ARQ)
需要协同的协议
- 差错检测 额外的比特在报文中
- 接收方反馈
- 重传
滑动窗口传输协议(GBN)
- 多分组以窗口传送
- 接收方接收到受损分组主动丢失该窗口的N个分组(减少接收方缓存)
- 回复ACK1或0(1、0交替)为确认,NAK为未收到;同时也存在ACK答复报文的丢失
- 发送方式 0123—1234——2345-—3456——error2——2345
选择重传(SR)
- 失去ack序号的组等待重传,其他正确的窗口内的组在接收方等待缓存,待ACK全部达到,进行性下一步、
- 协议长度过长将无法工作,必须小于等于序号空间的一半
拥塞控制
慢启动
发送速率cwnd为MSS/RTT,以后每过一个RTT成指数增长
拥塞避免
当无法再增加一倍时,在一个RTT只增加一个MSS
即假设cwnd=10mss,每收到一个ack增加1/10个MSS
快速回复
速度当收到3个冗余ack时,变为(一半+3个MSS)
UDP
概述
对UDP,事务可以在一次往返时间(RTT)中完成——客户端将事务请求发送到UDP套接字,服务器将应答发送回客户端的UDP套接字。对于TCP,至少需要两个RTTs—一个用于建立TCP连接,另一个用于客户端发送请求以及服务器发送回复。(鉴于TCP是面向连接,传输前要进行三次握手而UDP不需建立连接 没有拥塞机制
仅仅需要一个套接字
从应用层的来的数据装修(近似于和IP打交道),仅仅4个字段,8字节:
- 多路分解/复用字段(源端口号/目的端口号)
- 长度
- 校验和(运输到目的地后校验)
部分UDP可以在运输层的使用UDP,并在应用层使用特定协议保持数据可靠性(谷歌浏览器的quic,处于应用层)
优点
- 低延迟
- 报文段字节较少,仅仅8字节
- 无连接状态,不跟踪数据传输信息,可以支持更多活跃用户
纠错检验(端到端原则)
四个16比特的字节之和为1111111111111111(16个1)
如果溢出则回卷,出现个别0