tcp协议实验

tcp协议实验

ID:33286119

大小:34.57 KB

页数:11页

时间:2019-02-23

tcp协议实验_第1页
tcp协议实验_第2页
tcp协议实验_第3页
tcp协议实验_第4页
tcp协议实验_第5页
资源描述:

《tcp协议实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.网络课第四次上机实验报告------TCP协议实验l实验内容实验内容主要包括:设计保存TCP连接相关信息的数据结构(TCB);TCP协议的接收处理和封装发送;TCP协议提供的Socket函数接口。l实验过程l设计保存TCP连接相关信息的数据结构(TCB)用数据结构TCB为每一个TCP连接维护socketfd,srcAddr,dstAddr,srcPort,dstPort,seq,ack,windowSize,state这些状态信息。以链表形式组织多个连接,nextTcb指向下一个连接的数据结构。lTCP分组接收函数stud_tcp_input(

2、)首先,检查校验和;然后通过字节序转换获取相应的信息,检查序列号。如果序列号不正确,则调用tcp_DiscardPkt;最后将报文交由输入有限状态机处理,有限状态机对报文进行处理,转换状态。根据当前的状态并调用stud_tcp_output函数完成tcp建连、数据传递时返回ACK、tcp断连等工作lTCP分组发送函数stud_tcp_output()判断需要发送的报文类型,根据报的类型对包中的相应字段进行设置,判断是否可以发送(发送窗口不为0)。构造TCP数据报文并发送。填写TCP报文各字段的内容和数据,转换字节序,计算校验和,然后调用发送流程的

3、下层接口函数sendIpPkt()发送。lstud_tcp_socket()函数...分配相应的socketfd并且新建TCB表项,并对成员变量进行初始化lstud_tcp_connect()函数设定目的IPv4地址和端口,源IPv4地址和端口;初始化TCB结构中的相关变量;设定TCB中的输入状态为SYN-SENT,及其它相关变量,准备发送SYN报文;调用发送流程的下层接口函数stud_tcp_output()发送SYN报文(发送类型为PACKET_TYPE_SYN);等待“三次握手”完成后返回,建立连接成功;或者出错返回。lstud_tcp_s

4、end()函数判断是否处于ESTABLISHED状态;将应用层协议的数据拷贝到TCB的输入缓冲区;调用stud_tcp_output()发送TCP的数据报文(发送类型为PACKET_TYPE_DATA);同时等待ACK以实现停等式协议lstud_tcp_recv()函数判断是否处于ESTABLISHED状态;从TCB的输入缓冲区读出数据;将数据交给应用层协议。lstud_tcp_close()函数在正常情况下(ESTABLISHED状态),进行相应状态转换,非正常情况下(SYN-SENT状态),直接删除TCB结构后退出;调用发送流程下层接口函数s

5、tud_tcp_output()发送FIN报文(发送类型为PACKET_TYPE_FIN);等待回应的ACK报文,收到后成功返回,或者出错返回;删除相应的TCB表项。l实验总结通过本次实验,加深了对TCP协议的原理和设计实现的机制的了解,对TCP协议有了更具体的认识,对概论课的学习有很大的帮助!附:上机代码(注释)#include"sysInclude.h"externvoidtcp_DiscardPkt(char*pBuffer,inttype);externvoidtcp_sendReport(inttype);externvoidtcp_s

6、endIpPkt(unsignedchar*pData,UINT16len,unsignedintsrcAddr,unsignedintdstAddr,UINT8ttl);externintwaitIpPacket(char*pBuffer,inttimeout);externunsignedintgetIpv4Address();externunsignedintgetServerIpv4Address();#defineBUFFER_SIZE1024...#defineTIMEOUT5enumstatus{CLOSED,SYN_SENT,ES

7、TABLISHED,FIN_WAIT_1,FIN_WAIT_2,TIME_WAIT};//状态intgSrcPort=2007;intgDstPort=2006;intgSeqNum=1;intgAckNum=0;structTCB{intsocketfd;UINT32srcAddr;UINT32dstAddr;UINT16srcPort;UINT16dstPort;UINT32seq;UINT32ack;UINT16windowSize;UINT8state;TCB*nextTcb;TCB(){//用于TCP报文接收发送流程socketfd=0

8、;srcAddr=getIpv4Address();dstAddr=getServerIpv4Address();srcPort=gSr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。