周二约的腾讯面试,周末极限复习一下,争取今天把计网的书看完
应用层
端口号:Web 80; SMTP 25;FTP控制连接端口21,数据连接端口20;POP3 110;DNS 53
报文
1. 应用程序的核心
运行在不同端系统,通过网络彼此通信
2. 应用程序的体系结构(如何在各种端系统上组织该应用程序)
客户—服务器(CS)体系结构:服务器—总是打开的主机,客户之间不直接通信,服务器具有固定的、周知的IP地址
Web、FTP、Telnet、电子邮件
对等(P2P)体系结构:对位于数据中心的专用服务器有最小的(或没有)依赖,在间断的主机之间使用直接通信(对等方)
(自扩展性) 文件共享、下载加速器(迅雷)、因特网电话
3. 进程通信
两个不同端系统上的进程,通过跨越计算机网络交换报文而相互通信
进程通过软件接口—套接字(同一主机内应用层与传输层的接口,API)向网络发送报文和接收报文
4. SSL(安全套接字层)
加密、数据完整性、端点鉴别
5. 应用层协议(交换报文的类型,语法,字段语义,如何发送,响应规则)
1)Web && HTTP(超文本传输协议)—TCP
URL地址:存放对象的服务器主机名,对象路径名
无状态协议—不保存关于用户的任何信息
非持续连接:每个请求响应对是经过一个单独的TCP连接发送
持续连接:所有的请求及响应经过相同的TCP连接发送(默认)
往返时间(RTT):一个短分组从客户到服务器然后再返回客户所花费的时间(传播时延、排队时延、处理时延)
三次握手:客户向服务器发送一个小的TCP报文段,服务器用一个小的TCP报文段做出确认和相应,客户向服务器返回确认
HTTP报文格式(请求报文、响应报文)
- 请求报文
请求行:方法字段(GET,POST,HEAD—不返回请求对象,通常用来调试跟踪, PUT—允许用户上传对象到指定的Web服务器上的指定目录, DELETE—允许用户删除Web服务器上的对象)、URL字段、HTTP版本字段
首部行:Host、Connection、User-agent、Accept-language
空行:
实体主体:GET方法为空,POST方法有(提交表单)
- 响应报文
状态行:协议版本、状态码、相应状态信息
首部行:Connection、Data、Sever、Last-Modified、Content-Length、Content-Type
空行
实体主体:所请求对象的本身
状态码及相应短语:
200 OK:请求成功
301 Moved Permanently:请求的对象被永久转移了,新的URL定义在Location首部行中
400 Bad Request:请求不能被服务器理解
404 Not Found:被请求的文档不在服务器上
505 HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本
cookie:请求和响应报文中有一个cookie首部行,用户端系统有一个保存 cookie的文件,web有一个后端数据库
唯一标识码,数据库产生对应表项 Set-cookie
标识一个用户
web缓存(代理):在存储空间中保存最近请求过的对象的副本,既是服务器又是客户
减少客户对请求的响应时间、减少一个机构的接入链路到因特网的通信量
2)文件传输协议:FTP
用户提供一个用户标识和口令,向一台远程主机传输文件
两个并行TCP连接:控制连接(用户标识、口令等)、数据连接—带外传送,数据连接是非持续的
在会话期间保留用户的状态
3)电子邮件 SMTP
因特网电子邮件系统:用户代理、邮件服务器(邮箱—管理和维护报文)、简单邮件传输协议
一般不使用中间邮件服务器发送邮件
持续连接
邮件访问协议:第三版邮局协议(POP3):下载并删除/下载并保留
因特网邮件访问协议(IMAP):在远程文件夹中查询邮件,维护用户状态信息
HTTP
DNS(域名系统):主机名到IP地址转换,分层的DNS服务器实现分布式数据库
基于UDP,带来额外的时延,递归查询,迭代查询,DNS缓存
根DNS服务器,顶级域DNS服务器,权威DNS服务器,本地DNS服务器
资源记录(Name,Value,Type,TTL)
Type = A 主机名 -> IP地址 Type = NS 个域 -> 权威DNS服务器的主机名
Type = CNAME 别名 -> 规范主机名 Type = MX 邮件服务器别名 -> 规范主机名
P2P应用:自扩展性
文件分发
分散在大型对等方社区中的数据库
运输层
在端系统中实现,为运行在不同主机上的进程之间提供了逻辑通信
报文段(segment)—将应用报文划分为较小的块,并为每块加上一个运输层首部以生成运输层报文段
多路复用:在源主机从不同的套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层
多路分解:将运输层报文段中的数据交付到正确的套接字
端口号(标识套接字)—16bit,0~65535
UDP套接字由二元组标识:目的IP地址、目的端口号
TCP套接字由四元组标识:源IP地址、源端口号、目的IP地址、目的端口号
1. TCP服务
面向连接服务:全双工(同时进行报文收发),三次握手
可靠传输服务:无差错、按顺序交付—流量控制、序号、确认、定时器
拥塞控制机制:当发送方和接收方之间的网络出现拥塞时,抑制发送进程
流量控制服务:消除发送方使接收方缓存溢出的可能性,发送方的放松速率与接收方的接收速率速匹配
接收方—接收窗口(接收方还有多少缓存空间)
最大报文段长度(MSS),最大传输单元(MTU)
分组首部(20字节)
TCP报文段结构
源端口号 目的端口号
序号
确认号
首部长度 保留未用 URG ACK PSH RST SYN FIN 接收窗口
因特网校验和 紧急数据指针
选项(通常为空,即TCP首部长度为20字节)
数据
超时间隔加倍,快速重传(收到3个冗余ACK)
2. UDP服务
无连接的、不可靠数据传送服务、没有拥塞控制机制
TCP和UDP均提供数据交付、差错检查(两种最低限度的运输层服务)
要求最小的发送速率,不希望过分延迟,容忍一些数据丢失,不会引入连接时延,不维护连接状态,分组首部开销小(8字节)
无差错恢复能力,丢弃受损的报文段
报文段结构 (一行32bit)
源端口号 目的端口号
长度(首部+数据) 检验和(UDP报文段)
应用数据(报文)
3. 可靠数据传输的原理
停止等待协议
流水线可靠数据传输协议:允许发送方发送多个分组而无需等待确认—增加序号范围,发送方和接收方必须缓存多个分组
差错恢复(回退N步—滑动窗口,失序分组全部丢弃,选择重传—仅重传出错分组)
4. TCP三次握手
- 客户端的TCP首先向服务器端的TCP发送一个特殊的TCP报文段,不包含应用层数据,SYN=1 — SYN报文段
- 服务器提取出TCP SYN报文段,为该TCP连接分配TCP缓存和变量,并向客户端TCP发起允许连接的报文段,不包含应用层数据,SYN = 1 — SYNACK报文段
- 在收到SYNACK报文段后,客户为连接分配缓存和变量。客户主机向服务器发送另一个报文段:对服务器的允许连接的报文段进行了确认,SYN = 0,可以捎带数据
5. TCP四次挥手
FIN ACK FIN ACK
6. 拥塞控制原理
分组重传作为网络拥塞的征兆
端到端的拥塞控制:IP层不会向端系统提供有关网络拥塞的反馈信息,通过超时或3次冗余确认得知
网络辅助的拥塞控制:路由器向发送方提供关于网络中拥塞状态的显示反馈信息
7. TCP拥塞控制—端到端拥塞控制,拥塞窗口cwnd
加性增,乘性减(AIMD)
- 慢启动
当一条TCP连接开始时,cwnd的值以1个MSS开始并且每当传输的报文段首次被确认就增加一个MSS。
起始速率慢,以指数增长。
超时 — 慢启动结束,cwnd重新设置为1并重新开始慢启动,阈值设置为cwnd/2
cwnd=阈值 — 慢启动结束,进入拥塞避免
3个冗余ACK — 慢启动结束,快速重传并进入快速恢复
- 拥塞避免
每个RTT只将cwnd的值增加一个MSS
超时 — 拥塞避免结束,cwnd设置为1个MSS,与慢启动相同
3个冗余ACK — cwnd减半,阈值为减半的cwnd,进入快速恢复
- 快速恢复
超时 — 同慢启动
3个冗余ACK — cwnd设置为1,阈值为cwnd/2
不论是超时还是丢包,都将cwnd设置为1并进入慢启动
网络层
数据报
三个重要组件:IP协议,路由选择协议,因特网控制报文协议(ICMP)
提供了主机之间的逻辑通信,网际协议(IP)—尽力而为交付服务,不可靠服务
转发:分组在单一的路由器中从一条入链路到一条出链路的传送
路由选择:涉及一个网络中的所有路由器,经过路由选择协议共同交互,以决定分组从源到目的所采用的路径—路由选择算法
转发表(每台路由器均有):通过检查分组的首部字段的值,然后索引查询。将目的地址映射到链路接口
路由选择算法决定了插入路由器的转发表的值,分布式,集中式
虚电路(VC):仅在网络层提供连接服务的计算机网络 ,VC号
数据报网络:仅在网络层提供无连接服务的计算机网络 — 因特网,使用分组的目的地址转发分组
最长前缀匹配规则,路由器不维持连接的状态信息
路由器的工作原理:
输入端口
交换结构:内存交换,总线交换,经过互联网络交换
输出端口
路由选择处理器:执行路由选择协议
网际协议(IP)
1. 数据报格式
版本号(IP协议版本,4bit) 首部长度(4bit,一般为20字节) 服务类型(8bit) 数据报长度(16bit,首部+数据)
标识(16bit) 标志(3bit) 偏移(13bit) —与分片有关
寿命(8bit) 上层协议(8bit,将网络层和运输层绑定) 首部校验和(16bit)
源IP地址 (32bit)
目的IP地址 (32bit)
选项
数据
2. 数据报分片
最大传送单元(MTU):一个链路层帧能承载的最大数据量
最后一片的标志比特被设为0,其他所有片的标志比特设为1
3. IPv4编址
每个IP地址有32bit,点分十进制
子网划分:无类别域间路由选择器,分类编址
路由聚合
动态主机配置协议(DHCP):允许主机自动获取IP地址。即插即用协议。
- DHCP发现:客户在UDP分组向端口67发送DHCP发现报文,目的地址255.255.255.255,源地址0.0.0.0
- DHCP服务器提供:目的地址255.255.255.255
- DHCP请求:客户向选中的服务器发送DHCP请求报文
- DHCP ACK:对DHCP请求报文进行相应
网络地址转换(NAT):使路由器对外界隐藏了家庭网络中的细节
NAT转换表
4. IPv6编址
数据报格式(40字节的定长首部)
版本(4bit) 流量类型(8bit) 流标签(20bit)
有效载荷长度(16bit) 下一个首部 跳限制
源地址(128bit)
目的地址(128bit)
数据
5. IPv6 v.s. IPv4
- IPv6不允许在中间路由器上进行分片和重新组装
- IPv6没有首部检验和字段
- IPv6首部没有选项字段
6. IPv4到IPv6的迁移
隧道,双栈
路由选择算法
链路状态算法(LS):完整的,全局性的网络知识,每个节点向网络中所有其他节点广播链路状态分组,dijkstra算法
距离向量算法(DV):迭代,分布式的方式,每个节点与直接相连的邻居通信,floyd算法
自治系统(AS)内部的路由选择协议
- RIP(路由选择信息协议):基于距离向量,跳数作为费用,基于UDP的应用层协议
- OSPF(开放最短路径优先):基于链路状态
网关路由器
自治系统间的路由选择协议
- BGP(边际网关协议)
广播路由选择算法
- 无控制洪泛:源节点向所有邻居发送分组的副本—广播风暴
- 受控洪泛:序号控制洪泛,反向路径转发
- 生成树广播
多播
链路层
链路层帧
广播信道:多个发送和接收节点都连接到相同的、单一的、共享的广播信道上 多路访问协议
点对点通信链路:单个发送方,单个接收方 点对点协议(PPP)
多路访问协议
- 信道划分协议:时分多路复用(TDM),频分多路复用(FDM),码分多址(CDMA)
- 随机接入协议:时隙ALOHA协议(时钟同步),ALOHA协议
载波侦听多路访问(CSMA),具有碰撞检测的载波侦听多路访问(CSMA/CD)
- 轮流协议:轮询协议(主节点),令牌传递协议
地址解析协议(ARP):将IP地址转换为链路层地址(LAN地址,物理地址,MAC地址) 6字节
MAC广播地址:FF-FF-FF-FF-FF-FF
ARP表:IP地址到MAC地址的映射关系