TFTP传输---wireshark抓包工具,听诊器

前言:这次学习了基于UDP发送请求的TFTP传输,学习到如何利用wireshark抓包工具抓取信息并根据TFTP传输协议完成CS架构下的上传和下载服务。

一、wireshark
1.什么是wireshark?
Wireshark:只要是流经电脑的数据都能监听到,用于抓包,类似与医生的听诊器。

2.wireshark的用法
(1)数据层的解析,每两个16位进制组成一个字节,再翻译成ASCII码
界面的截图!!!!

二、广播的类型有哪些
1.受限广播

三、架构的类型:
1.C/S客户端服务器架构,
2.B/S浏览器服务架构

四、大端小端:
电脑CPU怎么存的,就怎么取数据。一般而言,个人PC机是小端,大型服务器是大端。网络协议规定,所有以多字节组成的网络数据,在网络上必须以大端发送。
大端:低地址,存稿位数据
小端:低地址,存低位数据

五、TFTP传输
1.TFTP协议的介绍:octet
2.TFTP传输过程:
3.所需的库:struct
4.!、H、s、b
H:把一个字节数据转为两个字节的数据,解的时候就是把两个字节数据转为一个字节的数据

5.实例:
(1)构建向tftp服务器请求数据

#python2版本

# -*- coding: utf-8 -*-
from socket import *
import struct

#创建套接字
udp_socket = socket(AF_INET, SOCK_DGRAM)

#向tftp服务器发送数据,构建请求数据并查看有没有反应
cmd_buf = struct.pack('!H8sb5sb', 1, 'test.jpg', 0, 'octet', 0)
udp_socket.sendto(cmd_buf, ('192.168.1.112', 69))

运行结果:
wireshark抓包工具对请求数据的检测情况:
TFTP传输---wireshark抓包工具,听诊器_第1张图片
(2)TFTP客户端

# -*- coding: utf-8 -*-

from socket import *
import struct

tftp_add = ''
file = ''
udp_socket = None

def tftp():
	"模拟下载过程" 
	p_num = 0
	while True:
		# 服务器回应
		recv_data, recv_addr = udp_socket.recvfrom(1024)	
		cmd_tuple = struct.unpack('!HH', recv_data[:4])  #是个元组
		if cmd_tuple[0] == 3:
			if cmd_tuple[1] == 1:
				f = open(file, 'wb')
			if len(recv_data) < 516:	#TFTP协议规定小于516结束
				f.close() 
				break
			
			if p_num+1 == cmd_tuple[1]:
				#接收到了数据包,写入数据
				f.write(recv_data[4:])
				#确认收到的代码块,发回服务器
				p_num+=1
				print '(%d)次接收到的数据'%(p_num)
				ack_msg = struct.pack('!HH', 4, p_num)
				udp_socket.sendto(ack_msg, recv_addr)	
		if cmd_tuple[0] == 5:
			break	



def main(): 
	global tftp_add
	global file 
	global udp_socket 

	global udp_socket

	#输入tftp服务器地址 
	tftp_addr = raw_input("输入tftp服务器地址: ") 
	tftp_port = raw_input("请输入tftp服务器端口: ") 
	
	file = raw_input("请输入要下载的文件: ") #创建套接字
	udp_socket = socket(AF_INET, SOCK_DGRAM)

	#向服务器发送请求,下载文件
	cmd_buf = struct.pack('!H8sb5sb', 1, file, 0, 'octet', 0)  #遵循TFTP协议构造请求数据
	udp_socket.sendto(cmd_buf, (tftp_addr, int(tftp_port)))
	#传输
	tftp()	

	udp_socket.close()
if __name__ == '__main__':
	main()	

六、上传的过程?

你可能感兴趣的:(网络编程)