聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 计算机网络复习整理(四章九章)

计算机网络复习整理(四章九章)

时间:2019-09-16 22:05:41    下载该word文档

4 网络层:IP路由原理

4.1 路由、路由表与静态路由

1. 路由:分组在因特网上从一台计算机传输到另一台计算机的实际路径。

2. 路由表:因特网上为每个路由器都存储了一张表,称为路由表

3. 路由表通常包含以下五个属性

目标网络的IP地址:一个32位数

目标网络的子网掩码:一个32位数

下一站IP地址:一个32位数

发送接口名字:一个设备名字。在路由器上,每个网络接口都是一个有唯一名称的设备,发送接口指示IP分组的下一站IP地址,应该从本机的哪一个接口发送出去。注意接口名字只是对本路由有意义,没有任何全局含义。

本路由器到达目标网络的路由度量:这个属性反映该路由的优劣,属性值随路由协议不同而不同。

要求掌握根据路由表画出IP网络的布局 和根据网络IP的分配写出某个路由器的路由表:

1.目标IP:要到达的目标网络,根据目标IP与子网掩码相与(& : a&1=a,a&0=0)

2.子网掩码:如:202.202.0.0/16其中16表示子网掩码的位数,即255.255.0.0

3.下一站IP地址:直接相连为C,不直接相连为下一个路由器与此网段相连的接口的IP

4.发送接口:此路由器发送的端口的名字

5.距离:直接相连为0,否则经过的路由器的个数即为到达该网段的距离。

6.默认路由项:当知道此网段与其他网络相接处RXIP才可计算,默认路由项的目标网络地址为:0.0.0.0;子网掩码:0.0.0.0 下一站IP,发送接口:与到达RX项的下一站IP同,距离:未知。

R1的路由表:

R2的路由表:

R3的路由表

4.2 路由器与IP分组转发算法

4.3 动态路由的基本概念

1.动态路由表 依靠各个路由器上运行的特殊进程在路由器-路由器之间不断的交换路由信息来推断,学习出网络的全局路由。

2.

7 传输层:UDPTCP协议

7.1 传输层概述

7.1.1 端口的概述

传输层将IP分组中的信息提交给目的主机的进程。传输层引入端口的概念,通过端口来标识一个主机上的进程,在传输层协议的PDU格式当中,都有目的端口这样一个域,传输层会根据这个域的不同值把PDU提交给上层的不同进程。

7.1.2 UDPTCP

UDP:无连接的,在通信开始或结束时不需要维护与连接有关的一些参数。UDP不保证数据的可靠传输,UDP仅将数据传输一次,如果在传输过程中出错或丢失,UDP不会重传,而TCP采用了检错和应答机制,如果发送方收不到来自接收方的应答,则发送方会进行重传。

UDP使用于对实时性要求很高但却允许一代错误的应用,UDP可以进行组播。TCP则适用于需要保证可靠性的应用。

7.2 UDP

7.2.1 UDP概述

UDPIP层之上所增加的功能仅仅是把IP层所提供的主机到主机之间通信延伸为进程到进程的通信。

7.2.2 UDP报文格式

源端口号:目的主机的UDP端口号,占两个字节,取值范围:0~65535

报文长度:整个UDP报文长度,占2个字节,取值范围:8~65535;至少8字节,UDP首部占8字节

UDP伪首部:源IP地址(32b),目的IP地址(32b)UDP协议号(为17(8b)以及UDP报文长度(16b),其中前三个信息从IP中获得。伪首部是为了计算校验和而被考虑的一段信息,不存在UDP报文中。

校验和:2字节,利用Internet Checksum算法得到,该算法输入整个UDP报文和伪首部,具体如下:

将输入划分为一系列长度为16bb :比特,B:字节)的正数。

按反码表示法的加法规则及时这些整数的和。

将按位取反,即得长度为16b的校验码

7.2.3 多路复用与分解

多路复用:不同进程将数据静传输层交付给网络层来传输的过程。

多路分解:由网络层经传输层向上层不同进程提交数据的过程。

7.2.4 UDP应用

多媒体通信:对实时性要求很高,但允许出现一定的差错。有时为了避免网络传输所造成不均匀延时,在声音。图像的每个分组都加一个时间戳。后来形成了一个协议来提供时间戳,这个协议就是RTP协议。

IP组播:IP层提供了组播功能,该功能使用的目的IP地址是DIP地址,其范围是224.0.0.0~239.255.255.255。只有UDP能完成IP组播,因为UDP是无连接的传输层通信方式,而TCP是面向连接的传输层协议,只能够提供一对一的服务。

具有重复行为的协议:要求协议的行为有较低的开销,而且不需要严格的保障协议的可靠性。

7.3 可靠协议的一般实现方法

实现可靠协议的一种最常用的解决方案是APQ机制。

停等协议:发送一个数据分组后就等待一个等待应答分组,收到应答分组后,才会发送下一个数据分组。

滑动窗口协议:无需等待应答就可以发送下一个数据分组,用滑动窗口来限制允许发送的、但不需要等待应答的时间分组的数量。下面介绍两个滑动窗口协议:

回退N:接收方只按顺序解释数据分组,即接收方会抛弃出错分组后面所有的分组(尽管这些分组可能正确到达)。当某个分组发生错误时,要重传该分组后面的所有分组。此处接收窗口为1

选择重传:让接收方接收并且应答每一个正确收到的分组,这样发送方只需超时重传没有收到应答的分组就可以了。此协议要求接收窗口大于1

7.4 TCP协议

7.4.1 TCP概述TCP协议具有面向连接、可靠以及提供流量控制和拥塞控制等特性。

7.4.2 TCP段格式

/目的端口号:源或目的IP端口号,各占用2个字节。

序列号:接收方所传输的TCP负载中的第一个字节的序列号,占用4字节,在TCP传输超过4G后序列号被重复使用。

应答号:接收方期待收到的下一个字节的序列号。占用4字节。

首部长度:段首部长度,占用4比特。可表示的最大数位151111),每个代表4字节。所以TCP首部最大可为4*15=60字节。

标志比特:

URG:为‘1’数模该段中含有紧急数据

ACK:为‘1’时说明应答号有效,除申请建立连接之外,每次都为‘1’。

PSH:为‘1’时,要求接收方TCP实体将该段中的负载立即提交给应用层。

RST:为‘1’时,发送方要求重置连接。

SYN:TCP建立连接时使用,为‘1’时,表示要求建立连接,后均为‘0’。

FIN:TCP连接关闭的时候使用,为‘1’时,说明发送方要求单方面断开连接,即发送数据完成。

窗口大小:发送方搜剩余的介绍缓冲区的大小。

校验和:与UDP类似。

建立连接:(三次握手)

数据传输:


关闭连接:

看一道题:

一个TCP连接由哪几个属性完全标识?

: IP地址、源IP端口号、目标IP地址、目标IP端口号

TCP客户端当前已被确认的最高序列号是20000, 服务器端当前已被确认的最高序列号是3000, 画出关闭从服务器到客户端方向的TCP连接的过程, 并在图上标出正确的序列号和确认号。

答:

客户端 服务器

FIN,起始序列号=3001

ACK, 确认号=3002

(错一个标记减1分,关闭的方向错误减2分)

3)按从低到高的顺序指出OSI七层参考模型包含哪七层。

答:物理层、数据链路层、网络层、传输层、会话层(或会晤层)、表示层、应用层

(4) 就以上七层中的任意五层, 分别举出一个实际协议的例子。

答:物理层:任何一种调制解调体制

数据链路层:ALOHACSMACSMA/CDTDMAFDMACDMAFDDI等之一

网络层:ARPIPICMPRIPOSPFBGP等之一

传输层:TCPUDP之一

会话层:NetBIOS

表示层:XMLHTMLMIMEXDR等之一

应用层:FTPHTTPDNSODBCRPC等之一

(每个正确的例子1分)


填空题(每空2.5分,共15分)以下是一个TCP传输过程, 假设每次接收方都全部接受到达的数据, 请正确填写图中括号中的数字。

A B

200字节数据, 序列号=10240

ACK, 确认号= ( 10440 )

500字节数据, 序列号= ( 10440 )

ACK, 确认号= ( 10940 )

4450字节数据, 序列号=90000

ACK, 确认号= ( 94450 )

400字节数据, 序列号= ( 94450 )

ACK, 确认序列号= ( 94850 )

9 网络编程概要

针对传输服务抽象出了一个普遍适用的,统一的抽象模型是基于socket的,-端的字节流

socket API 函数:

int bind(int sock , struct sockaddr* localaddr, int addrlen)

socket对象指定地址即传输层端口号,这个函数对服务器程序最有用。

int connect(int sock , struct sockaddr* remoteaddr, int addrlen)

建立描述sock所标识的本地socket对象到remoteaddr所指示的远程对象之间的连接。主要被用户进程调用。

int listen(int sock , int queuelen)

listen使TCP-socket对象sock准备接收到达的连接请求。

int accept(int sock , struct sockaddr* remoteaddr, int* paddrlen)

等待完整的连接建立起来,这是任何一个基于TCP的服务器进程都必须调用的,调用accept的函数的进程或线程进入睡眠,直到有TCP连接请求到达并且正确建立连接后函数才被唤起,此时TCP的三次握手已完成,把新建立起来的连接返回,把原来的socket复制。

int read(int sock, char* buff, int size)

int write(int sock, char* buff, int size)

这两个函数是阻塞式的,即他们使用进程或线程知道其操作完成后返回。在UDPTCP上都可以调用这两个函数,但是UDP-socket对象上操作系统在发送后便使write正常返回,否则write返回错误,只有当TCP字节总数超过该临界水平read函数才返回,否则一直阻塞。

int close(int sock)

在调用该函数后,socket对象不再可用,即不能再在socket对象上调用read/write函数,否则返回错误。

int shutdown(int sock , int flags)

这是个比close更灵活的函数,它关闭本地的socket对象到对方socket对象的TCP连接,此时write函数不可用,但read函数可以调用。

int setsockopt(int sock, int leve, int iption, char* optlen)

设置大量的socket对象设置选项。

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服