计算机交流中心制作发布
运输层
运输层的两个重要的协议:
(1)用户数据报协议UDP(User Datagram Protocol) (2)传输控制协议TCP(Transmission Control Protocol)
UDP在传送数据之前不需要先建立连接,远地主机的运输层在收到UDP报文后,不需要给出任何确认;
TCP则提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接;
一、用户数据报协议UDP
UDP协议是英文User Datagram Protocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。 包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年, 虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。
更多请访问:http://hi.baidu.com/comsince
1
计算机交流中心制作发布
1,UDP数据报的首部
伪首部:在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。
用户数据报UDP有两个字段:数据字段和首部字段。
首部字段很简单,只有8个字节,有四个字段组成,每个字段都是两个字节; (1)源端口 在需要对方回信时选用
(2)目的端口 在终点交付报文时必须要使用到; (3)长度 UDP报文长度 (4)检验和 实验解析:
练习二:UDP单播通信
在UDP单播通讯模式下,客户端和服务端之间建立一个单独的数据通道。 从一台服务端传送出的数据包只能由一个客户端接收。 众所周知,UDP协议是不可靠的,数据包可能在传输过程中丢失、重复、没有按照发送顺序到达, 而且作为UDP数据包,其大小还受限于数据包的最大上限。 实验环境:
更多请访问:http://hi.baidu.com/comsince
2
计算机交流中心制作发布
1. 主机B、C、D、E、F上启动“开始/程序/网络协议仿真教学系统 通用版/工具/UDP工具”,作为服务器端,监听端口设置为2483。
2. 主机C、E上启动协议分析器开始捕获数据。
3. 主机A上启动“开始/程序/网络协议仿真教学系统 通用版/工具/UDP工具”,作为客户端,以主机C的IP为目的IP地址,以2483为端口,填写数据并发送。 4. 察看主机B、C、D、E、F上的“UDP工具”接收的信息。 哪台主机上的“UDP工具”接收到主机A发送的UDP报文? 5. 察看主机C协议分析器上的UDP报文,并回答以下问题: UDP是基于连接的协议吗?阐述此特性的优缺点。
不是,优点:传输效率高,不需进行编号,不必进行连接建立和连接终止;缺点:使用UDP的进程不能向UDP发送数据流,也不能期望UDP将这个数据流分割成为许多不同的相关联的用户数据报。相反,每个请求必须足够小,使其能够装入到用户数据报中。 UDP报文交互中含有确认报文吗?阐述此特性的优缺点。
没有,优点:提高传输效率;缺点:在传输过程中可能有丢失、重复、乱序的现象。
6. 主机A上使用仿真编辑器向主机E发送UDP报文,其中:
“目的IP地址” 设置为主机E的IP地址。 “目的端口”设置为2483。“校验和”设置为0。
发送此报文,并回答以下问题:
主机E上的UDP通信程序是否接收到此数据包?UDP是否可以使用0作为校验和进行通信?
更多请访问:http://hi.baidu.com/comsince
3
计算机交流中心制作发布
主机E可以收到数据包。UDP可以使用0作为校验和进行通信。
7. 将第6步中编辑的数据包的校验和修改为一个错误值,并将其发送。
以上的校验和是错误的,我们将其发送,看看接受端捕获的情况;
8. 察看主机E协议分析器上捕获的数据,并回答以下问题: 简述UDP的差错处理能力。
除校验和外,UDP没有差错控制机制。这就表示发送端并不知道报文是丢失了还是重复地交付了。当接收端使用校验和并检测出差错时,就悄悄地将这个用户数据报丢掉。
练习三:UDP广播通信
在UDP广播通讯模式下,一个单独的数据包拷贝发送给网络上所有主机。 当不能明确具体的服务器,而又要求该服务时,UDP广播提供了传输不区分种类的消息的便捷方式。在多数情况下UDP广播仅仅作为本地网络通信形式。 受限的广播地址是255.255.255.255。该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。
1. 主机B、C、D、E、F上启动“开始/程序/网络协议仿真教学系统 通用版/工具/UDP工具”,作为服务器端,监听端口设为2483。
2. 主机B、C、D、E、F上启动协议分析器捕获数据,并设置过滤条件(提取UDP协议)
3. 主机A上启动“开始/程序/网络协议仿真教学系统 通用版/工具/UDP工具”,作为客户端,以255.255.255.255为目的地址,以2483为端口,填写数据并发送。 4. 察看主机B、C、D、E、F上的“UDP连接工具”接收的信息。 哪台主机接收到主机A发送的UDP报文?
主机B、C、D、E、F都收到了主机A发送的UDP报文。 5. 察看协议分析器上捕获的UDP报文,并回答以下问题:
更多请访问:http://hi.baidu.com/comsince
4
计算机交流中心制作发布
主机A发送的报文的目的MAC地址和目的IP地址的含义是什么?
目的MAC地址为FFFFFF-FFFFFF,是广播地址;
目的IP地址为255.255.255.255,是受限广播地址。
若将主机A发送的报文的目的MAC地址改为某一主机的MAC地址,结果会怎样?为什么?
主机A发送的报文的目的MAC地址为某一主机的MAC地址,而目的IP地址无论是某一主机的IP地址,还是255.255.255.255,结果都是只有目的MAC地址所对应的主机可收到主机A发送的报文。因为目的MAC地址对应主机才是真正接收数据的主机(前提是目的IP是有效的)。
根据实验中的数据显示,两个主机都可以接受到e发送的报文;
若将主机A发送的报文的目的IP地址改为某一主机的IP地址,结果会怎样?为什么?
更多请访问:http://hi.baidu.com/comsince
5
计算机交流中心制作发布
有两种情况:如果目的MAC为广播地址,则结果为所有主机都可接收主机A的报文;如果目的MAC为某一主机的MAC,则主机A发送的数据只能被该主机接收。
原因:目的MAC地址对应主机才是真正接收数据的主机(前提是目的IP是有效的)。
感悟:协议是为了实现具体理论而设计的,结合协议研究理论显然是一种很好的方法;
二、传输控制协议TCP TCP的主要特点:
(1)TCP是面向连接的运输层协议;
(2)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的 (3)TCP提供可靠交付服务 (4)TCP提供全双工通信; (5)面向字节流; 报文封装原理:
TCP报文段要先传送到IP层,加上IP首部后,再传送到数据链路层,在加上数据链路层的首部和尾部,才离开主机发送到物理链路;
TCP连接的端点叫套接字和插口:端口号拼接到IP地址即构成了套接字;
TCP报文的首部格式
更多请访问:http://hi.baidu.com/comsince
6
计算机交流中心制作发布
(1)源端口和目的端口
各占两个字节,分别写入源端口号和目的端口号; (2)序号
占4个字节,在一个TCP连接中传送的字节流中的每一个字节都安顺序编号。首部中的序号字段值则指本报文段所发送的数据的第一个字节的序号; (3)确认号
占四个字节,是期望收到下一个报文段的第一个数据字节的序号。 (4)数据偏移 占四位;
它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。这实际上是指TCP报文段的首度;
“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。 (6)保留
(7)紧急URG 当URG=1是,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
(8)确认ACK 仅当ACK=1时,确认号字段才有效。
TCP规定,在连接建立后所有传送的报文段都必须把ACK置1;
(9)推送PSH 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
(10)复位RST 表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接; (11)同步SYN 在连接建立时用来同步序号。 同步 SYN = 1 表示这是一个连接请求或连接接受报文。 (12)终止FIN 用来释放一个连接;
(13)窗口 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。
更多请访问:http://hi.baidu.com/comsince
7
计算机交流中心制作发布
(14)检验和
占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。 (15)紧急指针
占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。 (16)选项
TCP运输连接的管理
运输连接的建立有三个阶段:连接建立、数据传送、连接释放; 连接建立:
TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但要消耗掉一个序列号。
更多请访问:http://hi.baidu.com/comsince
8
计算机交流中心制作发布
注意理解确认号和序列号,确认号是收到对方的数据流要求对方下一个
更多请访问:http://hi.baidu.com/comsince
9
计算机交流中心制作发布
序列号,而序列号注明自己发送的数据流的编号。
连接的断开:
更多请访问:http://hi.baidu.com/comsince
10
计算机交流中心制作发布
练习一:察看TCP连接的建立和释放
1,主机B、C、D启动协议分析器进行数据捕获,并设置过滤条件(提取TCP协议)。
2,主机A启动仿真编辑器,进入TCP连接视图。在“服务器信息/IP地址”中填入主机C的IP地址;
更多请访问:http://hi.baidu.com/comsince
11
计算机交流中心制作发布
3,使用“端口扫描”获取主机C的TCP端口列表,在“服务器信息/端口”中填入主机C的一个TCP端口(大于1024);
以下是会话分析图:
4,点击“连接”按钮进行连接。
察看主机B、C、D捕获的数据,填写下表。
字段名称 Sequence Number Acknowledgement Number ACK(确认) SYN(同步) 报文1(75-74) 报文2(74-75) 报3(75-74) 1081719 0 0 1 3098451498 1081720 1 1 1081720 3098451499 1 0 当SYN=1时而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则在相应的报文段中使SYN=1和ACK=1,因此,SYN置为1就表示这是一个连接请求或连接接受报文;
报文1:连接请求报文段,初始化序号squence number seq=x ;
请求报文阶段;
更多请访问:http://hi.baidu.com/comsince
12
计算机交流中心制作发布
注意这里的报文的序列号为:1081719 这个报文的序列号服务端回复时发回的确认序号,可以知道服务端的确认号为:1081720,可以参见下面的报文;
报文2:服务器发回确认,初始化自身序列号Y,确认号Acknowledgement Number =X+1;
报文3:TCP客户端收到服务器确认后,还要向B给出确认,确认号Y+1,自己的序列号seq=x+1;
更多请访问:http://hi.baidu.com/comsince
13
计算机交流中心制作发布
Sequence Number 序列号:当前报文发送的报文的第一个字节的编号;
Acknowledgement Number 确认号:要求对方下一次发送的报文第一个字节的编号; o o
主机A断开与主机C的TCP连接。 察看主机B、C、D捕获的数据,填写下表。 字段名称 报文4(75-74) 报文5报文6报文7 (74-75) (75-74) 1081720 3098451499 1081721 1081721 Sequence Number 更多请访问:http://hi.baidu.com/comsince
14
计算机交流中心制作发布
Acknowledgement Number ACK FIN 模拟图;
3098451499 1 1 1081721 3098451499 3098451500 1 0 1 1 1 0
报文4:发出连接释放报文,FIN=1;
报文5:服务器收到报文后发出确认,确认号位x+1,自身报文序号为Y;这时TCP连接处于半关闭状态,即是A已经没有数据要发送了,但是B若发送数据,A仍要接收;
更多请访问:http://hi.baidu.com/comsince
15
计算机交流中心制作发布
报文6:客户端收到连接释放报文;
报文7:客户端发回确认;
因此我们总能看出,对方报文中的确认号就是主机即将发送出去的序列号(Sequence Number)
更多请访问:http://hi.baidu.com/comsince
16
计算机交流中心制作发布
更多请访问:http://hi.baidu.com/comsince
17