《计算机网络》读书笔记(三)

《计算机网络》读书笔记(三)
数据链路层
        数据链路层需要完成的功能包括三个方面:1.向网络层提供一个定义良好的服务接口;2.处理传输错误;3.调节数据流,确保接受方不会被淹没。
        数据链路层提供三种服务:1.无确认的无连接的服务(绝大多数LAN使用);2.有确认的无连接的服务(比如无线系统);3.有确认的面向连接的服务。
       数据链路层的几种成帧方法:1.字符记数法;2.含字节填充的分界符法;3.含位填充的分界标志法;4.物理层编码违例法。
        流控制包括两种:1.基于反馈的流控制(数据链路层使用);2.基于速率的流控制。
        错误检测和纠正:1.纠错码,也叫做向前纠错;2.检错码。海明距离:为了检测d个错误,需要一个距离为d+1的编码方案;为了纠正d个错误,需要一个距离为2d+1的编码方案。    CRC(Cyclic Redundancy Check,循环冗余校检码)。。。。。。。更多等带以后添加基本数据链路协议,参照后面的1.c,是一个支持重传的肯定确认协议。
        滑动窗口协议:所有滑动窗口协议的本质是,在任何时刻,发送方总是维持着一组序列号,分别对应准许它发送的帧,我们称这些帧在发送窗口之内,类似的,接收方也维护着一个接受窗口。三个例子:1.1位滑动窗口协议;2.使用回退N帧技术的协议;3.使用选择性重传的协议。详细参照后面的三个C程序。
        协议验证:1.有限状态机模型:许多协议模型中用到的一个关键概念是有限状态机(finite state machine),每个协议机(即发送方或接受方)在任何一个时刻,总是处于一种特定的状态,它的状态是由所有变量的值组成的,其中也包括程序计数器;2.Petri网模型:一个Petri网有4个基本元素:库所(place),变迁(transition),弧(arc)和标记(token)。
        HDLC(High-level Data Link Control,高级数据链路控制):所有协议都是面向位的,并且为了确保数据的透明性,它们都使用了位填充。
        PPP(Point-to-Point Protocol,点到点协议):Internet中大量使用该协议,PPP提供了三类功能:1.一种支持错误检测的成帧方法;2.一个LCP链路控制协议,支持同步和异步线路,也支持面向字节的和面向位的编码方法;3.一种协商网络层选项的方法,并且协商方法与所使用的网络层协议独立,所选择的方法对于每一种支持的网络层都有一个不同的NCP(网络控制协议)。

//protocol.h
#define MAX_PKT 1024 /* determines packet size in bytes */

typedef enum {false, true} boolean; /* boolean type */
typedef unsigned int seq_nr; /* sequence or ack numbers */
typedef struct {unsigned char data[MAX_PKT];} packet; /*    packet definition */
typedef enum {data, ack, nak} frame_kind; /* frame_kind definition */

typedef struct { /* frames are transported in this layer */
  frame_kind kind; /* what kind of a frame is it? */
  seq_nr seq;    /* sequence number */
  seq_nr ack;    /* acknowledgement number */
  packet info;   /* the network layer packet */
} frame;

/* Wait for an event to happen; return its type in event. */
void wait_for_event(event_type *event);

/* Fetch a packet from the network layer for transmission on the channel. */
void from_network_layer(packet *p);

/* Deliver information from an inbound frame to the network layer. */
void to_network_layer(packet *p);

/* Go get an inbound frame from the physical layer and copy it to r. */
void from_physical_layer(frame *r);

/* Pass the frame to the physical layer for transmission. */
void to_physical_layer(frame *s);

/* Start the clock running and enable the timeout event. */
void start_timer(seq_nr k);

/* Stop the clock and disable the timeout event. */
void stop_timer(seq_nr k);

/* Start an auxiliary timer and enable the ack_timeout event. */
void start_ack_timer(void);

/* Stop the auxiliary timer and disable the ack_timeout event. */
void stop_ack_timer(void);

/* Allow the network layer to cause a network_layer_ready event. */
void enable_network_layer(void);

/* Forbid the network layer from causing a network_layer_ready event. */
void disable_network_layer(void);

/* Macro inc is expanded in-line: Increment k circularly. */
#define inc(k) if (k < MAX_SEQ) k = k + 1; else k = 0

//1.c
#define MAX_SEQ 1  /* must be 1 for prot

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值