- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TCP报头协议实验
视频信息处理与传输
实验报告
报告名称 TCP协议 专业班级 电子1002班 学生姓名 学号 指导教师
实验三 TCP
实验目的
1、认识TCP协议的相关内容;
2、掌握TCP模块的C语言编程;
实验内容
创建一个头文件,用C语言实现TCP模块所需的所有常量;
完成TCP首部的说明; 最大报文段长度MSS(Maximum Segment Size)是TCP报文段中的数据字段的最大长度。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。” 窗口扩大因子,用于长肥管道。 时间戳,可用于测量往返时延RTT。
完成TCP报文段的说明;
图1 TCP报文结构
源端口和目的端口字段——各占2字节。端口是传输层与应用层的服务接口。传输层的复用和分用功能都要通过端口才能实现。
序号字段——占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
数据偏移——占4bit,它指出TCP报文段的数据起始处距离 CP报文段的起始处有多远。“数据偏移”的单位不是字节而是32bit字(4字节为计算单位)。
保留字段——占6bit,保留为今后使用,但目前应置为0。
紧急比特URG——当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
确认比特ACK——只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。
复位比特RST(Reset) —— 当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
同步比特SYN——同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。
终止比特FIN(FINal)——用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口字段——占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
检验和——占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。
紧急指针字段——占16bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
选项字段——长度可变。TCP首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。
填充字段——这是为了使整个首部长度是4字节的整数倍。
用C语言写出TCP有限状态机的实现函数。
TCP从建立到终止整个过程中,存在11中状态,TCP的有限状态机给出了TCP连接从一个状态转换到另一个状态的规则。
图2 TCP有限状态机
实验过程
1、TCP头文件:
#ifndef _TCP_H
#define _TCP_H
#ifndef _GLOBAL_H
#include global.h
#endif
#ifndef _MBUF_H
#include mbuf.h
#endif
#ifndef _IFACE_H
#include iface.h
#endif
#ifndef _INTERNET_H
#include internet.h
#endif
#ifndef _IP_H
#include ip.h
#endif
#ifndef _NETUSER_H
#include netuser.h
#endif
#ifndef _TIMER_H
#include timer.h
#endif
#define DEF_MSS 512 /* Default maximum segment size */
#define DEF_WND 2048 /* Default receiver window */
#define RTTCACHE 16 /* # of TCP round-trip-time cache entries */
#define DEF_RTT 5000 /* Initial guess at round trip time (5 sec) */
#define MSL2 30 /* Guess at two maximum-segment lifetimes */
#define MIN_RTO 500L /* Minimum timeout, milliseconds */
#define TCP_HDR_PAD 70 /* m
文档评论(0)