socket 网络编程并抓本地回环包

实验目的与要求:

1.理解进程通信的原理及通信过程;

2.掌握基本的网络编程方法;

3.需要有流程图;

4.需要抓取传输内容。

写在前面

我以前装了winpcap这个包,但是这个并不能抓回环包,我尝试把本地的包通过的网络再次进行传输,需要本机加路由。系统显示操作完成之后并没有抓到包。

所以我尝试另一种方法,使用npcap这样成功抓到了本地回环包。忙活半天发现还是下载一个npcap最好使。在下载winpcap之前如果已经下载好了winpcap,记得卸载,搜一下教程,最好卸载干净。

实验过程:

本次实验要求自己编写socket,然后传输可以数据,并进行数据的提取和分析,所以整个实验的流程图如下:

Socket通信分析:

这里我使用Python进行编程,编写服务器端如下:

import socket
def main():
    ip_port = (('127.0.0.1', 8888))
    sk = socket.socket()
    sk.bind(ip_port)
    sk.listen(5)
    print('server waiting...')
    conn, addr = sk.accept()
    print('连接成功,客户端为:')
    print(addr)
    while True:
        client_data = conn.recv(1024)
        print('客户端传来的数据是:' + client_data.decode('utf-8'))
        if client_data.decode('utf-8') == 'q':
            print('结束')
            break
        msg = 'hello libayi!'
        conn.sendall(msg.encode('utf-8'))
    conn.close()
    sk.close()

if __name__ == '__main__':
    main()

这里使用的通信端口是8888,发送的内容是我的名字。

编写的客户端如下:

import socket

def main():
    ip_port = (('127.0.0.1', 8888))
    sk = socket.socket()
    sk.connect(ip_port)
    while True:
        msg = input('请输入:')
        sk.sendall(msg.encode('utf-8'))
        server_reply = sk.recv(1024)
        if not server_reply:
            print('结束啦')
            break
        print('from server')
        print(server_reply.decode('utf-8'))
    sk.close()

端口和客户端的端口一致。

通信原理如下所示:

抓包并分析:

如上图所示,这里我们抓本地回环包。只要有本地的包,wireshark就可以检测出来我们进行直接抓取。

如下所示:

 

服务器发送你好,这里的客户端的端口是62468,服务器的端口是8888。接下来我们看服务器给客户端的信息:

 

 此时本地服务器的界面如下:

本地客户端的页面如下: 

 

实验完成 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值