网络层
ARP 地址解析协议
向上提供简单无连接尽最大努力交付的数据报服务,网络层不提供服务质量的承诺。
ARP 地址解析协议 每一台主机都设置一个ARP cache ,里面有局域网上的各主机和路由器的IP地址到硬件地址的映射表。 它是在局域网中的一个协议,用于抽象的IP地址到真实的MAC地址的转换 在同于个局域网中使用直接交付,在不同的局域网中,将数据交给其他路由器。
IP协议
分类的地址,子网划分 ,构成超网 A类地址126 B类地址191.225 C类地址 223.225.225 IP地址放在IP数据报的首部,硬件地址放在MAC帧的首部 IP数据报首部:版本 首部长度 区分服务 总长度 标识 标志 片偏移 生存时间 协议 首部检验和 源地址 目的地址 路由器的路由表中存放(目的网络地址,下一跳地址),通过计算目的地址的子网掩码对应的目的网络地址,可以在路由表中找到下一跳地址,数据到达下一跳后继续传递,最后直接交付。
ICMP 网际控制报文协议
ICMP使IP数据报能够更有效地转发和提高IP数据报交付成功的机会。 有两种:ICMP差错报文和ICMP询问报文
互联网的路由选择协议:
内部网关协议(RIP,OSPF)和外部网关协议(BGP)
RIP
RIP的最大优点是实现简单,开销较小。 RIP特点 1.仅和相邻路由器交换信息 2.路由器交换的信息是当期本路由器所知道的全部信息,即自己现在的路由表。 3.按固定时间间隔交换路由信息。
OSFPF(Open Shortest Path First)开放最短路径优先
特点:1.向本自治系统中的所有路由器发送信息,使用洪泛法。 2.发送的信息就是与本路由器相邻的所有路由器的链路状态 3只有当链路状态发生变化时,路由器才向所有路由器发送此信息。 4OSPF允许管理员为每条链路指派不同的代价。 5如果到同一个目的网络有多条相同代价的路径,那么将使用负载均衡的方式。而RIP只能找到一条路径。 6每隔一段时间相邻路由器会交换一次问候,如果问候长时间没有收到,该路径被标记为不可达。 每个路由器知道全网共有多少个路由器,以及哪些路由器是相邻的,其代价是多少等。 OSPF 的更新收敛得快是其重要优点 划分区域的好处是洪泛法交换链路状态信息局限在一个区域,而不是整个的自治系统。
BGP边界网关协议
BGP只能力求寻找一条能够到达目的网络且比较好的路由,而并非要找到一条最佳路由。 BGP所交换的网络可达信息就是要到达某个网络(用网络前缀表示)所要经过的一系列自治系统。 BGP刚刚运行时,BGP的邻站是交换整个BGP路由表,以后只在发生变化时更新有变化的部分
IPV4和IPV6
双协议栈 隧道技术
运输层
运输层的端口 。套接字。
UDP 用户数据报协议
UDP是无连接的,尽最大努力交付的 UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部后就像下交付给IP层。即UDP对应用层交下来的报文既不合并也不拆分,而是保留这些报文的边界。 UDP没有拥塞控制,网络出现拥塞不会使源主机的发送速率降低。 UDP支持一对一,一对多,多对一和多对多的交互通信。 UDP首部开销小,只有8个字节。
TCP 传输控制协议
TCP是面向连接的传输层协议。 每条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。 TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达。 TCP提供全双工通信。 面向字节流:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序叫下来的数据仅仅看作是一连串无结构的字节流。TCP并不关心应用进程一次把多长的报文发送到TCP的缓存中,而是根据对方给出的窗口值和当前网络拥塞程度来决定一个报文段应该包含多少个字节。 TCP的连接端点叫做套接字,套接字由IP地址和端口号组成。(IP地址:端口号)
停止等待协议 ARQ自动重传请求
对每个发送的数据分组计时,在规定时间内收到确认则传下一个分组,未收到确认,则超时重传。对接受方,接受到数据回复确认信息,接受到两个同样的数据则丢弃第二个,同时再次做确认回复。
连续ARQ协议
停止等待协议信道利用率极低,使用连续ARQ可以显著提高信道利用率。 连续ARQ协议中,发送方每收到一个确认,就把发送窗口向前移动一个分组位置。 接收方采用累计确认的方式。即接收方不必对收到的每个分组逐一确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认。累计确认的优点是容易实现,即使确认丢失也不必重传。缺点是不能向发送方反映出接收方以及正确收到的所有分组信息。
TCP报文段首部格式:源端口和目的端口,序号,确认号,数据偏移,保留,紧急URG,确认ACK,推送PSH,复位RST,同步SYN,终止FIN,窗口,检验和,紧急指针,选项,时间戳。
TCP可靠传输的实现 1.滑动窗口:TCP的滑动窗口以字节为单位。发送窗口的位置由窗口前沿和窗口后延的位置共同确定。后延只能前移或保持不动,前沿可能后缩(不建议)。发送窗口使用三个指针表示P1,P2 ,P3,(P1,P3)是发送窗口的大小,(P1,P2)是已经发送但未收到确认的字节数,(P2,P3)是允许发送但当前尚未发送的字节数(又称为可用窗口或有效窗口)。 发送窗口与TCP的接收缓存的关系是,发送窗口是TCP的发送缓存的一部分,发送缓存和发送窗口的后延是重合的。 由于通过网络传送的窗口值需要一定的时间滞后才能被接收,所以在同一时刻,A的发送窗口并不总是和B的接收窗口一样大。 TCP对不按序到达的数据总是先临时存放在接收窗口中,等到字符流中缺失的字节收到后,再按序交付上层的应用进程。 TCP要求接收方有累计确认功能,这样可以减少传输开销。
2:超时重传时间的选择: TCP采用一种自适应算法,它记录一个报文发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间RTT,TCP保留了RTT的一个加权平均往返时间RTTs RTTs=(1-a)oldRTTs+anewRTT.
TCP流量控制
利用滑动窗口实现流量控制 接收方通过设置rwnd位置的值来控制发送方的发送窗口大小。 在非理想的传输信道中,窗口通知信息可能丢失,对此,TCP为每个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动计时器。若持续计时的时间到期,就发送一个零窗口探测报文段,而对方在确认这个探测报文段时给出现在的窗口值。 TCP为了具有更好的传输效率,对报文段的大小有灵活的控制,让过小的报文段少出现。
TCP的拥塞控制
拥塞控制是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器、以及与降低网络性能有关的所有因素。 进行拥塞控制需要付出代价。 有很多方法能够检测网络的拥塞。主要的一些指标是:由于缺少缓存空间而被丢弃的分组的百分数、平均队列长度、超时重传的分组数、平均分组时延、分组时延的标准差等。 过于频繁地采取行动以缓和网络的拥塞,会使系统产生不稳定的振荡。但过于迟缓地采取行动又不具有任何实用价值。
TCP拥塞控制的方法 慢开始 只要网络没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多的分组发送出去,这样就可以提高网络的利用率。但只要网络出现拥塞或可能出现拥塞,就必须要把窗口减小一些,以减小注入到网络中的分组数,以便缓和网络出现的阻塞。 慢开始是指刚开始发送数据时,由小到大逐渐增大拥塞窗口数值。使用慢开始算法,每经过一个传输轮次(一个RTT),拥塞窗口cwnd就加倍。 为了防止拥塞窗口cwnd增长过大引起网络拥塞,需要设置慢开始门限ssthresh状况变量。 当cwnd<ssthresh时,使用慢开始算法 当cwnd>ssthresh时,使用拥塞避免算法 当cwnd=ssthresh时,既可以用慢开始,也可以用拥塞避免算法。 拥塞避免 拥塞避免算法是让拥塞窗口cwnd缓慢增大,每经过一个往返时间RTT就把发送方的拥塞窗口加1。 快重传 有时个别报文段在网络中丢失,实际上并未发生拥塞, 就会出现超时,并被误认为网络拥塞。 采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失。它要求接收方不要等待自己发送数据时才捎带确认,而是立即发送确认,即使收到了失序的报文段也要立即发送对已收到的报文段的重复确认。快重传算法规定,发送方只要一连接收到3个重复确认,就知道接收方确实没有收到确认报文段的下一个报文段,因而应当立即进行重传。使用快重传可以使整个网络吞吐量提高约20%。 快恢复 发送方知道现在只是丢失了个别报文段,于是不启动慢开始,而是执行快恢复。调整发送方拥塞窗口为门限值ssthresh=cwnd/2,然后开始执行拥塞避免算法。
主动队列管理AQM 路由器尾部缓存空间不足导致一连串的分组丢失会使网络中许多TCP连接进入慢开始状态,更严重的是,许多TCP在同一时间进入慢开始,之后又在同一时间再次造成拥塞,这种现象称为全局同步。 为了避免全局同步。提出了AQM,不要等待路由器队列长度达到最大值才不得不丢弃分组。而是在达到某个警惕的数值时,就主动丢弃部分分组,这样就提醒了某些发送方放慢发送速率。
TCP的运输连接管理
连接建立 数据传送 连接释放 连接建立 TCP建立连接的过程叫三报文握手。 1.client发送连接请求(SYN=1,不能携带数据,要消耗一个序号); 2.server收到请求后若同样建立连接,则向client发送确认(SYN=1,ACK=1,不能携带数据,需要消耗一个序号); 3.client收到server的确认后,再向server发送确认(ACK=1,可以携带数据,如果不携带数据则不消耗序号)。 建立连接过程使用三次握手的目的是为了防止“已失效的连接请求报文段”突然又被server接收到,产生的错误。 连接释放 TCP建立释放的过程叫四报文握手。 1.client的应用进程向其TCP发出连接释放报文段,并停止发送数据,主动关闭TCP连接。 2.client向server发送连接释放请求(FIN=1,可以携带数据,即使不携带数据也消耗序号),client进入FIN-WAIT-1(终止等待1)状态,等待server的确认。 3.server收到连接释放请求报文段后发出确认(ACK=1),server就进入CLOSE-WAIT(关闭等待)状态。此时client到server的连接就释放了,TCP连接处于半关闭状态。即client没有数据要发送了,但server若发送数据,client仍要接收。 client收到确认信息后,进入FIN-WAIT-2(终止等待2)状态,等待server发出的连接释放报文段。 4.server没有数据要发送给client时,其应用进程通知TCP释放连接,server发出连接释放报文段(FIN=1),发出后server处于LAST-ACK(最后确认)状态,等待client的确认。 5.client收到连接释放报文段后对此确认(ACK=1)。到此,TCP连接并没有释放,须经过时间等待计时器设置的时间2MSL后,client才进入关闭。 client等待2MSL时间的原因 1.为了保证client发送的最后一个ACK报文能够到达server,若该报文丢失,则client在2MSL时间内可重传确认,并重新启动2MSL计时器。 2.防止”已失效的连接请求报文段“出现在本连接中。
TCP还设置有保活计时器。若连接建立后一方出现故障,通过不断发送探测报文段,多次不被响应,主动断开连接。
|