基于TCP的文件传输实验报告

基于TCP的文件传输实验报告
基于TCP的文件传输实验报告

综合课程设计报告

基于TCP协议的文件传输系统

学生姓名:

指导教师:

所在系:

所学专业:

年级:

2011年6月

目录

摘要 (2)

1、实验的相关知识 (3)

1.1、通信的模式 (3)

1.1.1、传输的可靠性 (3)

1.2.1、TCP/IP的网络体系结构 (3)

1.2.2、TCP/IP网络协议 (4)

1.2.3、TCP——传输控制协议 (4)

2、winsock控件 (5)

2.1.1、winsock的重要属性、方法和事件 (5)

2.1.2、winsock控件通信的工作原理 (7)

3、程序设计与实现 (8)

3.1、程序设计 (8)

3.1.1、总体设计 (8)

3.1.2、模块设计 (9)

3.2、程序实现 (10)

3.2.1、工作原理 (10)

3.2.2、服务器端主程序 (11)

3.2.3、客户端主程序 (14)

4、实验总结 (17)

参考文献...............................................................17. 成绩评定. (18)

基于TCP协议的文件传输系统

摘要

随着网络的普及,网络编程显得尤其重要。本实验使用Winsock控件实现两台计算机间的文件传输,描述了Winsock控件的使用方法及有关文件传输的算法。

随着计算机网络的迅速发展,人们的生活越来越离不开网络,如今网络编程已成为计算机发展的热点,而在众多的网络通信中,又以TCP/IP协议最为流行。本文讨论的Winsock控件,提供了访问TCP/IP网络的捷径,使用它可以不必了解TCP/IP的细节和调用Winsock API,只要设置好相应的属性和触发事件后的处理,就可以实现计算机之间的数据通信,进行文件传输了。同时为了便于传输文件过程中的中断现象,在实验时应该充分考虑断点续传问题,即中断文件传输后已经传输的文件不丢失,等到再传时,能继续接着传送。

关键词:TCP/IP协议,Winsock控件,网络编程,文件传输,断点续传。

1、实验的相关知识

1.1通信的模式

由于是实现点对点的文件传输,因此在程序中我们使用的是C/S的模式来实现通信。对于C/S 的模式,即分为客户端和服务端。服务端用来接收客户端的连接,实现两端之间互相传输文件。采用C/S的模式可以更好的体现程序的功能设计思想,充分调用在LAN中的server和client两方面的处理能力,极大的减少网络上的信息流通量。C/S体系结构有可能提供一种开放式的、易伸缩扩展的分布式计算机环境,并保护硬件等投资。

1.1.1传输的可靠性

要想实现文件的可靠性传输,可以使用流式套接字。因为流式套接字提供面向连接的、无差错的、发送顺序一致的、包长度不限和非重复的网络信息的传输,能提供更好的可靠性。而对于数据报套接字提供的是无连接的服务,以独立的数据报进行传输,不保证顺序性、可靠性和无重复性,相比之下用流式套接字能提供更好的的可靠性传输。

1、2、1TCP/IP的网络体系结构

TCP/IP协议采用层次体系结构,如图1所示,从图中可以看出,每一层在逻辑上都与通信端的对应层相连接。图中所示的服务器程序持续监听通信客户端;客户端仅周期性地与服务器相连接以交换数据,其中TCP协议层提供相当于OSI参考模型中传输层的服务,为收、发端应用程序提供通信;IP协议层负责提供统一的数据报;链路层主要功能是收、发IP层的IP数据报;TCP/IP 之上是该协议提供的各种服务,而底层网络可以是不同的物理网络,如Ethernet、Token Ring、X.25公共分组交换网等。

图1 TCP/IP协议层模型(LAN)

1、2、2 TCP/IP网络协议

协议是对等的网络实体之间通信的规则,可以简单地理解为网络上各计算机彼此交流的一种“语言”。网络通信协议设计的基本原则是层次化,层和协议的集合被称为网络体系结构。相邻层之间的接口定义了下层向上层提供的基本操作和服务,下层向上层提供的服务分两种形式:面向连接的服务和无连接的服务。

计算机网络中已经形成的网络体系结构主要有两个:OSI参考模型和TCP/IP参考模型。TCP/IP 参考模型是因特网(Internet)的基础。和OSI的7层协议相比,TCP/IP协议只有4个层次。通常说的TCP/IP是一组协议的总称,TCP/IP实际上是一个协议族,包括100多个相互关联的协议,其中IP(Internet Protocol, 网际协议)是网络层最主要的协议;TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议是传输层中最主要的协议),一般认为IP、TCP、UDP是最根本的三种协议,是其他协议的基础。

1.2.3 TCP——传输控制协议

面向连接的通信可以使用可靠通信,在这时候,第四层协议发送数据接收方的确认,如果未收到数据或者数据被损坏,则请求重新传输。TCP协议就使用这种可靠通信。使用TCP协议的应用层协议包括HTTP、FTP、SMTP和Telnet等。

TCP要求在发送数据之前必须打开连接。服务器应用程序必须执行一个称作被动打开

(passive open)的操作,以利用一个已知的端口号创建一个链接,这是,服务器并不是对网络进行呼叫,而是侦听并等待引入的请求。客户应用程序必须执行一个主动打开(active open),为此,它向服务器应用程序发送一个同步序列号(SYN)以标识连接。客户应用程序可以将动态端口号作为本地端口使用。服务器必须向客户发送一个确认(ACK)以及服务器的序列号(SYN)。随后,客户回复一个ACK,这样就建立了链接。

现在可以发送和接收消息了。接收消息后,总是返回ACK消息。如果在收到ACK之前发送方已经超时,则消息将被放到重发队列中以再次发送。

由于它的握手机制,所以TCP协议比较复杂并且费时,但此协议在处理数据时对数据包的传送有保障,从而使得在应用程序协议中不需要再包括该功能。

2. Winsock控件

Winsock即Windows Sockets规范的简称,是目前最流行的网络通信应用程序接口之一。所谓Socket,通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递。Winsock控件工作在传输层上,在这一层上,目前主要流行的协议包括TCP和UDP两种:TCP协议适用于那些对于数据的可靠性要求比较高的情况,目前大多数的网络应用层协议都是基于TCP协议的(例如常用的HTTP、FTP、SMTP、POP3等协议);UDP协议适用于对数据可靠性要求不高而对速度要求较高的情况,这里主要包括一些需要大流量的(例如Real公司的RTSP协议,腾讯公司的QQ协议等)。

2.1.1 Winsock控件重要属性、方法和事件

(1) 属性

Protocol:

通过Protocol属性可以设置WinSock控件连接远程计算机使用的协议。可选的协议是TCP 和UDP,对应的VB中常量分别是sckTCPProtocol和sckUDPProtocol,Winsock控件默认协议是TCP。注意:虽然可以在运行时设置协议,但必须在连接未建立或断开连接后。

SocketHandle:

SocketHandle返回当前socket连接的句柄,这是只读属性。

RemoteHostIP:

返回远程计算机的IP地址。在客户端,当使用了控件的Connect方法后,远程计算机的IP 地址就赋给了RemoteHostIP属性,而在服务器端,当ConnectRequest事件后,远程计算机(客户端)的IP地址就赋给了这个属性。如果使用的是UDP协议那么当DataArrival事件后,发送UDP报文的计算机的IP才赋给了这个属性。

ByteReceived:

返回当前接收缓冲区中的字节数。

State:

用于返回当前WinSock控件的状态。如表2-1所示。

表1-1 返回WinSock控件当前的状态

常数值描述

sckClosed 0 缺省值,关闭

SckOpen 1 打开

SckListening 2 侦听

sckConnectionPen

3 连接挂起

ding

sckResolvingHost 4 识别主机

sckHostResolved 5 已识别主机

sckConnecting 6 正在连接

sckConnected 7 已连接

sckClosing 8 同级人员正在关闭

连接

sckError 9 错误

(2) 方法

Bind:

用Bind方法可以把一个端口号固定为本控件使用,使得别的应用程序

能再使用这个端口。

Listen:

只在使用TCP协议时有用。它将应用程序置于监听检测状态。

Connect:

当本地计算机希望和远程计算机建立连接时,就可以调用Connect方法。

Accept:

当服务器接收到客户端的连接请求后,服务器有权决定是否接受客户端的

请求。

SendData:

当连接建立后,要发送数据就可以调用SendData方法,该方法只有一个参

数,就是要发送的数据。

GetData:

当本地计算机接收到远程计算机的数据时,数据存放在缓冲区中,要从缓

冲区中取出数据,可以使用GetData方法。

PeekData:

和GetData方法类似,但PeekData在取得数据后并不把缓冲区清空。

(3) 事件

ConnectRequest:

当本地计算机接收到远程计算机发送的连接请求时,控件的ConnectRequest事件将会被触发。

SendProgress:

当一端的计算机正在向另一端的计算机发送数据时,SendProgress事件将

被触发。SendProgress事件记录了当前状态下已发送的字节数和剩余字节数。

SendComplete:

当所有数据发送完成时,被触发。

DataArrival:

当建立连接后,接受到了新数据就会触发这个事件。注意:如果在接受到

新数据前,缓冲区中非空,就不会触发这个事件。

Error:

当在工作中发生任何错误都会触发这个事件。

2.1.2 Winsock控件通信的工作原理

Winsock控件是基于Socket规范创建的,所以其通信的实质是对Socket接口进行数据的读写操作。如果两个应用程序需要通信,它们可以通过使用Socket类来建立套接字连接,可以将这个过程想象为一次电话呼叫过程:呼叫者通过拨号与被呼叫者连接,当电话接通时,双方都可以自由通话了,只不过这里的呼叫者被称为“客户”,被呼叫者则称为“服务器”,而号码则为“IP 地址+端口”,但在建立连接之前,必须由“客户”发出呼叫,且此时的“服务器”正在监听。因

此,基于TCP/IP协议的通信,需要分别建立客户端应用程序和服务器端应用程序。其大致流程如图1所示:

图1 Winsock工作原理端口号被规定在0~65535范围内的某一个整数,其中0~1023被预先定义的服务器通信所占用(如telnet占用23,http占用端口80),所以最好使用1024~65535这些端口中的某一个,以

免发生端口冲突。

3程序设计与实现

3.1 程序设计

3.1.1总体设计

本程序的文件传输系统的实现应包含服务端模块、客户端模块等几个部分,整个程序采用VB 完成。程序使用流式套接字,基于C/S模型。在设计时设计客户端和服务端两个界面中,服务器用于发送文件,客户端用于接收文件。服务器和客户机的基本流程如图2所示。

在通信的时候主要可以分为两个部分,一个部分是控制信息的传输部分,而另一个部分就是文件的传输部分。传送的控制信息可以包含发送文件的请求,文件的名称、大小等,由于这方面的数据量比较小,因此采用了VB所提供的WINSocket类的串行化技术来实现。对于文件的传输,由于数据量相对来说比较大,所以用两个线程来实现文件的传输,一个线程用于发送,一个线程用于接收。

图2 服务器和客户机的基本流程

3.1.2模块设计

(1)服务端模块

客户端要能实现的都功能应该有:能查找要传送的文件;能够侦听连接;能够与客户端建立连接;能共发送数据。客户端要与服务器端进行通信,首先,必须知道服务器端的域名或IP 地址

创建服务器窗口 将sockets 与本地IP 和相应的端口绑

Listen(),监听来自客户端的连接

创建客户端窗口

Connect(),将套接字与服务器相连

接收客户端的连接请求

是否有建立连接? 为客户端建立连接 否

不为客户端建立连接,显示错误信息

,在套接字上收发信息 在套接字上收发信息

是否有连接到服务器?

显示错误信息

服务器 客户机

(RemoteHost属性),就像要和某人打电话前,必须知道对方的电话号码;其次,还必须和服务器端约定相同的端口(RemotePort属性),用于数据的输入和输出;最后,调用Connect方法与服务器端建立连接。服务器端应设置一个监听端口(LocalPort属性),端口应与客户端的端口相同,同时调用Listen方法时刻监听客户端的连接请求(ConnectionRequest事件);当接收到客户端的连接请求时,可调用ConnectionRequest事件的Accept方法,这样与客户端的连接就建立了。

(2)客户端模块

客户端能实现的功能有:能够与服务器建立连接,能够接受服务器传来的数据;能够保存所接受的数据等。客户端和服务器端成功建立连接后,任何一方都可以自由的发送数据(SendData方法)和接收数据(GetData方法),这些方法都在DataArrival事件中。

3.2 程序的实现

3.2.1 工作原理

本实验将实现的文件传输只有一个发送方和一个接收方,这是最基本的文件传输方式,运用的原理也比较简单:发送方先获取待传输文件的基本信息,主要是文件名及文件长度(用于创建数据缓冲区);然后,将其发送给接收方;接着,建立和文件一样大小的数据缓冲区,并将文件读入;最后,将数据缓冲区中的数据发送给接收方。与此同时,当接收方接收到文件名和文件长度之后,就为其创建新的文件和数据缓冲区;然后,接收传输的文件数据,并将其放在数据缓冲区中;最后,依次将数据缓冲区的数据写入新创建的文件中。这样便完成了不同计算机之间的文件传输。

然而,当需要传送的数据比较大时,就不能像以上介绍的那样,直接将整个文件放入数据缓冲区中了,我们的内存是无法忍受用一个几百MB甚至上GB的空间去存储那些临时数据的。这时可以将文件按照一定的大小,分成若干个数据包(远小于内存的容量)。首先,设置数据包的大小(如64K),根据文件的基本信息(主要文件的长度),计算出总共需要的数据包数;然后,依次读取同数据包一样大小的数据到数据缓冲区中;接着,将数据缓冲区中的数据,发送到指定的计算机上;同时在另一端,建立一个数据缓冲区,缓冲区的大小要根据接收到的数据来确定,依次接收客户端传输过来的数据包,并将数据缓冲区的数据写入相应的文件中,这样就很容易实

现大文件的传输了。

但还有些时候,当我们在传输文件的过程中,突然被意外中断,导致网络连接中断。这时,我们又不得不再次将文件重新传输一次,显然这浪费了不少的时间,那怎样解决这类问题呢?这就涉及到"断点续传"了,即我们可以接着上次未传输完的地方,继续传输文件。

"断点续传"的方法有多种,比较常见的一种是通过设置一个临时文件,记录已经传输的文件信息,当传输文件中断时,可以通过临时文件的数据来推算出未传输的数据;然后,在每次进行文件传输前,都先查找文件是否有临时文件,并将此信息传输给服务器端,于是服务器端可据此再接着进行传输剩余的数据,当文件全部传输完毕时,删除临时文件,这样就实现了"断点续传"。

3.2.2服务器端主程序:

“通用”中声明如下:

Option Base 1

Const PACKSIZE As Long = 65536 '每包大小为64K

Dim filepath As String, filename As String, filelength As Long '存储文件信息

Dim data() As Byte, pack As Long, send As Long '数据缓冲区,文件包数,已传输的数据“发送文件”按钮事件代码:

Private Sub sendfile_Click()

StatusBar1.SimpleText = "向客户端发送数据…"

'计算需要传输文件的包数

pack = (filelength - send) \ PACKSIZE

If ((filelength - send) Mod PACKSIZE) <> 0 Then pack = pack + 1

If pack = 0 Then pack = pack + 1

'传输文件

Open filepath For Binary As #1

For i = 1 To pack

'如果只有一包

If pack = 1 Then

ReDim data(filelength - send)

'读取数据

For j = send + 1 To filelength

Get #1, j, data(j - send)

Next

'更新已传输文件的数据

send = filelength

'发送文件数据

Winsock1.SendData data

'如果是最后一包

ElseIf i + 1 = pack Then

'读取最后一包的数据

ReDim data(filelength - send)

For j = 1 To filelength - send

Get #1, send + j, data(j)

Next

'发送文件数据

Winsock1.SendData data

'更新已传输文件的数据

send = filelength

Exit For

Else

'将文件数据放到数据缓冲区

ReDim data(PACKSIZE)

For j = 1 To PACKSIZE

Get #1, send + j, data(j)

Next

'发送文件数据

Winsock1.SendData data

'更新已传输文件的数据

send = send + PACKSIZE

End If

ProgressBar1.Value = Int((send / filelength) * 100)

Next

ProgressBar1.Value = Int((send / filelength) * 100)

Close #1

End Sub

'返回客户端已接收文件的数据

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Winsock1.GetData send, vbLong

End Sub

"开启"按钮事件的代码:

Private Sub start_Click()

Winsock1.Protocol = sckTCPProtocol '以TCP方式进行通信

'设置服务器通信程序的端口号,这里笔者使用的端口是8080

Winsock1.LocalPort = Val(portText.Text)

Winsock1.Listen '等待客户端连接请求

'状态栏显示提示文字

StatusBar1.SimpleText = "服务器已工作,准备接受请求…"

End Sub

"客户端请求连接"事件代码:

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

'如果当前连接是打开的,则关闭

If Winsock1.State <> 0 Then

Winsock1.Close

End If

Winsock1.Accept requestID '接受客户请求

StatusBar1.SimpleText = "有客户请求,建立连接。"

End Sub

Private Sub Dir1_Change()

File1.Pattern = ("*.*")

File1.Path = Dir1.Path

End Sub

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

Private Sub file1_Click()

Label2.Caption = "你选择的是: " & Dir1.List(-1) & "\" & File1.filename filepath = File1.filename

filelength = FileLen(Dir1.List(-1) & "\" & File1.filename)

End Sub

运行效果如图3所示:

图3 服务器端断点续传的运行效果

3.2.3客户端主程序

Option Base 1

Dim flag As Boolean '设置开关

Dim filename As String, filelength As Long '存储文件信息

Dim data() As Byte, received As Long '声明数据缓冲区和已接收的数据'初始化开关

Private Sub Form_Load()

flag = True

End Sub

"连接"按钮事件的代码:

Private Sub connect_Click()

Winsock1.Protocol = sckTCPProtocol '以TCP方式进行通信

'设置远程服务器IP地址,为方便调试笔者使用的是自身的IP地址Winsock1.RemoteHost = hostText.Text

'设置远程服务器通信程序端口号,与服务器端相同

Winsock1.RemotePort = Val(portText.Text)

Winsock1.connect '与服务器端建立连接

End Sub

"数据到达"事件的代码:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) StatusBar1.SimpleText = "正在接收服务器的数据..."

If flag = True Then

'分别接收传输文件的文件名、文件长度

Winsock1.GetData filename, vbString, bytesTotal - 4 Winsock1.GetData filelength, vbLong

'为传输文件设置临时文件

tempfile = filename + ".td"

'返回已接收的数据

Open “d:\”+ filename For Binary As #1

Open tempfile For Binary As #2

If LOF(2) > 0 Then

Input #2, received

Winsock1.SendData received

End If

Close #2

flag = False

Else

Open tempfile For Output As #2

'建立数据缓冲区

ReDim data(bytesTotal)

'接收服务器端传输的数据

Winsock1.GetData data, vbArray + vbByte

'将接收的数据写入文件

For j = received + 1 To received + bytesTotal

Put #1, j, data(j - received - 1)

Next

'更新已接收的数据

received = received + bytesTotal

'更新临时文件

Write #2, received

ProgressBar1.Value = Int((received / filelength) * 100) '传输完毕

If ProgressBar1.Value >= 100 Then

StatusBar1.SimpleText = "数据传输完毕!"

Close #2

'删除临时文件

Kill (tempfile)

Close #1

End If

Close #2

End If

End Sub

运行效果如图4所示:

图4 客户端断点续传的效果

4、总结

整个设计到目前为止已基本完成,从选择这个设计课题开始,对winsock控件一无所知到现在能够独立完成本次设计,从中获益非浅。在设计中碰到了很多所未预料的棘手的难题,通过图书馆查阅资料,上网搜索相关知识以及通过VBQQ群里的朋友的帮助,逐个逐个的解决难题。同时,对自己程序设计的思维和问题解决能力也是一个很大的提高。

本课题设计了基于VB的网络数据传输的C/S模型以及控制端和受控端模型。其中Winsock 控件、文件夹的传输、添加客户端,是设计的重点和难点。每个模块都通过了多次的实验和测试。

本文通过在VB中使用Winsock控件,实现网络之间的文件传输,更进一步理解了其工作原理。此外,还研究在网络传输文件中要注意的问题,并对怎样处理传输文件比较大时的情况进行了详细的分析,并通过实际的方法实现了文件的“断点续传”,可以满足实际中的要求,其设计的思想也具有普遍的通用性。

通过此次的毕业设计,从另一个角度加深了自己的编程和软件开发的能力。首先,对设计的需

求和功能设计要有全局的了解和掌握。在初次拿到这个课题时对winsock控件作了一番了解,简

单实现了字符的通信;在此基础上设计本课题需要实现的功能模块。在实际编程过程中,对于客

户端的断开再连接实现操作一直是个难题,同时深层次的文件夹传输也困扰了许久。。

在本次设计中所遇到的一些难点,都是由自己寻求各种途径和方案最终将其解决,在编程和

设计思路上有了新的提升。

参考文献

[1] 崔彦锋,许小荣.VB网络与远程控制编程实例教程[M].北京:北京希望电子出版社,1996.34~

65

[2] 卞志强.Visual Basic网络程序设计[M].北京:人民邮电出版社,1993.48~93

[3] 肖斌,董磊.Visual Basic 6 网络编程实例教程[M]北京:北京希望电子出版社, 1998.47~139

[4] Loren Eidahl.Visual Basic控件设计与开发[M].浙江:浙江科学技术出版社,1998.26~89

[5]魏江江.Visual Basic API编程百例通[M].北京:科学出版社,2001.45~78

[6]高春艳,刘彬彬. Visual Basic空件大全[M].北京:人民邮电出版社,1991.15~31

文件传输系统的设计与实现.

JISHOU UNIVERSITY 专业课课程论文 文件传输系统的设计与实现题目: 作者: 学号: 所属学院:信息科学与工程学院 专业年级:计算机科学与技术 总评分: 完成时间:

文件传输系统的设计与实现 摘要 互联网的一大特点是实现信息共享,文件传输是信息共享的十分重要的内容之一。随之出现了许多FTP服务器来共享一些信息资源,编写一个操作简单,方便的FTP客户端来下载这些资源受到了人们的极大的欢迎。 FTP是一种用于在网上传输文件的协议,从原理上说,FTP是一个客户/服务器模式的应用协议。它用两个连接来实现:一个是控制连接,用来连接服务器和实现文件操作;一个是数据连接,用来实现数据传输。FTP的实现核心是命令/应答模式,FTP客户端将用户的所有FTP相关请求都转化为FTP服务器可识别的命令,然后发送到服务器,并接收和处理执行完毕后服务器传回的应答。 本程序是一个小型FTP服务器系统,实现了FTP服务器所应该具备的大多数功能,包括用户的登录,文件的上传、下载、删除,选择数据传输模式、目录选择等,并给出相应的提示。通过该程序的开发,基本上实现了一个FTP服务器所应该具有的功能,能够解释一般的FTP命令,并且符合RFC59规范。 本程序采用VC++6.0作为开发工具,设计步骤采用自顶向下的方法。 关键词:客户端;服务器;下载;上传;FTP

目录 第一章引言 (1) 1.1课题背景及意义 (1) 1.2课题研究现状 (1) 1.3研究内容 (2) 第二章FTP协议与原理 (3) 2.1 FTP简介 (3) 2.2 FTP的工作原理 (3) 2.3 FTP运行原理 (4) 2.4 FTP文件传输连接类型 (4) 第三章开发环境及工具介绍 (6) 3.1 C语言概述 (6) 3.2 VC++介绍 (6) 3.3 VC++6.0集成环境介绍 (6) 第四章FTP服务器需求分析 (8) 4.1 FTP文件传输的需求 (8) 4.2应解决的问题 (9) 4.3功能分析 (9) 第五章系统设计与实现 (10) 5.1功能要求 (10) 5.2开发工具 (10) 5.3主要功能与实现 (11) 5.4 菜单栏功能模块 (11) 5.5 查看功能模块 (13) 第六章系统测试 (18) 6.1系统可能出现的问题与不足 (18) 6.2 采用的测试类型 (18) 6.3 测试的过程与结果分析 (18) 总结 (20) 参考文献 (21)

网络实验报告 TCP协议分析

《计算机网络(II)》实验报告 实验名称:TCP协议分析 班级:100341C 姓名:汪何媛学号:100341324 任课教师:顾兆军 完成日期:2012.12.14 实验环境:网络结构一 一、实验目的 1)查看TCP连接的建立和释放 2)编辑并发送TCP报文段 3)TCP的重传机制 二、实验内容 练习一:察看TCP连接的建立和释放 1. 主机B、C、D启动协议分析器进行数据捕获,并设置过滤条件(提取TCP协议)。 2. 主机C打开TCP工具,类型选择“服务器”,端口填写大于1024的值; 点击“创建”,如果端口被占用则选择其它。主机A打开TCP工具,类型选择“客户端”,地址填入主机C的IP地址;在端口填入主机C的TCP工具监听的端口;点击[连接]按钮进行连接。

3.察看主机B、C、D捕获的数据,填写下表。

TCP 连接建立时,前两个报文的首部都有一个“maximum segment size”字段,它的值是多少?作用是什么?结合IEEE802.3协议规定的以太网最大帧长度分析此数据是怎样得出的。 maximum segment size=1460 4. 主机A 断开与主机C 的TCP 连接。 5. 察看主机B 、C 、D 捕获的数据,填写下表。 字段名称 报文1 报文2 报文3 序列号 2532372657 1948328206 2532372658 确认号 0 2532372658 1948328207 ACK 0 1 1 SYN 1 1

字段名称 报文4 报文5 报文6 报文7 序列号 3013278418 1558034120 1558034120 3013278419 确认号 1558034120 3013278419 3013278419 1558034121 ACK 1 1 1 1 FIN 1 1 练习二:利用仿真编辑器编辑并发送TCP 数据包 ? 本练习将主机A 和B 作为一组,主机C 和D 作为一组,主机E 和F 作为一组,现仅以主机A 和B 为例,说明实验步骤。 ? 在本实验中由于TCP 连接有超时时间的限制,故仿真编辑器和协议分析器的两位同学要默契配合,某些步骤(如计算TCP 校验和)要求熟练、迅速。 ? 为了实现TCP 三次握手过程的仿真,发送第一个连接请求帧之前,仿真端主机应该使用“仿真编辑器/工具菜单/TCP 屏蔽/启动屏蔽”功能来防止系统干扰(否则计算机系统的网络会对该请求帧的应答帧发出拒绝响应)。 ? 通过手工编辑TCP 数据包实验,要求理解实现TCP 连接建立、数据传输以及断开连接的全过程。在编辑的过程中注意体会TCP 首部中的序列号和标志位的作用。

TCP数据包的发送和接收设计报告

湖北工业大学 课程设计报告 设计题目:TCP数据包的发送和接收专业:计算机科学与技术 班级:10计科2班 学号:11 姓名:吕红杰 指导老师:涂军

一.设计题目 发送和接收TCP数据包 二.设计要求 1.正确理解题意; 2.具有良好的编程规范和适当的注释; 3.有详细的文档,文档中应包括设计题目涉及的基础知识、设计思路、程序流程图、程序清单、开发中遇到的问题及解决方法、设计中待解决的问题及改进方向。 三.需求分析 TCP是一种面向连接的、可靠的传输层协议。TCP协议工作在网络层IP协议的基础上。本课程设计的目的是设计一个发送和接收TCP数据包的程序,其功能是填充一个TCP数据包,发送给目的主机,并在目的主机接收此TCP数据包,将数据字段显示显示在标准输出上。 四.具体设计 1.创建一个原始套接字,并设置IP头选项 SOCKET sock; sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP); 或者: sock=WSASoccket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPE D); 这里,设置了SOCK_RAW标志,表示我们声明的是一个原始套接字类型。 为使用发送接收超时设置,必须将标志位置位置为WSA_FLAG_OVERLAPPED。在本课程设计中,发送TCP包时隐藏了自己的IP地址,因此我们要自己填充IP头,

设置IP头操作选项。其中flag设置为ture,并设定 IP_HDRINCL 选项,表明自己来构造IP头。 setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&Flag, sizeof(Flag)); int timeout=1000; setsockopt(sock, SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout, sizeof(timeout)); 在这里我们使用基本套接字SOL_SOCKET,设置SO_SNDTIMEO表示使用发送超时设置,超时时间设置为1000ms。 2.构造IP头和TCP头 这里, IP头和TCP头以及TCP伪部的构造请参考下面它们的数据结构。typedef struct _iphdr 算校验和的子函数 在填充数据包的过程中,需要调用计算校验和的函数checksum两次,分别用于校验IP头和TCP头部(加上伪头部),其实现代码如下: USHORT checksum(USHORT *buffer, int size) { unsigned long cksum=0; while(size >1) { cksum+=*buffer++; size -=sizeof(USHORT); } if(size ) { cksum += *(UCHAR*)buffer; } cksum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >>16);

计算机网络实验报告3

课程名称计算机网络 实验项目实验三传输控制协议TCP 实验仪器网络协议仿真教学系统 系别计算机学院 专业 班级/学号 学生姓名 实验日期 成绩_______________________ 指导教师

课程名称计算机网络 实验项目实验三传输控制协议TCP 实验仪器网络协议仿真教学系统 系别计算机系 专业 班级/学号 学生姓名 实验日期 成绩_______________________ 指导教师高卓

实验三 传输控制协议TCP 一、实验目的: 1. 掌握TCP 协议的报文格式 2. 掌握TCP 连接的建立和释放过程 3. 掌握TCP 数据传输中编号与确认的过程 4. 掌握TCP 协议校验和的计算方法 5. 理解TCP 重传机制 二、实验原理: 一. TCP 报文格式 16位源端口号 16位目的端口号 32位序号 32位确认序号 4位首部长度 保留(6位) U R G A C K P S H R S T S Y N F I N 16位窗口大小 16位校验和 16位紧急指针 选项 数据 二. TCP 连接的建立 TCP 是面向连接的协议。 在面向连接的环境中,开始传输数据之前,在两个终端之间必须先建立一个连接。对于一个要建立的连接,通信双方必须用彼此的初始化序列号seq 和来自对方成功传输确认的应答号ack (指明希望收到的下一个八位组的编号)来同步,习惯上将同步信号写为SYN ,应答信号写为ACK 。 整个同步的过程称为三次握手,如图: 三. TCP 连接的释放 对于一个已经建立的连接,TCP 使用四次握手来结束通话(使用一个带有FIN 附

TCP IP网络协议分析实验报告

TCP/IP网络协议分析实验 一、实验目的 1. 通过实验,学习和掌握TCP/IP协议分析的方法及其相关工具的使用; 2. 熟练掌握 TCP/IP体系结构; 3. 学会使用网络分析工具; 4. 网络层、传输层和应用层有关协议分析。 二、实验类型 分析类实验 三、实验课时 2学时 四、准备知识 1.Windows 2003 server 操作系统 2.TCP/IP 协议 3.Sniffer工具软件 五、实验步骤 1.要求掌握网络抓包软件Wireshark。内容包括: ●捕获网络流量进行详细分析 ●利用专家分析系统诊断问题 ●实时监控网络活动 ●收集网络利用率和错误等 2.协议分析(一):IP协议,内容包括: ●IP头的结构 ●IP数据报的数据结构分析 3.协议分析(二):TCP/UDP协议,内容包括: ●TCP协议的工作原理 ●TCP/UDP数据结构分析

六、实验结果 1.IP协议分析: (1)工作原理:IP协议数据报有首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是IP数据报必须具有的。首部分为,版本、首部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议、首部检验和、源地址、目的地址、可选字段和数据部分 (2)IPV4数据结构分析:

2.TCP协议分析: (1)工作原理:TCP连接是通过三次握手的三条报文来建立的。第一条报文是没有数据的TCP报文段,并将首部SYN位设置为1。因此,第一条报文常被称为SYN分组,这个报文段里的序号可以设置成任何值,表示后续报文设定的起始编号。连接时不能自动从1开始计数,选择一个随机数开始计数可避免将以前连接的分组错误地解释为当前连接的分组。

TCP论文文件传输论文

TCP论文文件传输论文 摘要:本文介绍了在linux下基于tcp协议的文件的传输系统的流程与设计。在传输的过程中,服务器(server)上使用了线程池技术实现了多线程的设计,并使用openssl 对所传输文件数据进行加解密,以保证文件传输过程中安全性的需求。 关键词:tcp;文件传输;线程池;openssl tcp-based secure file transmission system design and research liu xianqiang,lin hui,huang chengmao (school of optoelectronic information,university of electronic science&technology,chengdu610054,china) abstract:this article describes the file transmission system processes and design,base on tcp protocol in linux.in the transmission process,the server uses the thread pool technology to achieve the multi-threaded design,and using openssl library to ensure security of the data encryption during file tarnsmission. keywords:tcp;file transmission;thread

TCPIP实验报告

TCP/IP技术实验报告 书 专业:[通信工程] 学生姓名:[张世超] 完成时间:9:28 AM

实验一网络应用程序基础 实验目得: 通过实验,使学生熟悉并掌握运用TCP/IP技术进行网络编程得基本知识,加深对课堂教学内容得理解,掌握套接字网络通信编程技术,能够运用VC++为开发工具编程解决网络通信中得实际问题,进行一些简单得网络应用程序设计。实验内容: 1,Winsock得启动与终止。 2,Winsock得创建及绑定与关闭。 3,建立通信连接listen及accept与connect。 4,数据得传输。 5,简单得客户机/服务器之间得通信。 要求:通过在SDK模式下完成数据通信得过程,掌握Windows Socket得常用函数得形式与使用方法,理解数据通信得过程。 实验步骤: 1,打开VC环境 1,使用向导为客户端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其她得选择默认设置 2,在文件中添加代码 3,编译调试 4,使用向导为服务器端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其她得选择默认设置 5,在文件中添加代码 6,编译调试 7,分别打开两个系统命令窗口中,并分别在其中运行客户端与服务器端程序。 8,在客户端侧输入字符,可以瞧到服务器收到字符串 参考代码:课本156页--160页 实验结果: Client: #include<Winsock2、h> #include<stdio、h> //服务器端口号为5050 #define DEFAULT_PORT 5050 #define DATA_BUFFER 1024 void main(int argc,char *argv[]) { ?WSADATA wsaData; SOCKET sClient; ?int iPort=DEFAULT_PORT;

TCP协议分析实验报告

TCP协议分析实验报告 实验4传输层协议分析 一、实验目的 1、学习3CDaemon FTP服务器的配置和使用,分析TCP报文格式,理解TCP的连接建立、和连接释放的过程。 2、学习3CDaemon TFTP服务器的配置和使用,分析UDP报文格式,理解TCP 协议与UDP协议的区别。 二、实验工具软件3CDaemon软件简介 3CDaemon是3Com公司推出的功能强大的集FTP Server、TFTP Server、Syslog Server 和TFTP Client于一体的集成工具,界面简单,使用方便。 这里主要介绍实验中需要用到的FTP Server功能和TFTP Server功能。 1、FTP Server功能 (1)配置FTP Server功能:选中左窗格功能窗口,打开FTP Server按钮,单击窗格中的 Configure FTP Server按钮,打开3CDaemon Configuration配置窗口,配置FTP Server功能。 这里需要设置的就是“Upload/Download”路径,作为FTP Server的文件夹,其它选项可以使用系统缺省设置。设置完成后,单击确认按钮,设置生效。 (2)在实验中,我们使用3CDaemon系统内置的匿名帐户“anonymous”登陆FTP 服务器, 客户端使用微软FTP客户端命令,关于Ftp命令的说明介绍如下。 (3) Ftp命令的说明 FTP的命令格式:ftp[-v][-d][-i][-n][-g][-w:windowsize][主机名/IP地址] 其中:

-v不显示远程服务器的所有响应信息; -n限制ftp的自动登录; -i在多个文件传输期间关闭交互提示 -d允许调试、显示客户机和服务器之间传递的全部ftp命令; -g不允许使用文件名通配符; -w:windowsize忽略默认的4096传输缓冲区。 使用FTP命令登录成功远程FTP服务器后进入FTP子环境,在这个子环境下,用户可以使用FTP的内部命令完成相应的文件传输操作。 FTP常用内部命令如下: open host[port]:建立指定ftp服务器连接,可指定连接端口。 user user-name[password][account]:向远程主机表明身份,需要口令时必须输入。 append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。 cd remote-dir:进入远程主机目录。 cdup:进入远程主机目录的父目录。 cd[dir]:将本地工作目录切换至dir。 dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件。get remote-file[local-file]:将远程主机的文件remote-file传至本地硬盘的local-file。 ls[remote-dir][local-file]:显示远程目录remote-dir,并存入本地文件local-file。 put local-file[remote-file]:将本地文件local-file传送至远程主机。 mput local-file:将多个文件传输至远程主机。 nlist[remote-dir][local-file]:显示远程主机目录的文件清单,存入本地硬盘local-file。

基于TCP协议的简单即时通信软件的设计与实现

基于TCP协议的网络通信系统的设计与实现 摘要:网络通信,由于其具有实时性、跨平台性、成本低、效率高等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信系统具有较强的现实意义。即时通信的底层通信是通过SOCKET套接字接口实现的。当前的主流UNIX系统和微软的WINDOWS系统都在内核提供了对SOCKET字接口的支持。使用这个统一的接口,可以编写一个可移植的TCP/IP通信程序。使信息能够在INTERNET上可靠的传输。 本文设计并实现了基于局域网内的简单即时通信系统,系统采用C/S模式,底层通信通过SOCKET套接字接口实现,服务器负责客户端的登录验证,好友信息的保存和心跳报文的发送。客户端采用P2P方式实现消息传递,并能实现文件的传输。本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用XML序列化的消息进行通信。 关键词:即时通信;文件传输;套接字;TCP协议 Abstract :Instant messages have several advantages such as real-time, cross-platform, cheap and efficient. To design a Multi-user IM (instant message) architecture is very i mportant in both theory and realism. Instant message based on TCP/IP protocol that is realized by socket interface. Almost all UNIX operation systems and Microsoft's win dows operation systems provide support of socket in the kernel. Using the uniform int erface, we can develop a portable program of TCP/IP, which help us transfer informati on in Internet safely and credibly. The system uses the client/server(C/S) mode. The server takes the responsibility of th e login message of client, the saving of friend message and Message heartbeat. The tra nsmission of the basic messages of the customer end will be designed on P2P architec ture. This thesis explains how the client and server communicate via serializing XML message. Key words: Instant Message; File Transfer; Socket; TCP protocol

TCP.IP课程实验报告

TCP/IP协议族分析 课程设计

目录 第一章TCP/IP 概述 (3) 1.1 TCP/IP协议族定义 (3) 1.2 TCP/IP协议族的特点 (3) 1.3 TCP/IP协议族的分层 (3) 1.4 TCP/IP协议族的结构 (4) 第二章地址解析协议(ARP)——链路层 (5) 2.1 ARP概述 (6) 2.2 ARP的组成 (6) 2.3 ARP工作原理 (7) 2.4 ARP帧结构 (7) 第三章因特网控制消息协议(ICMP)——网络层 (13) 3.1 ICMP协议简介 (13) 3.2 ICMP消息结构 (14) 3.3 Echo Request和Echo Reply查询消息 (14) 3.4 ICMP各字段分析 (15) 第四章传输控制协议(TCP)——运输层 (18) 4.1 TCP协议简介 (18) 4.2 TCP数据包结构 (19) 4.3 TCP数据包分析 (20) 4.4 TCP三次“握手” (25) 第五章普通文件传输协议(TFTP)——应用层 (27) 5.1 TFTP数据传输模式 (27) 5.2 TFTP会话实例 (28) 总结 (31) 参考文献 (31)

第一章 TCP/IP 协议族概述 1.1 TCP/IP协议族定义 TCP/IP协议族是指一整套数据通信协议, 其名字是由这些协议中的两个协议组成的,即传输控制协议(Transmission Control Protocol ——TCP)和网间协议(Internet Protocol——IP)。虽然还有很多其他协议,但是TCP和IP显然是两个最重要的协议。 1.2 TCP/IP协议族的特点 TCP/IP协议族有一些重要的特点,以确保在特定的时刻能满足一种重要的需求,即世界范围内的数据通信。其特点包括: ●开放式协议标准。可免费使用,且与具体的计算机硬件或操作系统无关。由于它受到如此广泛的支持,因而即使不通过Internet 通信,利用TCP/IP来统一不同的硬件和软件也是很理想的。 ●与物理网络硬件无关。这就允许TCP/IP可以将很多不同类型的网络集成在一起,它可以适用于以太网、令牌环网、拨号线、X.25网络以及任何其它类型的物理传输介质。 ●通用的寻址方案。该方案允许任何TCP/IP设备唯一的寻址整个网络中的任何其他设备,该网络甚至可以像全球Internet那样大。 ●各种标准化的高级协议。可广泛而持续地提供多种用户服务。 1.3 TCP/IP协议族的分层 图1-1 TCP/IP协议族中不同层次的协议

实验四 TCP 协议分析

郑州轻工业学院本科 实验报告 题目:实验四TCP 协议分析 学生姓名:王冲 系别:计算机与通信工程学院 专业:网络运维 班级:网络运维11-01 学号:541107110123 指导教师:熊坤 2014 年10 月28 日

实验四TCP 协议分析 一、实验目的 1、分析HTTP 协议 2、分析DNS 协议 二、实验环境 与因特网连接的计算机网络系统;操作系统为windows;Ethereal、IE 等软件。 三、实验步骤 1.俘获大量的由本地主机到远程服务器的TCP 分组 (1)启动浏览器,打开https://www.360docs.net/doc/8116852445.html,/ethereal- labs/alice.txt 网页,得到ALICE'S ADVENTURES IN WONDERLAND文本,将该文件保存到你的主机上。

(2)打开https://www.360docs.net/doc/8116852445.html,/ethereal- labs/TCP-ethereal- file1.html (3)窗口如下图所示。在Browse按钮旁的文本框中输入保存在你的主机上的文件ALICE'S ADVENTURES IN WONDERLAND的全名(含路径),此时不要按“Upload alice.txt file”按钮 (4)启动Ethereal,开始分组俘获。 (5)在浏览器中,单击“Upload alice.txt file”按钮,将文件上传到https://www.360docs.net/doc/8116852445.html,服务器,一旦文件上传完毕,一个简短的贺词信息将显示在你的浏览器窗口中。 (6)停止俘获。 2.浏览追踪信息

(1)在显示筛选规则中输入“tcp”,可以看到在本地主机和服务器之间传输的一系列tcp和http报文,你应该能看到包含SYN报文的三次握手。也可以看到有主机向服务器发送的一个HTTP POST 报文和一系列的“http continuation”报文。 (2)根据操作回答“四、实验报告内容”中的1-2题。 3.TCP 基础 根据操作回答“四、实验报告内容”中的3-10 题 4.TCP 拥塞控制 (1)在Ethereal已俘获分组列表子窗口中选择一个TCP 报文段。选择菜单: Statistics->TCP Stream Graph-> Time-Sequence-Graph(Stevens)。你会看到如下所示的图。

基于tcp协议通信系统的设计与实现

基于TCP协议通信系统的设计与实现 杨秀森 (贵州师范大学机电学院电气工程及其自动化学号:0914********) 摘要:通信协议(communications protocol)是指双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序,从而确保网络中数据顺利地传送到确定的地方。通信的底层通信是通过SOCKET套接字接口实现的。当前的主流UNIX系统和微软的WINDOWS系统都在内核提供了对SOCKET字接口的支持。使用这个统一的接口,可以编写一个可移植的TCP通信程序。 本文设计并实现了基于局域网内的简单即时通信系统,系统采用C/S模式,底层通信通过SOCKET套接字接口实现,服务器负责客户端的登录验证,好友信息的保存和心跳报文的发送。客户端采用P2P方式实现消息传递,并能实现文件的传输。本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用XML序列化的消息进行通信。 关键词:TCP协议;通信协议系统;套接字;文件传输;C/S模式; The System Design and Implementation of Based on TCP Protocol Communication Yang Xiu Sen (Guizhou Normal University Institute of mechanical and electrical engineering and its automation number: 0914********) Abstract: Communication protocol ( communications protocol ) refers to both entities to complete communication or service must follow the rules and conventions. The protocol defines a data unit format, information unit should contain information and meaning, connection mode, information transmission and reception timing, thereby ensuring that the network data smoothly transmitted to determine places. Communication communication is through the SOCKET socket interface implementation. The current mainstream UNIX system and Microsoft WINDOWS system in the kernel provides to SOCKET interface support. Using the unified interface, can be prepared in a transplantable TCP communication program. This paper designed and implemented based on a simple LAN instant communication system, the system adopts C/S model, the underlying communication through the SOCKET socket interface

TCP实验报告 计算机网络

计算机网络实验报告——TCP客户/服务器应用程序设计 姓名: 班级:

一.实验目的 实现在TCP方式下客户端和服务器端的数据传输过程。 二.实验要求 编程实现一个聊天室系统。该系统首先必须设立服务器,建立完成后必须建立与服务器的连接。建立成功后可以接收客户端输入的信息。该系统包括客户端和服务器端两部分。用户通过客户端发送消息。服务器端在收到消息后,显示在主界面上 实验报告要求有实现过程的流程图,对主要的函数及其参数给予说明,要有实现过程的主要程序段,并对各段程序的功能及作用进行说明。 三.程序实验原理及流程图 在TCP/IP协议下,通讯是建立在服务器与客户端之间的。由客户端想服务器发送连接请求,服务器响应后建立连接,然后才能开始进行通讯。一下是实现的流程图。 系统工作流程:

四.节目设计 在VC++的MFC下创建基于对话框模式的TCP服务器端和TCP客户端,设置控件并调整相应的属性。下面是初始化的效果:

五.主要函数及其参数说明 1、服务器端 1)BOOL CCSocketDlg::OnInitDialog() 用于初始化对话框。在这个这个系统自动生成的函数中添加对进程的控制。 count=0; m_list.InsertColumn(0,"消息");

m_list.SetColumnWidth(0,435); m_edit.SetLimitText(99); for (int i=0;i<50;i++) msgsock[i]=NULL; //设定地址 serv.sin_addr.s_addr=htonl(INADDR_ANY); serv.sin_family=AF_INET; serv.sin_port=5000;//htons(5000); addlen=sizeof(serv); m_button.EnableWindow(FALSE); //创建socket sock=socket(AF_INET,SOCK_STREAM,0); //绑定 if (bind(sock,(sockaddr*)&serv,addlen)){ m_edit.SetWindowText("绑定错误"); } else{ //m_list.InsertItem(count++,inet_ntoa(serv.sin_addr)); m_edit.SetWindowText("服务器创建成功"); //开始侦听 listen(sock,5); //调用线程 AfxBeginThread(&thread,0); 2)getcount() 用于获得还没有使用的socket数组号int CCSocketDlg::getcount(){ for (int i=0;i<50;i++){ if (msgsock[i]==NULL) return i;} return -1;

TCPIP协议分析试验报告

.. TCP/IP协议分析及应用实验报告 学号:姓名:班级: 实验项目编号: B03862704 实验项目名称:传输控制协议TCP 一、实验目的: 1. 掌握TCP协议的报文格式。 2. 掌握TCP连接的建立和释放过程。 3. 掌握TCP数据传输中编号与确认的过程。 4. 掌握TCP协议校验和的计算方法。 5. 理解TCP重传机制。 二、实验环境: Windows server 2003 TCP/IP协议分析及应用教学实验平台 三、实验原理(或要求): TCP报文格式 16位源端口号 16位目的端口号 位序号32 位确认序号32F P U A R S 4位首6保留(16I 位窗口大小 C 部长R S S Y 位)N N T G K H 度位紧急指针16位校验和16 选项数据 连接的建立TCP在面向连接的环境中,开始传输数据之前,在两个终 TCP是面 向连接的协议。通信双方必须用彼此的初端之间必须先建立一个连接。对于一个 要建立的连接,(指明希望收到的下一个ackseq始化序列号和来自对方成功传输 确认的应答号。ACK,应答信号写为八位组的编号)来同步,习惯上将同步信 号写为SYN整个同步的过程称为三次握手,如图: 优质范文.

连接的释放TCP附加标记的报FINTCP使用四次握手来结束通话(使用一个带有对于一个已经建立的连接,如图。文段) TCP重传机制只要计时器设置的重传时间到期,就对这个报文段设置一次计时器。TCP每发送一个报文段,但还没有收到确认,就要重传这一报文段。

优质范文. .. 四、实验步骤: 练习一:察看TCP连接的建立和释放 主机B、C、D启动协议分析器进行数据捕获,并设置过滤条件(提取TCP协议)。主机A启动仿真编辑器,进入TCP连接视图。在“服务器信息/IP地址”中填入主机C的IP地址;使用“端口扫描”获取主机C的TCP端口列表,在“服务器信息/端口”中填入主机C的一个TCP端口(大于1024);点击“连接”按钮进行连接。 察看主机B、C、D捕获的数据,填写下表。 字段名称报文1 报文2 报文3 Sequence Number Acknowledgement Number ACK SYN TCP连接建立时,前两个报文的首部都有一个“maximum segment size”字段,它的值是多少?作用是什么?结合IEEE802.3协议规定的以太网最大帧长度分析此数据是怎样得出的。 主机A断开与主机C的TCP连接。 察看主机B、C、D捕获的数据,填写下表。

发送TCP数据包设计说明书

发送TCP数据包设 计说明书 一课程设计准备 1.1课程设计目的 TCP(传输控制协议)是一种面向连接的、可靠的传输层协议。TCP协议在网络层IP协议的基础上,向应用层用户进程提供可靠的、全双工的数据传输流。本课程设计的目的就是设计一个发送TCP数据包的程序,并根据本设计说明TCP数据包的结构以及TCP协议与IP协议的关系,使学生对TCP 协议的工作原理有更深入的认识。 1.2课程设计的要求 本程序的功能是填充一个TCP数据包,并发送给目的主机。 1)以命令行形式运行:SendTCP sourse_ip sourse_port dest_ip dest_port 其中,SendTCP为程序名;sourse_ip为源端IP地址;sourse_port为源埠;dest_ip为目的IP地址;dest_port为目的埠。 2)其它的TCP头部参数请自行设定。 3)数据字段为“This is my homework of network,I am happy!”。 4)发送成功后在屏幕上输出”send OK”。

1.3相关知识 编制本程序前要对TCP协议有一定的了解。当应用程序有报文需要通过TCP发送时,它就将此应用层报文传送给执行TCP协议的传输实体。TCP传输实体将用户数据加上TCP报头,形成TCP数据包,在TCP数据包上增加IP头部,形成IP包。下图显示的是TCP数据包和IP包的关系。 TCP协议的传输单元为报文段,其格式如图所示。报文段报头的长度为20B~60B。其中固定长度为20B,报文段长度最多为40B。TCP报文段主要包括以下字段。 ·埠号:埠号字段包括源埠号和目的埠号。每个埠号的长度是16位,分别表示发送该TCP包的应用进程的埠号和接收该TCP包的应用进程的埠号。·序号:长度为32位。由于TCP协议是面向数据流的,它所传送的报文段可以视为连续的数据流,因此需要给每一个字节编号。序号字段的“序号”指的是本报文段数据的第一个字节的顺序号。 ·确认号:该字段的长度为32位,它表示接收端希望接收的下一个TCP 包的第一个字节的序号。

TCP协议实验报告

学生实验报告 姓名:_________ 学号:____________ 班级:________________ 指导老师:_______________ 内容摘要 该实验报告了TCP协议分析实验相关分析; TCP协议分析是通过Wireshark分析TCP协议的报文格式,如理解TCP报文段首部各字段的含义,理解TCP建立连接的三次握手机制,了解TCP的确认机制,了解TCP的流量控制和拥塞控制 实验目的 1. 通过协议分析软件掌握TCP协议的报文格式; 2. 理解TCP报文段首部各字段的含义; 3. 理解TCP建立连接的三次握手机制; 4. 了解TCP的确认机制,了解TCP的流量控制和拥塞控制; 实验原理 连上in ternet的PC机,并且安装有协议分析软件Wireshark 实验原理及概况 TCP是因特网中最主要的运输层协议,它能够在两个应用程序章提供可靠的、有序的数据流传输,能够检测传输过程中分组是否丢失、失序和改变,并利用重传机制保证分组可 靠地传输到接收方; TCP首部格式如下图所示: 位U 3 16 24 31 首先是源端口和目的端口,服务器提供服务的端口号是固定的,比如:Web服务端口 号是80,而客户端的端口号是由操作系统随机分配一个用户端口号。TCP提供字节流服务, 它为分组中的每个字节编号,首部中的序号表示分组中第一个字节的编号。接收方用确认号 表示它期望接收的数据流中下一个字节编号,表明确认号之前的字节接收方都已经正确接收 了。数据偏移字段表示报文段的首部长度。标志部分包含6个标志位,ACK位表明确认号 字段是否有效;PUSH位表示发送端应用程序要求数据立即发送;SYN、FIN、RESET三位 用来建立连接和关闭连接;URG和紧急指针通常较少使用。接收端利用窗口字段通知发送 方它能够接收多大数据量。检验和字段是接收方用来检验接收的报文是否在传输过程中出

TCPIP协议分析实验报告2

TCP/IP协议分析及应用实验报告 学号:姓名:班级: 实验项目编号:B03862702 实验项目名称:网际协议IP 一、实验目的: 1. 掌握IP数据报的报文格式 2. 掌握IP校验和计算方法 3. 掌握子网掩码和路由转发 4. 理解特殊IP地址的含义 5. 理解IP分片过程 二、实验环境: Windows server 2003 TCP/IP协议分析及应用教学实验平台 三、实验原理(或要求): IP报文格式 IP数据报是由IP首部加数据组成的。IP首部的最大长度不超过60字节。 IP IP分片 链路层具有最大传输单元(MTU)这个特性,它限制了数据帧的最大长度。不同的网络类型都有一个上限值。以太网通常是1500字节。如果IP层有数据包要传输,而数据包的长度超过了MTU,那么IP层就要对数据包进行分片操作。使每一片长度都小于MTU。 IP首部中“16位标识”、“3位标志”和“13位片偏移”包含了分片和重组所需的信息。另外,当数据被分片后,每个片的“16位总长度” 值要改为该片的长度值。

IP路由表 大部分网络层设备都存储着一张记录路由信息的表格,称为路由表。它由许多条项目组成。网络层设备收到数据报后,根据其目的IP地址查找路由表确定数据报传输的最佳路径(下一跳)。然后利用网络层的协议重新封装数据报,利用下层提供的服务把数据报转发出去。路由表的项目一般含有五个基本字段:目的地址、网络掩码、下一跳地址、接口、度量。路由表按如下顺序匹配:直接交付->特定主机交付->特定网络交付->默认交付 路由选择过程 路由选择模块从IP处理模块接收到IP分组后,使用该分组的目的IP地址同路由表中的每一个项目按特定的顺序(按照前面介绍的“路由表匹配顺序”)查找匹配项,当找到第一个匹配项后就不再继续寻找了,这样就完成了路由选择过程。 匹配路由表项的方法是将IP地址与路由表中的一个项目的“子网掩码”进行按位“与”操作,然后判断运算结果是否等于该项目的“目的地址”,如果等于,则匹配成功,否则,匹配失败。 四、实验步骤: 练习三:IP数据报分片 在主机B上使用“MTU工具”设置以太网端口的MTU为800字节(两个端口都设置)。主机A、B、E启动协议分析器,打开捕获窗口进行数据捕获并设置过滤条件(提取ICMP协议)。 在主机A上,执行命令ping -l 1000 172.16.0.2。 主机A、E停止捕获数据。主机E如下图所示,重新定义过滤条件(取一个ICMP数据包,按照其上层协议IP的Identification字段设置过滤)。

TCP文件传输程序的设计书

TCP文件传输程序设计书 一、实验名称:TCP文件传输程序 二、实验要求 1、设计一个应用程序,该应用程序能够实现网络中两台计算机之间传输文件。 2、一个程序既能够建立服务器又能够以终端的形式连接服务器。 3、终端或者服务器既能够发送文件又能够接收文件。 4、传送文件类型应为任何类型,文件大小为任意。 三、总体规划 1、网络传输协议的选择 在TCP/IP协议栈中,有两个高级协议是我们网络应用程序编写者应该了解的,它们"传输控制协议"(Transmission Control Protocol,简称TCP)和"用户数据报协议"(User Datagrm Protocol,简称UDP)。 TCP是面向连接的通信协议,TCP提供两台计算机之间的可靠无错的数据传输。应用程序利用TCP进行通信时,源和目标之间会建立一个虚拟连接。这个连接一但建立,两台计算机之间就可以把数据当作一个双向字节流进行交换。 UDP是无连接通信协议,UDP不保证可靠数据的传输,但能够向若干个目标发送数据,接收发自若干个源的数据。简单地说,如果一个主机向另外一台主机发送数据,这一数据就会立即发出,而不管另外一台主机是否已准备接收数据。如果另外一台主机收到了数据,它不会确认收到与否。 为了使两台计算机之间传输的文件数据不会丢失或发生错误,应该采用TCP协议。 2、TCP协议在VC++中的实现 在VC++中,网络协议的实现有以下几种方式: a、采用WinSocket API函数。 API函数中提供了基本Socket的系统调用,具体实现方法为服务器端首先要调用socket()函数建立一个流式套接字,用bind()函数与本机的一个端口建立关联,继续调用listen()函数将套接字置于被动的侦听方式以监听连接,然后调用accept()函数进入等待状态之后才可以接收来自客户端的请求,一旦接收到客户端通过connect发出的连接请求,accept将返回一个新的套接字描述符。通过此套接字描述符调用send()或recv()函数即可与客户端进行数据收发。待数据传送完成,服务器客户端调用closesocket()关闭套接字。 该方法在编程过程中需要注意socket连接的整个过程,编程工作量大,编程效率低,单却可以加深对网络协议的认识。 程序流程示意图如下:

相关文档
最新文档