范围
网络协议,服务
网络四层协议的功能与包含的协议
数据链路层 差错检测 ,物理地址,以太网,局域网的扩展,
物理层 数据传输速度,频率,波长,速度,编码
网络层:IP地址,子网,CIDR,RIP,OSPF协议 ,路由转发表,IP数据报各字段的含义
传输层:端口,停止等待,连续ARQ协议,滑动窗口,拥塞控制,建立连接和释放连接的过程
应用层:DNS作用,工作原理,查询机制,WWW,FTP,电子邮件的作用和工作机制制单位换算问题
https://blog.csdn.net/qq_40515156/article/details/103756138
B和b
1Byte=8bit
速率
10^3次
内存大小
2^10次
OSI
- 应用层:报文 为用户的应用进程直接提供服务
- 传输层:报文段 负责向两个主机中进程之间的通信提供服务
- 网络层:IP 数据报,分组 负责为分组交换网上的不同主机提供通信服务
- 数据链路层:帧 在两个相邻结点之间传送数据,不需要经过转发
- 物理层:比特流 透明地传输比特流
概述
协议【*】
为进行网络中对等实体数据交换而建立的规则、标准或约定称为网络协议。
- 语法:即数据与控制信息的结构或格式
- 语义:即需要发出何种信息,完成何种动作以及做出何种响应
- 同步:即事件实现顺序的详细说明
试解释everything over IP和 IP over everything 的含义。
发送时延 传播时延
【1-27】
【1-28】
【1-29】
【1-30 31】
比特宽度 时间 距离
物理层
速率 带宽
数据链路层
CRC循环冗余码 检错编码
仅仅采用CRC,数据链路层只能做到无差错(接近于1的概率)接受而非可靠传输。
整个网络通信也不是可靠的。
以太网
最短帧长
交换机和集线器
集线器均分带宽
交换机有接口 所有每个用户都可以获得交换机的所有带宽
局域网
局域网(Local Area Network):简称LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。
特点1:覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。
特点2:使用专门铺设的传输介质(双绞线、同轴电缆)进行联网,数据传输速率高(10Mb/s ~ 10Gb/s)。
特点3:通信延迟时间短,误码率低,可靠性较高。
特点4:各站为平等关系,共享传输信道。
特点5:多采用分布式控制和广播式通信,能进行广播和组播。
决定局域网的主要要素为:网络拓扑,传输介质与介质访问控制方法。
网络层
【*】IP地址和物理地址(MAC)
分组交换 电路交换 报文交换
电路:
- 一定要先建立连接 效率低
- 通信过程始终占用物理信道 资源消耗
- 一个环节故障直接中断
- 【优点】静态分配传输带宽 带宽不变化
分组:
- 常用:无连接IP协议
- 存储转发技术
- 无需建立连接
- 动态分配传输带宽
- 分布式路由选择协议 结点发送故障可以自适应动态改变 有很好的生存性
- 容易发生拥塞
- 分组必须携带控制信息,造成一定开销
报文:
- 与分组类似,但是不再把报文进行分割
- 省去划分和重装的时间,但是灵活性降低,传输数据时延大
虚电路分组和数据报服务
首部长度
TCP 20 IP 20 UDP 8
IP地址片偏移单位8B
交换机 集线器 路由
集线器同一时间只允许一个计算机和其他计算机进行通信
- 集线器作用在物理层 无脑广播
- 局域网
- 局域网内充斥着大量无效数据
交换机允许多个计算机同时通信 但是只能作用于同类型的网络
- 数据链路层设备
- 同类型网络
- 可以通过识别MAC地址进行标识,有目的转发而不是广播
路由可作用于异构互联网络
环回测试
PING 127.0.0.1
ARP协议
只能实现对连接在同一个网络上的主机或路由器进行地址解析
【实现跨网络通信需要使用路由器】
超时计时器
- 设置太短会导致ARP请求和响应分组的通信量太频繁;太长会导致更换网卡之后主机迟迟无法与网络上其他主机通信
不需要发送ARP请求分组的情况
- 源主机高速缓存上已经有了该目的IP地址的项目
- 源主机发送的是广播分组
- 源主机和目的主机是点对点链路
ICMP
网际报文协议ICMP
用来使主机或路由器报告差错情况和提供有关异常情况的报告,这样可以更有效转发IP数据报和提高交付成功的机会
IGMP 网际组管理协议 多播组 让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组
IP数据报各字段的定义
-
版本:IPv4 / IPv6?
-
首部长度:单位是4B,【20-60B】
-
区分服务:指示期望获得哪种类型的服务。
-
总长度:首部+数据,单位是1B。 总长度为max{MTU,2^16 -1 } MTU为数据链路层规定一个帧所能传送的数据的最大值
-
标识:同一数据报的分片使用同一标识。 不同分片不能组装
-
标志:只有2位有意义x__
-
- 首位保留,无意义
- 中间位DF ( Don’t Fragment) :
-
-
- DF=1,禁止分片
- DF=0,允许分片
-
-
- 最低位MF ( More Fragment) :
-
-
- MF=1,后面“还有分片”
- MF=0,代表最后一片/没分片
-
-
片偏移:指出较长分组分片后,某片在原分组中的相对位置。以8B 为单位(除了最后一个分片,每个分片长度一定是8B的整数倍)
-
生存时间(TTL):IP分组的保质期。经过一个路由器-1,变成0则丢弃。
-
协议:数据部分的协议。
-
首部检验和:只检验首部。
-
源IP地址和目的IP地址:32位。
-
可选字段:0~40B ,用来支持排错、测量以及安全等措施。填充:全0,把首部补成4B的整数倍。
首部检验和
求和取反
优点:转发分组速度更快
缺点:直到到了终点交付到传输层TCP检查才能知道数据是否发生差错
源地址可能也是错误的,要求错误的源地址重传无意义,不使用还可以减少检验时间
分片【*】
注意区分字节还是位
IP协议可以分片 广域网则不必分片
两次重传的IP数据报不可组装成一个
比较在最后的目的主机组装和通过一个网络就组装一次
- 路由器处理分片后的数据报更简单一些【处理简单】
- 并非所有的数据报都会经过同一个路由器(路由选择协议),因此在中间路由器进行组装会缺少几个数据报片【不够全】
- 也许后续还会经过一个网络,所能通过的分组长度更小,还要给这个数据报片划分为更小的片,如果在中间的路由器进行组装,可能要组装多次【组装多次】
IPV4分类
- 0.0.0.0 本机
- 127.0.0.1/0 环回测试
- 全1 本网广播
- 特定网络号 主机号全1 定向广播
子网
推荐使用的子网掩码是连续的1+连续的0
充分利用网络号 将原本二级变为三级
使用子网掩码
使用子网掩码查路由表
- 从数据报首部提取目的IP地址D
- 将路由器直接相联的网络进行逐个检查,将D与各网络子网掩码按位相与,如果有匹配就直接交付(封装成帧发送)否则执行3【直接交付】
- 查找目的地址为D的特定主机路由,有就发送到这个下一跳路由器【特定主机路由】
- 将路由器相联路由器子网掩码与D进行相与,如果结果与目的网络地址匹配,则转发给下一跳路由器【其他路由】
- 发送给路由表指明的默认路由器,否则6【默认路由】
- 报告转发分组出错
CIDR 路由转发表
使用cidr查找路由表
路由表包括网络前缀 下一跳地址
要查找到匹配结果中的最长网路前缀的路由,才进行转发
将三级再变为二级 网络前缀+主机号
- 注意DNS服务器需要多次查询,所以子网掩码是255.255.255.255
- 互联网由默认路由器0.0.0.0 和子网掩码0.0.0.0
-
从小到大先写出网络号,子网掩码,IP地址
-
注意如图主机号除了分配的主机数外,要加上路由器数
-
- LAN5 = 4+2 所以要三位
- 不能仅分配一位主机号 不能全0或者全1 所以WAN要两位主机号
路由表只给出下一跳地址的好处
路由动态选择
RIP 应用层协议 使用UDP数据报
- IGP:内部网关协议 RIP OSPF
- EGP:外部网关协议 BGP
- 分布式的基于距离向量的路由选择协议
- 仅和相邻路由器交换信息
- 交换路由表信息
- 固定时间间隔交换信息(30s)
- 网络拓扑发生变化,路由器及时向相邻路由器通告拓扑变化的路由信息
为什么RIP用UDP而OSPF用IP
- RIP只和邻站交换信息,UDP虽然不保证可靠交付,但是开销小,可以满足需求,因此RIP需要周期性和邻站交换信息才能保证路由表信息及时更新
- OSPF使用可靠的洪泛法,直接使用IP,灵活性好,开销小
距离向量算法RIF
慢收敛
路由选择习题
下一跳地址相同,一定要更新
OSPF 网络层协议 使用IP数据报
- 分布式的链路状态协议
- 洪泛法:向本自治系统的所有路由器发生信息,发送相邻,一直扩散,最终所有路由器都得到这个信息的副本
- 发送的信息是与本路由器相邻的所有路由器的链路状态,【有哪些相邻以及代价】
- 只有链路状态发生变化时,才使用洪泛法发送此信息
路由表转拓扑结构
传输层
TCP与IP对比
- TCP是面向连接的可靠传输 进程之间的通信 套接字(IP+端口号)
- IP是无连接的不可靠传输 主机之间的通信 (IP地址)
如果链路传输不可能出错,TCP的可靠交付是多余的吗
不是,
- IP数据报到达时可能乱序
- IP数据报可能由于路由选择出错,在互联网兜圈子,TTL数值降低到0,中途被丢弃
- 可能由于某路由器突然出现很大的通信量,来不及处理,丢弃部分
网络层提供数据报服务或者虚电路服务,对于运输层是没有影响的
实时传输 UDP
- 对于实时传送数据,我们宁愿丢失少量分组,也不愿等待太晚到达的分组
- 当网络出现拥塞,TCP具有拥塞控制,会放慢报文段的发送
- 有的应用程序不需要TCP可靠传输
接收到差错UDP:直接丢弃
UDP面向报文:UDP对于应用程序发下来的报文,既不拆分也不合并,完全保留
传输文件 TCP
UDP如果出现差错,直接丢弃,不重传,不能保证正确的传送数据,因此传送数据通过tcp
端口【*】
- 端口是用来标记进程的,端口也是协议端口号,与硬件端口不同,硬件端口是不同硬件设备交互的接口,软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
- 不同的os,实现端口的方法可以是不同的
- TCP/IP运输层用一个16位端口号标志一个端口,端口号只具有本地意义,为了标志本计算机应用层的各个进程在和运输层交互时的层间端口,不同计算机的相同端口没有关联
- 两进程通信时,不仅需要IP地址,还需要端口号
端口分类
- 熟知端口号:0 - 1023 TCP/IP的一些重要应用程序
- 登记端口号:1024 - 49151 没有熟知端口的应用程序,需要按照IANA规定的手续进行登记 防止重复
- 短暂端口号:49152 - 65535 在客户进程运行时才动态选择,留给客户进程短暂使用的
TCP计时器【*】
重传计时器
用于确认,截止时间到还没收到确认,重传该报文段,计时器复位
KARN算法
可以区分开有效的和无效的往返时间样本
如果不使用Karn算法,在收到确认时都认为是重传报文段的确认,由此得出的返回时间样本和重传时间都会偏小,直到接近与0
保活计时器
防止长时间空闲连接,如果超过时间(一般2h)还没有收到信息,就发送探测报文段(相隔75s),超过10个还没收到响应,就假定客户出现故障,终止连接。
收到连接就将计时器复位
持续计时器
应对零窗口大小通知
接收TCP一方给出窗口大小为0,发送方就停止发送,知道接收方发送确认并给出一个非零窗口大小,但这个确认可能会丢失,这样接收方等待发送方发送新的报文,而发送方则等待接收方发送非零窗口大小,产生死锁。
发送方收到窗口大小为0的确认,就开启持续计时器,持续计时器时间到,还未收到非零窗口大小,就主动发送一个探测报文段(只有一个字节的数据,只有一个序号,且不需要被确认),该报文段提醒接收方:确认已丢失,必须重传
持续计时器值为重传时间的值,第一次未收到接收端的响应,就再次发送,持续计时器加倍且复位,一直持续到门限值(60s),此后就每隔60s发送一个直到打开
时间等待计时器
在连接终止期使用,在时间等待期,连接处于中间过渡状态,可以使重复发送的FIN终止报文段到达目的站,从而将其丢弃,一般为2MSL(一个报文段的寿命期待值的两倍)
TCP报文
序号/确认号中每个序号表示一个字节
数据偏移:4B为单位
ACK:确认位,连接建立后,所有的报文段都需要ACK=1
窗口是接收窗口
长度:min{(对方给的MSS+首部),2^16-1 - 20}
- 不能超过IP数据报规定的最大长度
- 不能超过对方所能接受的最大数据长度
习题 序号绕回
序号 最短传输时间
吞吐量 信道利用率
停止等待
自动重传请求ARQ
连续ARQ协议
rwnd接收窗口
cwnd拥塞窗口
Go-back-N
滑动窗口
拥塞控制
- 流量控制是点对点 抑制发送端的发送速率,使得接收端来得及接收 只在一条TCP连接中的接收端采用的措施
- 拥塞控制是全局 ,用来控制TCP连接中发送端发送报文段的速率,可以控制多个发送端,避免互联网某处过载
发送窗口 = min {rwnd(流量控制),cwnd(拥塞控制)}
- 慢开始阶段 初始cwnd=1 每次翻倍【指数增长】
- 到ssthresh时,拥塞避免阶段 cwnd+=1 【加法增大】
- 到拥塞(超时) 时,设置ssthresh为此时cwnd的一半,重新设置cwnd=1 【乘法减小】
- 无需等待超时重传,收到3个冗余ACK就重传,执行乘法减小,设置ssthresh为此时cwnd的一半
- 继续加法增大
- 慢开始:指数增大 拥塞(超时检测到丢失了报文段)时 cwnd直接变为1
- 到ssthresh时就开始拥塞避免
- 拥塞避免到遇到三个重复确认检测【进入快恢复cwnd=1/2】或者超时检测到丢失了报文段【进入慢开始cwnd=1】,都将ssthresh变为1/2
- 快恢复:收到三个重复确认检测 cwnd直接变为此时的1/2 ssthresh也是1/2
建立连接和释放连接的过程
三次握手
- 客户端发送连接请求报文段SYN=1,seq=x 无数据 【SYN-SENT】
- 服务端为该TCP连接分配缓存和变量,返回确认报文段SYN=1,ACK=1,无数据【SYN-RCVD】
- 客户端为该TCP连接分配缓存和变量,发送确认的确认报文段,SYN=0,ACK=1,可以携带数据 【establish】
四次握手
- client端发送连接释放报文段FIN=1,seq=u,停止发送数据,请求关闭A->B的连接【FIN-WAIT-1】
- server端发送确认报文段ACK=1,seq=v,ack=u+1 此时连接半关闭(A->B的连接被关闭)【FIN-WAIT-2】【CLOSED-WAIT】
- server可以继续发送数据
- server发送连接释放报文段FIN=1,ACK=1,seq=w,ack=u+1【TIME-WAIT】
- server回送一个确认报文段,ACK=1,seq=u+1,ack=w+1 【CLOSED】
【例题】
5.19 用TCP传送512字节的数据。设窗口为100字节,而TCP报文段每次也是传送100字节的数据。再设发送方和接收方的起始序号分别选为100和200,试画出类似于图5-15的工作示意图。从连接建立阶段到连接释放都要画上。
整个过程客户端:(100 + 1 + 512 + 2)=614
服务端:(200+1)=201
应用层
DNS类型
域名系统DNS是互联网中使用的命名系统,用来把人们使用的机器名字转换为IP地址。
- 本地域名服务器:较近 几个路由器的距离 查找的主机属于同一个ISP即可查到
- 根域名服务器:最高层次的域名服务器,知道所有顶级域名服务器的域名和IP地址
- 顶级域名服务器:管理在该顶级域名服务器注册的所有二级域名
- 权限域名服务器:一个服务器所管辖的范围叫做区,各单位根据具体情况来划分自己管辖范围的区,但一个区所有结点必须连通,每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
域名解析过程 迭代解析 递归
域名到IP地址解析过程:当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报的方式发送给本地域名服务器(UDP减少开销)。本地域名服务器查找域名后,将对应的IP地址放进回答报文中返回。应用进程获得目的主机IP地址后即可进行通信。若本地域名服务器不能回答请求,则本地域名服务器暂时成为DNS的一个客户,并像其他域名服务器发送查询请求,直到可以找到能回答该请求的域名服务器为止。
一致性:主从复制
- 主服务器故障,可以查询辅助域名服务器
- 主服务器定期将数据复制到辅助服务器
- 只能修改主域名服务器的数据
递归+迭代
- 主机先向其本地域名服务器进行递归查询
- 本地域名服务器采用迭代查询,先向根域名服务器查询
- 根域名服务器回答本地域名服务器下一个查询的顶级域名服务器的IP地址
- 本地域名服务器向顶级域名服务器发送查询请求
- 顶级域名服务器回答本地域名服务器下一个查询的权限域名服务器的IP地址
- 本地域名服务器向权限域名服务器发送查询请求
- 权限域名服务器将要查询的域名对应的IP地址告诉本地域名服务器
- 本地域名服务器最后把查询的结果回答给主机
递归
- 主机先向其本地域名服务器进行递归查询
- 本地域名服务器只向根域名服务器发送请求
- 根域名服务器再向顶级
- 顶级 权限
- 查到之后返回给本地
- 本地返回给主机
高速缓存的作用
可大大减轻根域名服务器的负荷,使因特网上的查询请求和回答报文的数量大大减轻