tcpip实验报告
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开始计数,选择一个随机数开始计数可避免将以前连接的分组错误地解释为当前连接的分组。
(2)TCP数据结构分析第一次握手:第二次握手:第三次握手:3.UDP协议分析:(1)工作原理:与我们所熟悉的TCP一样,UDP协议直接位于IP的顶层。
根据OSI(开放系统互联)参考模型,UDP和TCP都属于传输层协议。
UDP的主要作用是将网络数据流量压缩成数据报的形式。
TCPIP实验报告三正式
广东海洋大学
余乃飞
一.实验目的
1)理解客户机/服务器模型的工作原理
2)掌握套接字的概念。
3)掌握基于套接字的面向连接和无连接客户机/服务器程序的设计原理,了解相关的WINSOCK API 函数。
4)了解基于TCP和UDP 的程序设计方法。
二.相关示意图
三.实验程序与结果
多线程
读取来自客户机的命令,根据客户机的命令,决定服务器要发给客户机的信息,并发送给客户机。
多线程服务器程序。
服务器与客户端交互协议(实现服务器端与客户端交互的协议。
)
客户端源程序。
实验结果
UDP编程
利用DatagramSocket查询端口占用情况。
实验结果
利用数据报通信的C/S程序。
客户端
UDP服务器的程序。
实验结果
四.实验总结
通过这几次实验,使我对套接字编程有了初步的了解,也开了个头,这些编程很有趣,至少是我这样认为,因为有趣,所以有热情,我会在这方面多下功夫的,相信我会做得更好(至少相对自己来说)。
还有,我认为,要学好
套接字编程,至少学好其原理,就如上面的,如果你可以照着流程图编,相信很快就可以编出来了,同理,看程序也一样,要明程序,就先看流程图,了解其中的原理所在,这样就可以做到事半功倍了哦。
同时写程序的时候一定要学会分部分来写,这样就会很容易解决从中遇到的问题。
TCP(IP)组网技术实验报告模板5个
郑州轻工业学院TCP/IP组网技术实验报告学生姓名:宋苗苗专业班级: 3G软件13-02班学号: 541313140237 指导教师: 程立辉实验时间: 2016年4月21日至2016年6月9日成绩:目录实验一配置动态路由RIP (3)实验二配置静态路由 (7)实验三 Cisco VTP (13)试验四 PPP数据链路层协议 (21)实验五 Cisco EIGRP内部网关路由协议 (25)题目一配置动态路由RIP 一:实验目的1.了解掌握动态路由的相关知识;2.掌握了解RIP协议相关知识及应用;3.掌握如何用RIP协议实现动态路由的配置。
二:实验拓扑配置前拓扑图:配置后拓扑图:三:实验过程3.1路由器的基本配置3.1.1 路由器Router0的基本配置3.1.2 路由器Router1的基本配置3.1.3 路由器Router2的基本配置3.2 RIP路由协议配置3.2.1 路由器Router0的RIP路由协议配置3.2.2 路由器Router1的RIP路由协议配置3.2.3 路由器Router2的RIP路由协议配置3.3 RIP路由协议启用第二版3.4配置PC端的IP地址,如下:3.5 查看各路由器的路由表信息3.5.1 查看Router0路由表信息3.5.2 查看Router1路由表信息四:实验结果使用ping检查计算机不同网段互通情况五:实验总结通过本次实验,我了解了配置动态路由器方法和相关配置命令;掌握了路由器的RIP协议的配置方法;理解路由器连接不同类型网络的原理,而且在配置过程在需要特别注意各个路由器之间的连通性,确保其的正常联通。
遇到问题:动态路由器配置过程中对于网络IP的互通问题不是很清楚,通过查找资料,最终实现了动态路由配置。
题目二配置静态路由一:实验目的1.了解掌握静态路由的相关知识;2.掌握了解静态路由通信原理;3.掌握如何用实现静态路由的配置。
二:实验拓扑配置前拓扑图:配置后拓扑图:三:实验过程3.1路由器的基本配置3.1.1Router0的基本配置3.1.2 Router1的基本配置3.1.3 Router2的基本配置3.2为每个路由器配置静态路由3.2.1为路由器Router0配置到路由器Router1通信的静态路由3.2.2配置路由器Router1配置到路由器Router0的返回路径其余配置同上。
TCP_IP攻击实验_实验报告
中南大学TCP/IP攻击实验实验报告学生学院信息科学与工程学院专业班级完成时间 2015年11月29日目录1.实验描述 (3)2.实验步骤 (3)2.1 环境搭建 (3)2.2 实验1:ARP缓存中毒 (4)2.3 实验2:ICMP重定向攻击 (6)2.4 实验3:SYN洪流攻击 (7)2.5 实验4:在telnet和ssh连接上的TCP RST攻击 (10)2.6 实验5:对视频流应用程序的TCP RST攻击 (12)2.7 实验6:ICMP盲目连接重置和源端关闭攻击 (12)2.8 实验7:TCP报文劫持 (13)3.总结 (14)TCP/IP攻击实验1.实验描述【实验背景】由于TCP/IP协议是Internet的基础协议,所以对TCP/IP协议的完善和改进是非常必要的。
TCP/IP协议从开始设计时候并没有考虑到现在网络上如此多的威胁,由此导致了许多形形色色的攻击方法,一般如果是针对协议原理的攻击(尤其DDOS),我们将无能为力。
TCP/IP攻击的常用原理有:(1)源地址欺骗(Source Address Spoofing)、IP欺骗(IP Spoofing)和DNS欺骗(DNS Spoofing);(2) 路由选择信息协议攻击(RIP Attacks);(3) 源路由选择欺骗(Source Routing Spoofing) ;(4) TCP序列号欺骗和攻击(TCP Sequence Number Spoofing and Attack)。
【实验目的】基于TCP/IP协议进行攻击实验,了解TCP/IP协议的具体机制。
2.实验步骤2.1 环境搭建这里我使用三台虚拟机做实验,其中一个用于攻击;另一个用于被攻击;第三个作为观察者使用;把三台主机放在同一个LAN中,其配置信息参照如下所示(实际在实验过程中有所改动):这里我使用的是SEED实验室已经搭建好,并且已经安装好相关的netwox工具箱和Wireshark工具箱的Ubuntu系统,与此同时三台虚拟机都需要打开FTP和Telnet服务:使用如下命令来完成上述任务Start the ftp server# servicevsftpd startStart the telnet server# serviceopenbsd-inetd start2.2 实验1:ARP缓存中毒【实验背景】ARP缓存是ARP协议的重要的一部分。
实验四TCPIP协议属性设置报告
实验四TCPIP协议属性设置报告1.实验目的与简介TCP/IP(传输控制协议/因特网协议)是互联网使用的主要协议之一,它提供了网络通信中的可靠数据传输和连接服务。
本实验旨在通过设置TCP/IP协议的属性,来了解和掌握TCP/IP协议的一些基本特性和优化方法。
2.实验环境本实验使用Windows操作系统,并以本地局域网为实验网络环境。
实验中使用的工具主要包括网络设置界面和命令行窗口。
3.实验步骤3.1设置IP地址和子网掩码在Windows操作系统中,可以通过进入网络设置界面来设置本机的IP地址和子网掩码。
IP地址是用于区分不同计算机和其他网络设备的唯一标识,而子网掩码用于定义本地网络的范围。
3.2设置默认网关默认网关是指当计算机要向其他网络发送数据时,首先会将数据包发送到默认网关。
在网络设置界面中,可以设置默认网关的IP地址。
默认网关通常是本地局域网内连接互联网的路由器。
3.3设置DNS服务器DNS(域名系统)服务器用于将域名转换为对应的IP地址。
在网络设置界面中,可以设置DNS服务器的IP地址。
一般来说,可以使用本地路由器或者互联网服务提供商提供的DNS服务器。
3.4设置TCP/IP属性通过命令行窗口可以使用"ipconfig"命令查看当前TCP/IP属性的详细信息。
可以通过命令行窗口中的一系列命令来设置TCP/IP属性,例如设置TCP缓冲区大小、调整TCP拥塞控制算法等等。
3.5实验结果与分析设置完TCP/IP属性后,可以使用一些网络性能测试工具来评估网络连接的质量和性能。
例如可以使用Ping命令检测网络延迟和丢包率,使用速度测试工具来测试网络带宽等等。
4.实验总结与心得TCP/IP协议是互联网中最常用的通信协议之一,对于网络通信的质量和性能具有重要影响。
通过实验,我了解到TCP/IP协议的一些基本特性和连接调优方法,并且掌握了调整TCP/IP属性的操作方法。
在实验过程中,我发现通过调整TCP缓冲区大小可以提高TCP连接的传输速度,并且可以通过调整TCP的拥塞控制算法来改善网络拥塞时的传输性能。
tcpip实验报告
实验一Linux内核通用链表的使用一、实验目的学习Linux内核通用链表的设计原理,熟练掌握Linux内核通用链表的使用。
二、实验内容1、掌握Linux通用链表的创建2、掌握通用链表添加元素、删除元素和遍历链表的方法3、掌握通用链表的查找方法三、实现原理Linux的内核源文件list.h提供了所有的链表定义,以及各类链表的操作接口和实现。
其中创建链表的方法如下:LIST_HEAD(my_list);在指定的head后插入新节点,常用于堆栈数据结构的实现list_add(structlist_head *new, structlist_head *head);在指定的head前插入新节点,常用于队列数据结构的实现list_add_tail(structlist_head *new, structlist_head *head);从链表中删除一个指定节点list_del(structlist_head *entry);根据当前链表节点指针ptr获得宿主节点指针list_entry(ptr, type, member);遍历链表list_for_each(pos, head);四、实现代码和运行结果#include <stdio.h>#include <malloc.h>#include "list.h"struct user{int id;structlist_head list;};int main(void){struct user *p;LIST_HEAD(user_queue);for (inti = 0; i< 10; i++){p = (struct user *)malloc(sizeof(struct user));p->id = i;list_add_tail(&p->list, &user_queue);}structlist_head *q;list_for_each(q, &user_queue){p = list_entry(q, struct user, list);printf("%d\n", p->id);}return 0;}#include <stdio.h>#include <malloc.h>#include "list.h"struct user{char username[20];int id;structlist_head list;};int main(void){struct user *p;LIST_HEAD(head);for (inti; i< 10; i++){p = (struct user *)malloc(sizeof(struct user)); p->id = i + 1;printf("user %2d, Please input username: ", i+1); scanf("%s", p->username);list_add_tail(&(p->list), &head);}structlist_head *tmp;list_for_each(tmp, &head){p = list_entry(tmp, struct user, list);printf("%d\t%s\n", p->id, p->username);}list_for_each(tmp, &head){p = list_entry(tmp, struct user, list);if (p->id == 5)printf("%s\n", p->username);}return 0;}实验二Linux内核通用哈希链表的使用一、实验目的学习Linux内核通用哈希链表的设计原理,熟练掌握Linux内核通用哈希链表的使用。
实验四 TCPIP
实习四实验报告一、实习目的1.了解网络基本配置中包含的协议、服务、客户端,以及基本参数,并了解各种协议的作用,以及安装方法;2.掌握Windows支持的网络协议及参数设置方法;3.练习并掌握简单网络命令的使用。
二、实习内容1.查看所在机器的主机名称和网络属性,包括网络基本配置中包含的协议、服务、客户端,以及有关的基本参数;2.修改网络配置参数,建立小组内的局域网;3.网络协议、服务、客户端等组件的安装和卸载方法;4.常用网络命令的使用。
三、实习步骤1. 常用网络命令的使用(1)IPConfig●命令 ipconfig/all ,显示的信息如下:Windows IP ConfigurationHost Name . . . . . . . . . . . . :Primary Dns Suffix . . . . . . . :Node Type . . . . . . . . . . . . :IP Routing Enabled. . . . . . . . :WINS Proxy Enabled. . . . . . . . :Ethernet adapter 本地连接:Connection-specific DNS Suffix . :Description . . . . : 3Com 3C920 Integrated Fast EthernetController (3C905C-TX Compatible)Physical Address. . . . . . . . . :Dhcp Enabled. . . . . . . . . . . :IP Address. . . . . . . . . . . . :Subnet Mask . . . . . . . . . . . :Default Gateway . . . . . . . . . :DNS Servers . . . . . . . . . . . :(2) ping●在命令行下键入:Ping 127.0.0.1,显示以下信息:●在命令行下键入:Ping 本机IP地址,显示信息如下:说明网络配置正常。
TCP-IP攻击实验-实验报告.docx
中南大学TCP/IP 攻击实验实验报告学生姓名学院信息科学与工程学院专业班级完成时间2015年 11 月 29 日目录1. 实验描述 (3)2. 实验步骤 (3)环境搭建 (3)实验 1:ARP缓存中毒 (3)实验 2:ICMP重定向攻击 . (4)实验 3:SYN洪流攻击 (5)实验 4:在 telnet和ssh连接上的TCP RST攻击 (6)实验5:对视频流应用程序的TCP RST 攻击 (7)实验 6:ICMP 盲目连接重置和源端关闭攻击 (7)实验 7:TCP报文劫持 (8)3. 总结 (8)TCP/IP 攻击实验1.实验描述【实验背景】由于 TCP/IP 协议是 Internet的基础协议,所以对TCP/IP 协议的完善和改进是非常必要的。
TCP/IP 协议从开始设计时候并没有考虑到现在网络上如此多的威胁, 由此导致了许多形形色色的攻击方法,一般如果是针对协议原理的攻击( 尤其 DDOS),我们将无能为力。
TCP/IP 攻击的常用原理有:(1)源地址欺骗(Source Address Spoofing)Spoofing);、 IP欺骗 (IP Spoofing)和 DNS欺骗 (DNS(2)路由选择信息协议攻击 (RIP Attacks) ;(3) 源路由选择欺骗(Source Routing Spoofing);(4) TCP 序列号欺骗和攻击(TCP Sequence Number Spoofing and Attack)。
【实验目的】基于 TCP/IP 协议进行攻击实验, 了解 TCP/IP 协议的具体机制。
2.实验步骤环境搭建这里我使用三台虚拟机做实验,其中一个用于攻击;另一个用于被攻击;第三个作为观察者使用;把三台主机放在同一个LAN中,其配置信息参照如下所示(实际在实验过程中有所改动):这里我使用的是Wireshark工具箱的SEED实验室已经搭建好,并且已经安装好相关的Ubuntu 系统,与此同时三台虚拟机都需要打开netwoxFTP 和 Telnet工具箱和服务:使用如下命令来完成上述任务Start the ftp server#servicevsftpd startStart the telnet server#serviceopenbsd-inetd start实验 1:ARP缓存中毒【实验背景】ARP缓存是 ARP协议的重要的一部分。
TCPIP协议分析_实验四__20121105
图4-3-1
项目4-4:解释两个ICMP Echo数据包之间的差别
(1)打开跟踪教材文件Chapter04中的ping.pkt,如图4-4-1.
实验中使用Ethereal对ICMP协议数据包文件进行分析,掌握构造过滤器,并懂得测试网络允许的MTU,以及了解两个ICMP数据包之间的差别和ICMP出错消息的原因。
六、教师评语
签名:
日期:
成绩
图4-2-3
项目4-3:确定和测试你的网络ICMP协议所允许的MTU
在项目4-2的基础中,如图4-3-1:
图4-3-1
(1)、链路层的首部开销:14字节;尾部开销:4字节
(2)、IP首部开销:20字节
(3)、Echo Request数据包中的ICMP首部的开销:8字节
(4)、用总的1518减去(1)至(4)的数据算出的MTU是1472字节。
图4-4-1
(2)根据Packet#1回答相关问题,如图4-4-2.
图4-4-2
a.Packet#1中ICMP标识符数字是:0x0200
b.Packet#1中ICMP序列号:0x1100
c.Packet#1中ICMP校验和的值:0x3a5c
(3)根据Packet#2回答相关问题,如图4-4-3:
图4-4-3
《TCP/IP协议分析》实验报告
实验序号:4
实验项目名称:运用Ethernet捕获数据包,分析数据包和设置IP流量过滤器
学 号
姓 名
TCP IP实验报告
《TCP/IP协议》实验报告学院:机械与电子信息学院专业:计算机网络技术学号:姓名:指导教师:2018年 6 月实验一Packet Tracer 6.0的使用一、实验目的通过在Packet Tracer 6.0 添加网络设备,熟悉不同的物理设备及其连接方式,掌握使用Packet Tracer 6.0构建网络的方法,掌握捕获、查看通信信息的方法。
二、实验步骤步骤1、打开Packet Tracer 6.0,添加以下网络节点:1841路由器3台,2950-24 交换机1台,PC三台,服务器1台。
步骤2、选择合适的连接线把设备连接起来。
以太网连线时,交换机与计算机或路由器等设备之间连接用直通线,交叉线用于同种设备(路由器与路由器,交换机与交换机)之间相连或计算机与路由器之间相连。
用直通线吧PC0、PC1、Router0与Switch0的任意端口连接,Router0、Router1和Router2之间需要用交叉线连接,Server0与Router2也要用交叉线连接。
如果连线类型正确,则PC与交换机之间连线上的绿灯马上会点亮。
特别的,为配置路由器,可以用控制台连线把PC2和Router1的Console 端口连接起来,也可以连接到Router1的Auxiliary端口上,但使用方法与连接到控制口时不同。
步骤3、配置设备。
PC的配置可以直接在Packet Tracer 6.0的逻辑拓补图上单击PC图标,打开设备配置窗口,单击Desktop选项卡中的IP Configuration,完成默认网关和ID地址的设置。
依次设置3台PC和服务器0的IP地址,PC0和PC1的默认网关设为192.168.1.1,服务器0的默认网关设为192.168.4.1。
单击需要配置的路由器图标,打开设备配置窗口,单击CLI选项卡,按Enter键出现命令行提示符,然后使用如下命令配置静态路由。
Router>enable #进入特权模式Router#configure terminal #全局配置Router(config)#int f0/0 #配置接口f0/0 Router(config-if)#no shutdown #开启接口Router(config-if)#ip address 192.168.1.1 255.255.255.0随着借口no shutdown 命令的输入,接口连线上的绿灯随时变亮。
tcp ip协议实验报告
tcp ip协议实验报告《TCP/IP协议实验报告》一、实验目的本次实验旨在通过实际操作,加深对TCP/IP协议的理解,掌握其基本原理和工作机制。
二、实验环境1. 操作系统:Windows 102. 软件工具:Wireshark、Putty三、实验内容1. 使用Wireshark监测网络数据包利用Wireshark工具,实时监测网络数据包的传输过程,观察数据包的结构和传输规则,以及TCP/IP协议的工作流程。
2. 使用Putty进行远程连接通过Putty工具,进行远程连接实验,模拟TCP/IP协议在网络通信中的应用场景,了解TCP/IP协议在远程通信中的工作原理。
3. 分析网络数据包结合Wireshark抓包结果和Putty远程连接实验,分析网络数据包的传输过程,探讨TCP/IP协议的数据传输机制,包括数据封装、传输流程和错误处理等方面的内容。
四、实验结果1. 通过Wireshark监测数据包,了解了TCP/IP协议的数据包格式和传输规则,包括TCP头部、IP头部等内容。
2. 利用Putty进行远程连接,实际体验了TCP/IP协议在远程通信中的应用,加深了对TCP/IP协议工作原理的理解。
3. 分析网络数据包,深入探讨了TCP/IP协议的数据传输机制,包括数据封装、传输流程和错误处理等方面的内容。
五、实验总结通过本次实验,我们对TCP/IP协议有了更深入的了解,掌握了其基本原理和工作机制,加强了对网络通信协议的理解和应用能力。
同时,通过实际操作,我们也发现了一些问题和不足之处,为今后的学习和实践提供了一定的参考和指导。
六、参考文献1. 《TCP/IP协议详解》2. 《计算机网络》通过本次实验,我们对TCP/IP协议有了更深入的了解,掌握了其基本原理和工作机制,加强了对网络通信协议的理解和应用能力。
同时,通过实际操作,我们也发现了一些问题和不足之处,为今后的学习和实践提供了一定的参考和指导。
希望通过不断的实践和学习,能够进一步提高对TCP/IP协议的理解和运用能力,为今后的网络通信工作打下坚实的基础。
TCPIP协议分析_实验3_分析IPv4和IPv6数据包
《TCP/IP协议分析》实验报告实验序号:3 实验项目名称:分析IPv4和IPv6 数据包20网工学号姓名专业、班实验地点指导教师实验时间2022-9-14 一、实验目的及要求,步骤和结果动手项目3-1:使用Wireshark软件查看IPv4数据包首部所需时间: 20 分钟。
项目目标:学习使用Wireshark软件查看IPv4数据包的首部。
过程描述:本项目介绍如何捕获网络上的一个数据包,选择一个特定的数据包,查看该数据包的IPv4首部。
你可以捕获自己的数据进行分析,或启动Wireshark 软件,打开从本书配套网站上下载的文件IPv4Fields.pcap,直接跳到第(8)步。
(1)启动Wireshark软件(单击“开始”,指向“所有程序”,然后单击Wireshark。
也可以单击“开始”,在“运行”对话框中输入"Wireshark", 然后单击“确定”按钮)。
(2)单击Capture菜单,然后单击Interfaces 菜单项,出现Capture Interfaces 窗口。
(3)可能会显示有多个网卡,选定一个在Packets栏显示了实时数据包的网卡,然后单击Start 按钮,出现Capturing窗口。
(4)打开一个命令提示符窗口(单击“开始”按钮,在“运行”对话框中输入cmd,然后单击“确定”按钮)。
(5) ping 本地网络中的计算机IPv4地址。
(6)在命令提示符窗口中输入exit命令并按Enter键,关闭命令提示符窗口。
(7)在Wireshark软件中,单击菜单栏上的Capture,然后单击Stop (或者单击工具栏上的Stop 图标)。
(8)在数据包列表面板(上部面板)中选择一个TCP数据包(9)在数据包详细内容面板(中部面板),展开Internet Protocol Version4, 如图所示。
(10)查看Version和Header lenght字段的值。
(11)展开Differentiated Services Field, 查看Total Length和ldentification字段的值,然后再收起它。
TCPIP实验报告
tcp/ip实验报告一.实验目的二.实验内容2.1实验原理如图1所示。
计算机(ie )服务器(web 服务器: apache, microsoft iis) 计算机(netscape)三、实验步骤(1)清空高速缓存中的网页(图2):在ie浏览器中,选择“工具”——“internet选项”——“常规”标签——“删除文件”按钮图2 清除ie缓存(2)清空dns高速缓存(图3):在桌面上选择“开始”——“程序”——“附件”——“命令提示符”;——输入命令行“ipconfig/flushdns”——按“回车键”执行命令。
图3 清除dns域名解析缓存(5)从analyze菜单中选择“ follow tcp stream”,显示整个数据流。
其中,web浏览器发送的数据显示为一种颜色;所有由web服务器发送的数据显示为另一种颜色。
实验报告小组成员:组长:田廷魁组员:周霄晗周深立周斌杰田力陈童张鼎撰写人:田廷魁学号:201227920316 班级:网工1201班一、实验目的二、实验学时2 学时三、实验类型验证型实验四、实验步骤该实验采用网络结构一说明:ip 地址分配规则为主机使用原有 ip,保证所有主机在同一网段内。
按照拓扑结构图连接网络,使用拓扑验证检查连接的正确性。
本试验将主机 a 和 b 作为一组,主机 c 和d 作为一组,主机e 和f 作为一组。
现仅以主机 a 和 b 为例,说明实验步骤。
练习一:页面访问1. 主机 a 清空 ie 缓存。
------------------------------------------------------------------------------------------------------- *概要* 源主机: ip地址: 192.168.0.29 目的主机: ip地址: 192.168.0.251------------------------------------------------------------------------------------------------------- *命令交互过程*------------------------------------------------------------------------------------------------------- 端口: 80 端口: 1418 【问题】b) 根据本练习的报文内容,填写下表。
tcp ip实验报告
tcp ip实验报告《TCP/IP实验报告》TCP/IP协议是互联网上使用最广泛的协议之一,它是一种可靠的、面向连接的协议,用于在不同计算机之间进行数据通信。
在本次实验中,我们对TCP/IP协议进行了深入的研究和实验,以期更好地理解其工作原理和应用。
实验一:TCP连接建立过程我们首先对TCP连接建立过程进行了实验。
通过Wireshark抓包工具,我们观察到在建立TCP连接时,客户端和服务器端之间进行了三次握手的过程。
这三次握手分别是客户端向服务器端发送SYN包,服务器端收到后回复SYN+ACK 包,最后客户端再回复ACK包,完成连接的建立。
通过实验,我们深入了解了TCP连接建立的过程和原理。
实验二:TCP数据传输过程在第二个实验中,我们对TCP数据传输过程进行了实验。
我们使用了一个简单的客户端和服务器端程序,通过TCP协议进行数据传输。
通过抓包工具我们观察到,在数据传输过程中,TCP协议会对数据进行分段、封装、传输和重组等操作,确保数据的可靠传输和顺序交付。
这个实验让我们更加深入地了解了TCP协议在数据传输过程中的工作原理。
实验三:TCP连接的释放过程最后,我们进行了TCP连接的释放过程实验。
我们观察到在TCP连接释放时,客户端和服务器端进行了四次挥手的过程。
这四次挥手分别是客户端向服务器端发送FIN包,服务器端收到后回复ACK包,然后服务器端再向客户端发送FIN包,最后客户端回复ACK包,完成连接的释放。
通过这个实验,我们更加深入地了解了TCP连接释放的过程和原理。
通过本次实验,我们对TCP/IP协议有了更深入的理解,我们了解了TCP连接建立、数据传输和连接释放的过程和原理,这对我们今后的网络编程和网络管理工作具有重要的指导意义。
希望通过今后的实践和学习,我们能够更好地掌握和应用TCP/IP协议,为网络通信的可靠性和稳定性做出更大的贡献。
TCPIP协议分析_实验4_分析ARP缓冲区、IPv4和IPv6的路由表和路由协议
《TCP/IP协议分析》实验报告实验序号:4 实验项目名称:分析ARP缓冲区、IPv4和IPv6的路由表和路由协议20网工学号姓名专业、班实验地点指导教师实验时间2022-09-28 一、实验目的、步骤和结果动手项目4-1:管理本地ARP缓冲区项目目标:学习如何管理本地ARP的内容。
(1)单击Start(开始)按钮,单击Run(运行),在Open(打开)文本框中输入cmd,单击OK(确定)按钮。
屏幕上显示一个命令提示符窗口。
(2)在命令提示符下,输入arp -a命令,按Enter 键,浏览本地ARP缓冲区的内容。
记录出现在ARP缓冲区中的任何项。
(3)输入arp -d命令,按Enter键,删除本地ARP缓冲区的内容。
(4)输入arp -a命令,按Enter键,再次浏览ARP缓冲区。
记录出现在你的ARP缓冲区中的新项。
此时缓冲区应该为空。
(5)输入ping ip_address命令,其中ip_address 本地网络中的一台IP主机,然后按Enter键。
(6)在ping命令运行结束后,输入arp -a命令并按Enter 键,再次查看ARP缓冲区的内容,记录出现的新项。
此时的ARP缓冲区应只有ping之后的项了,如图所示。
动手项目4-2:读取本地IPv4路由表项目描述:学习如何查看本地计算机IPv4网卡路由表。
(1)单击Start(开始)按钮,单击Run(运行)按钮,在Open(打开)文本框中输入cmd,单击OK(确定)按钮。
屏幕上显示一个命令提示符窗口。
(2)在命令提示符下,输入netsh命令,并按Enter键。
(3)在netsh提示符后面,输入interface ipv4命令,然后按Enter 键。
(4)在命令提示符下,输入show route 命令,并按Enter键,查看本地IPv4路由表,如图所示。
(5)输入exit命令并按Enter 键,然后再输入exit命令并按Enter键,关闭命令提示符窗口。
TCPIP实验报告
TCP/IP技术实验报告书专业:[通信工程]学生姓名:[张世超]完成时间:2021年8月11日实验一网络应用程序基础实验目的:通过实验,使学生熟悉并掌握运用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 1024void main(int argc,char *argv[]){WSADATA wsaData;SOCKET sClient;int iPort=DEFAULT_PORT;//从服务器端接收的数据长度int iLen;//接收数据的缓冲char buf[DATA_BUFFER];//服务器端地址struct sockaddr_in ser;//判断输入的参数是否正确if(argc〈2){//提示在命令行中输入服务器IP地址printf(”Usage:client [server IP address]\n");return;}//接收数据的缓冲区初始化memset(buf,0,sizeof(buf));if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0){printf(”Failed to load Winsock.\n");return;}//填写要连接的服务器地址信息ser.sin_family=AF_INET;ser。
TCP-IP课程实验报告
图 2-1 ARP 将网络层的逻辑地址解析为本地的硬件地址
2.1 ARP 概述
ARP 是像以太网和令牌环这样的访问共享、基于广播的网络技术所使用的协议。该协 议将节点的转发 IP 地址解析成对应的 MAC (Media Access Control——媒介访问控制) 地址。 MAC 地址也称为物理地址、硬件地址或网卡地址。解析后的 MAC 地址成为以太网或令牌 环报头中的目标 MAC 地址,IP 数据报在媒介上发送时寻到该地址。 ARP 将因特网层地址 (IP 地址)解析成网络接口层地址(MAC 地址) 。 转发 IP 地址不必与 IP 数据报的目标 IP 地址相同,每个发出的 IP 数据报经路由处理后 都变成一个接口和转发 IP 地址。对于直接在同一子网上传送的目标节点,转发 IP 地址是数 据报的目标 IP 地址。对于间接传送到远程目标节点,转发 IP 地址是转发主机所在子网上的 路由器的 IP 地址。 IP 独立于任何特定的网络接口层技术。因此,从转发的 IP 地址判断不出目的地的网络 接口层地址。例如,以太网和令牌环 MAC 地址的长度是 6 字节,IP 地址的长度是 4 字节。 MAC 地址在网卡的制造过程中就已分配好了,而 IP 地址是由网络管理员分配的。对某个具 体的 IP 节点而言,这两种地址的指定方式之间没有任何关系,因此不可能从一个地址判断 出另一个地址。ARP 是一种基于广播的请求答复协议,提供了将正在转发的 IP 地址映射为 它们相应的 MAC 地址的动态解析能力。
TCP
UDP
图 1-3 数据结构
第二章
地址解析协议(ARP)——链路层
由于不同层和驻留于这些层上的地址的复杂性, 因此必须有一种解析不同的计算机编址 策略间差异的方法。 地址解析就起了这样的作用, 并且使得端设备可以动态地找到本地的硬 件地址以便向远端主机传输数据, 或者取得必要的逻辑 IP 地址和配置参数以便加入到网络。 如果没有某种类型的地址解析方法,远端主机间就不能通信。在 IP 界,地址解析指的是将 一个协议地址转换成一个相应的物理地址或反之,例如将一个 IP 地址转换成一个以太网地
TCP╱IP协议分析实验报告_胡维华_杭电
一、以太帧格式的分析1.抓取方法描述第一步:打开wireshark 抓包软件,开始抓包。
第二步:在电脑(本机192.168.)命令提示符下ping 一下本局域网内的某台开启的主机的地址()第三步:分析抓取的icmp 包的格式。
2.记录抓取的过程:第一步(选取网络):第二步(ping目标主机):3. 抓取数据的内容ICMP报报报以太帧:4、抓取数据的格式解释(可直接在抓取数据的内容旁边标注)●源MAC 地址●目的MAC 地址●类型●长度●校验和●以太帧类型见上面的图5、补充说明(如果有需要补充的内容写在这)其实192.168.137.2是一部手机。
二、ARP协议的分析1、抓取方法描述2、记录抓取的过程(以上两步方法同上题)2、抓取数据的内容a)请求数据包:b)应答数据包:4、抓取数据的格式解释(可直接在抓取数据的内容旁边标注)●分别指出ARP请求数据包和应答数据包中各个字段的内容●指出ARP请求报文和应答报文的发送方式见上面的图5、请说明你是如何伪造ARP报文使某台计算机不能上网的,以及是否成功?我用“ARPResponsePacketSender”软件在windows7 32位系统上伪造arp 报文来攻击自身。
a.攻击前准备:在主机上用arp –a 命令查看arp 表:再用ipconfig /all 命令查看其它相关信息:可知:主机IP——192.168.213.128 ;主机MAC——00-0C-29-D6-0D-14 ;网关IP——192.168.213.2 ;网关MAC——00-50-56-F3-4D-60 ;b.构造arp 包:arp包的接收方的IP地址和mac地址都填本机的地址;发送方的IP地址填网关IP地址;发送方的mac地址填一个不存在的mac地址(修改了源地址的最后一个字节);发送次数填大一点,避免观察时过早停止;点击按钮开始发送。
(如下图:)c. 开始攻击及结果:在持续的发送伪造的arp包过程中,网页就无法浏览了:停止发送后,网页立即恢复正常浏览:6、补充说明(如果有需要补充的内容写在这)arp –a 命令时不出现mac地址,不知如何解决。
TCPIP协议分析实验
TCPIP协议分析实验一、实验目的本实验旨在通过对TCP/IP协议的分析,加深对网络协议的理解,掌握抓包工具的使用以及网络通信的过程。
二、实验器材1.计算机一台2.网络抓包工具三、实验内容1.实验前准备首先需要在计算机上安装网络抓包工具,如Wireshark等。
2.抓包过程使用抓包工具在计算机上开启抓包功能,并进行网络通信。
例如使用浏览器访问一个网页、发送电子邮件等。
3.抓包数据分析将抓包工具捕获的数据进行分析。
根据每个包的协议类型、源地址、目的地址、数据内容等信息,逐一分析TCP/IP协议的流程和通信过程。
四、实验结果与分析通过抓包工具捕获的数据,我们可以得到以下实验结果和分析:1.协议类型分析根据抓包得到的数据,可以看到TCP、IP等协议的使用情况。
TCP协议是一种可靠的传输协议,用于确保数据能够准确无误地传输。
IP协议则是一种网络层协议,用于将数据包从一个主机传输到另一个主机。
2.源地址与目的地址分析通过抓包数据中的源地址和目的地址,可以了解数据包的发送方和接收方。
源地址是发起通信的主机,目的地址是接收通信的主机。
通过分析源地址和目的地址,可以确定通信的源和目的地,进而了解通信的主要参与者。
3.数据包的信息分析根据抓包数据中的数据内容,我们可以了解通信中所传输的具体信息。
例如,对于网页访问,可以从抓包数据中看到HTTP协议的使用,以及网页的具体内容。
对于电子邮件,可以从抓包数据中看到SMTP协议的使用,以及邮件的具体内容。
五、实验总结通过以上分析,我们可以了解到TCP/IP协议在网络通信中的重要性和应用情况。
TCP/IP协议是一种常用的网络协议,广泛应用于互联网、局域网等各类网络中。
通过对抓包数据的分析,我们可以进一步了解网络通信过程中各个环节的工作原理和特点,提高网络故障排除和优化的能力。
此外,实验过程中还需注意保护个人隐私和数据安全,避免在未经授权的情况下对他人进行抓包和分析。
六、参考资料1.《计算机网络》(第七版)-谢希仁。
TCPIP协议分析_实验5_ICMP协议分析
《TCP/IP协议分析》实验报告实验序号:5 实验项目名称:ICMP协议分析20网工学号姓名专业、班实验地点指导教师实验时间2022-10-5 一、实验目的、要求、步骤和结果动手项目5-1:在网络上使用ICMPv4 Echo请求消息ping另一个设备项目目标:往网络中的某个主机发送Echo请求消息,接收Echo应答消息,并在Wireshark 软件中捕获这个处理过程。
过程描述:本项介绍如何在Windows 命令提示符下使用ping 实用工具,测试与另一台本地计算机的连通性,使用Wireshark数据包分析器捕获ICMPv4数据包的交换。
(1)单击“开始”按钮,单击“运行”,在“打开”文本框中输入cmd,之后单击“确定”按钮。
打开一个命令提示符窗口。
(2)在命令提示符下,输入ping 命令并按Enter键,查看可用的命令行参数。
在遵循下述步骤打开Wireshark 程序的过程中,保持命令行提示符窗口为打开状态。
(3)单击“开始”按钮,将鼠标指针移动到“所有程序”上,然后单击Wireshark。
(4)在菜单栏单击Capture,然后单击Interfaces。
(5)确定活动网卡,然后单击右侧的Start按钮(可能会有多个网卡,这也没有问题)。
(6)单击任务栏上的“命令提示符”按钮切换到命令提示符窗口,或使用Alt +Tab键让命令提示符窗口处于活动状态。
(7)输入ping ip_address命令,其中ip_address是网络上另一台设备的地址。
在Wireshark跟踪缓冲区中应该有一些数据包。
(8)不要关闭命令提示符窗口。
单击任务栏上的Wireshark按钮,或使用Alt +Tab键让Wireshark 窗口处于活动状态。
(9)单击菜单栏的Capture,然后单击Stop按钮,使Wireshark停止捕获更多的数据包。
(10)滚动浏览捕获在跟踪缓冲区中的数据包。
你应该能够看到几个ICMP Echo 请求和ICMP Echo应答数据包。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络协议分析实验一、实验目的通过使用协议分析软件,对通信系统的通信过程进行监控、分析,以了解通信协议的工作过程。
二、实验内容利用协议分析软件(如:Wireshark)跟踪局域网报文(如条件允许也可跟踪多种局域网协议报文),实验内容如下:将安装协议分析软件的PC接入以太网中,跟踪PC之间的报文,并存入文件以备重新查。
设置过滤器过滤网络报文以检测特定数据流。
利用协议分析软件的统计工具显示网络报文的各种统计信息。
三、实验步骤1、在PC中安装协议分析软件(如:Wireshark)。
具体安装过程详见附录:Wireshark用户指南。
2、启动Wireshark协议分析软件,选择抓包菜单项启动实时监视器,开始实时跟踪显示网络数据报文。
可根据系统提示修改显示方式,详见附录:Wireshark用户指南。
3、调出跟踪存储的历史报文,选择有代表性的ETHERNET,IEEE802.3,IP,ICMP,TCP,UDP报文,对照有关协议逐个分析报文各字段的含义及内容。
EHERNET报文格式IEEE802.3报文格式IP报文格式4、设置过滤器属性,如目的地址,源地址,协议类型等。
如过滤不需要的网络报文,过滤器允许设置第二层,第三层或第四层的协议字段。
过滤器有两种工作方式:1)捕获前过滤:协议分析软件用过滤器匹配网络上的数据报文,仅当匹配通过时才捕获报文。
2)捕获后过滤:协议分析软件捕获所有报文,但仅显示匹配符合过滤条件的报文。
选择统计菜单项可以显示网络中各种流量的统计信息,如:关于字节数,广播中报文数,出错数等。
UDP 客户/服务器实验一、实验目的本实验目的是使用因特网提供的UDP 传输协议,实现一个简单的UDP 客户/服务器程序,以了解传输层所提供的UDP 服务的特点,应用层和传输层之间的软件接口风格,熟悉socket 机制和UDP 客户端/服务器方式程序的结构。
二、实验内容本实验为UDP 客户/服务器实验。
实验内容:UDP echo 客户/服务器程序的设计与实现。
UDP echo 客户/服务器程序完成以下功能:客户从标准输入读一行文本,写到服务器上;服务器从网络输入读取此行,并回射(echo )给客户;客户读此回射行,并将其写到标准输出。
三、实验步骤1、 总体设计客户程序从标准输入读一行文本,写到服务器程序上;服务器程序从网络输入读取此行,并回射给客户程序;客户程序读此回射行,并将其写到标准输出。
2、 详细设计UD P 客户-服务器程序所用套接口函数1)服务器main 函数2)服务器str_echo 函数3)客户main函数4)客户str_echo函数#include <netinet/in.h>#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#define MAXLINE 4096#define LISTENQ 1024 /* 2nd argument to listen() */ #define SERV_PORT 9877#define SA struct sockaddrstatic int sockfd;void dg_echo(int, SA *, socklen_t);intmain(int argc, char ** argv){struct sockaddr_in servaddr, cliaddr;if((sockfd = socket(AF_INET, SOCK_DGRAM, 0))<0) {printf("socket error.\n");exit(1);}bzero(&servaddr, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = htonl(INADDR_ANY);servaddr.sin_port = htons(SERV_PORT);bind(sockfd, (SA *)&servaddr, sizeof(servaddr));dg_echo(sockfd, (SA *)&cliaddr, sizeof(cliaddr));}voiddg_echo(int sockfd, SA *pcliaddr, socklen_t clilen){int n;socklen_t len;char mesg[MAXLINE];for ( ; ; ) {len = clilen;n = recvfrom(sockfd, mesg, MAXLINE, 0, pcliaddr, &len);sendto(sockfd, mesg, n, 0, pcliaddr, len);}}Cli#include <netinet/in.h>#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#define MAXLINE 4096#define LISTENQ 1024 /* 2nd argument to listen() */ #define SERV_PORT 9877#define SA struct sockaddrvoid dg_cli(FILE *, int, const SA *, socklen_t);main(int argc, char **argv){int sockfd;struct sockaddr_in servaddr;if (argc != 2) {printf("usage:udpcli01sigio <IPaddress>\n");exit(1);}bzero(&servaddr, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(SERV_PORT);inet_pton(AF_INET, argv[1], &servaddr.sin_addr);if((sockfd = socket(AF_INET, SOCK_DGRAM, 0))<0) {printf("socket error.\n");exit(1);}dg_cli(stdin, sockfd, (SA *)&servaddr, sizeof(servaddr));exit(0);}dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen){int n;char sendline[MAXLINE], recvline[MAXLINE + 1];while (fgets(sendline, MAXLINE,fp) != NULL) {sendto(sockfd, sendline, strlen(sendline), 0, pservaddr, servlen);n = recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL);recvline[n] = 0; /* null terminate */fputs(recvline, stdout);}}TCP客户/服务器实验四、实验目的本实验目的是使用因特网提供的TCP传输协议,实现一个简单的TCP客户/服务器程序,以了解传输层所提供的TCP服务的特点,应用层和传输层之间的软件接口风格,熟悉socket 机制和TCP客户端/服务器方式程序的结构。
五、实验内容本实验为TCP客户/服务器实验。
实验内容:TCP echo客户/服务器设计与实现。
TCP echo 客户/服务器程序完成以下功能:客户从标准输入读一行文本,写到服务器上;服务器从网络输入读取此行,并回射(echo)给客户;客户读此回射行,并将其写到标准输出。
六、实验步骤1、 总体设计客户程序从标准输入读一行文本,写到服务器程序上;服务器程序从网络输入读取此行,并回射给客户程序;客户程序读此回射行,并将其写到标准输出。
2、 详细设计T C P 客户-服务器程序所用套接口函数1)服务器main 函数2)服务器str_echo 函数3)客户main函数4)客户str_echo函数Serv#include <netinet/in.h>#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#define MAXLINE 4096#define LISTENQ 1024 /* 2nd argument to listen() */ #define SERV_PORT 9877#define SA struct sockaddrvoid str_echo(int);ssize_t readline(int, void *, size_t);static ssize_t my_read(int, char *);intmain(int argc, char **argv){int listenfd, connfd;pid_t childpid;socklen_t clilen;struct sockaddr_in cliaddr,servaddr;if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("socket error.\n");exit(1);}bzero(&servaddr, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = htonl(INADDR_ANY);servaddr.sin_port = htons(SERV_PORT);if (bind(listenfd, (SA *)&servaddr, sizeof(servaddr)) < 0) {printf("bind error.\n");exit(1);}if (listen(listenfd,LISTENQ) < 0) {printf("listen error.\n");exit(1);}for( ; ;) {clilen = sizeof(cliaddr);if ( (connfd = accept(listenfd, (SA *) &cliaddr, &clilen)) < 0) { printf("accept error.\n");exit(1);}if((childpid = fork()) == 0) {close(listenfd) ;str_echo(connfd);exit(0);}close(connfd);}}voidstr_echo(int sockfd){ssize_t n;char line[MAXLINE];for ( ; ; ) {if ( (n = readline(sockfd, line, MAXLINE)) == 0)return; /* connection closed by other end */write(sockfd, line, n);}}/*end str_echo*/ssize_treadline(int fd, void *vptr, size_t maxlen){int n, rc;char c, *ptr;ptr = vptr;for (n = 1; n < maxlen; n++) {if ( (rc = my_read(fd, &c)) == 1) {*ptr++ = c;if (c == '\n')break; /* newline is stored, like fgets() */} else if (rc == 0) {if (n == 1)return(0); /* EOF, no data read */elsebreak; /* EOF, some data was read */ } elsereturn(-1); /* error, errno set by read() */ }*ptr = 0; /* null terminate like fgets() */return(n);}/* end readline */static ssize_tmy_read(int fd, char *ptr){static int read_cnt = 0;static char *read_ptr;static char read_buf[MAXLINE];if (read_cnt <= 0) {again:if ( (read_cnt = read(fd, read_buf, sizeof(read_buf))) < 0) {if (errno == EINTR)goto again;return(-1);} else if (read_cnt == 0)return(0);read_ptr = read_buf;}read_cnt--;*ptr = *read_ptr++;return(1);}/*end ssize_t*/Cli#include <netinet/in.h>#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#define MAXLINE 4096#define LISTENQ 1024 /* 2nd argument to listen() */ #define SERV_PORT 9877#define SA struct sockaddrvoid str_cli(FILE *,int);ssize_t readline(int, void *, size_t);static ssize_t my_read(int, char *);intmain(int argc, char **argv){int sockfd;struct sockaddr_in servaddr;if (argc != 2) {printf("usage:tcpcli01 <IPaddress>");exit(1);}if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("socket error.\n");exit(1);}bzero(&servaddr, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(SERV_PORT);inet_pton(AF_INET, argv[1], &servaddr.sin_addr);if (connect(sockfd, (SA *)&servaddr, sizeof(servaddr)) < 0) { printf("connect error.\n");exit(1);}str_cli(stdin, sockfd);exit(0);}voidstr_cli(FILE *fp,int sockfd){char sendline[MAXLINE], recvline[MAXLINE];while (fgets(sendline,MAXLINE, fp) != NULL) {write(sockfd, sendline, strlen(sendline));if (readline(sockfd, recvline, MAXLINE) == 0) {printf("str_cli:server terminated prematurely.\n");exit(1);}fputs(recvline, stdout);}}/*end str_cli */ssize_treadline(int fd, void *vptr, size_t maxlen){int n, rc;char c, *ptr;ptr = vptr;for (n = 1; n < maxlen; n++) {if ( (rc = my_read(fd, &c)) == 1) {*ptr++ = c;if (c == '\n')break; /* newline is stored, like fgets() */} else if (rc == 0) {if (n == 1)return(0); /* EOF, no data read */elsebreak; /* EOF, some data was read */} elsereturn(-1); /* error, errno set by read() */ }*ptr = 0; /* null terminate like fgets() */return(n);}/* end readline */static ssize_tmy_read(int fd, char *ptr){static int read_cnt = 0;static char *read_ptr;static char read_buf[MAXLINE];if (read_cnt <= 0) {again:if ( (read_cnt = read(fd, read_buf, sizeof(read_buf))) < 0) {if (errno == EINTR)goto again;return(-1);} else if (read_cnt == 0)return(0);read_ptr = read_buf;}read_cnt--;*ptr = *read_ptr++;return(1);}/*end ssize_t*/总结:实验对于我们来说是很重要的,经过这几次实验,我已经大致了解了TCP/IP的工作原理,知道了要想实验客户机和服务器的连连通,具体的步骤是什么。