基于 UDP 协议的SSH 客户端程序

基于 UDP 协议的SSH 客户端程序

1. server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import socket, subprocess
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
HOST = '127.0.0.1'
PORT = 5555
server.bind((HOST, PORT))
server.listen(5)
while True:
conn, client_addr = server.accept()
print('已连接')

while True:
try:
cmd = conn.recv(1024)
if not cmd: break
print('客户机命令', cmd.decode('utf-8'))
res = subprocess.Popen(cmd.decode('utf-8'), shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout = res.stdout.read()
stderr = res.stderr.read()
conn.send(stdout)
except ImportError:
break
conn.close()

2. client

1
2
3
4
5
6
7
8
9
10
11
from socket import socket,AF_INET,SOCK_DGRAM

port = ('127.0.0.1', 5555)
udp_c = socket(AF_INET, SOCK_DGRAM)
while True:
msg = input('>>').strip()
if not msg:continue
udp_c.sendto(msg.encode('utf-8'), port)
bak_msg, addr = udp_c.recvfrom(10240)
print(bak_msg.decode('GBK'))
bak_msg.close()

简答:

1. TCP 协议与 UDP 协议有什么区别?

  1. 基于连接与无连接;
  2. 对系统资源的要求(TCP较多,UDP少);
  3. UDP程序结构较简单;
  4. 流模式与数据报模式 ;
  5. TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

2. 画出 TCP/IP协议的五层结构图,要求标出每层的协议。

  1. 物理层(physical layer)
    RJ45、CLOCK、IEEE802.3
  2. 数据链路层(data link layer)
    PPP、FR、HDLC、VLAN、MAC
  3. 网络层(network layer)
    IP、ICMP、ARP、PARP、OSPF、IPX、RIP、IGRP
  4. 运输层(transport layer)
    TCP、UDP、SPX
  5. 第五层——应用层
    FTP、DNS、Telnet、SNMP、SMTP、HTTP、WWW、NFS

3. 什么是套接字(socket)

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...