由于测试需要,需要从一台linux向另一台建立连接,并发送tcp/udp包。觉得用python写个client/server脚本有点麻烦,于是想找一个命令直接发送,一搜就搜到了netcat
先在机器B上进行netcat服务器端的配置,配置使其监听机器B的6901端口,输入以下命令
> nc -v -n -l 192.168.0.4 6901
这里的参数解释如下:
-v 显示详细输出
-n 只使用数字的地址,不用DNS域名解析
-l 使用监听模式
显示出第二行 Listening on... 的时候就说明监听成功啦
Listening on [192.168.0.4] (family 0, port 6901)
在服务器端开启成功后,我们在机器A上进行客户端的链接,使其链接到机器B的6901端口
> nc -v 192.168.0.4 6901
按下回车后应该可以看到如下输出
Connection to 192.168.0.4 6901 port [tcp/*] succeeded!
同时在机器B的终端上会显示:
众所周知,在传输层有两个常用的协议TCP和UDP,本文介绍在Linux命令行下,如何使用nc命令发送或接收UDP数据包,这些命令的用法对调试UDP通信程序将有所帮助。
通过命令行发送UDP数据的程序,可发送字符串和二进制,发送完数据自动退出。例如:
UDPsend.exe 8083 9000 192.168.1.115 string "Hello World"
UDPsend.exe 8083 9000 192.168.1.115 binary 0102FF0A
可将数据从本地8083端口发送到192.169.1.115:9000
send to remote 发送udp包到远程机器的1234端口。#send to local 发送udp包到本地的1234端口。linux下可以用echo来发送udp包到指定端口,方便测试。或(本机地址为192.168.0.81)
Linux内核网络发送数据之socket层1. 前言2. 数据包发送宏观视角3. 协议层注册4. 通过 socket 发送网络数据4.1 `sock_sendmsg`, `__sock_sendmsg`, `__sock_sendmsg_nosec`4.2 `inet_sendmsg`5. 总结
1. 前言
本文首先从宏观上概述了数据包发送的流程,接着分析了协议层注册进内核以及被socket的过程,最后介绍了通过 socket 发送网络数据的过程。
2. 数据包发送宏观视角
从宏观上看,一个数据包从用户程序
UDP (User Datagram Protocol):用户数据报协议。
UDP 是一个不可靠的通信协议,没有重传和确认,没有有序控制,也没有拥塞控制。可以简单地理解为,在 IP 报文的基础上,UDP 增加的能力有限。
UDP编程
UDP中客户端和服务器端交互的图解:
UDP Server :
Create UDP socket.
Bind the socket to server ad...
Linux内核网络数据包发送(二)——UDP协议层分析1. 前言2. `udp_sendmsg`2.1 UDP corking2.2 获取目的 IP 地址和端口2.3 Socket 发送:bookkeeping 和打时间戳2.4 辅助消息(Ancillary messages)2.5 设置自定义 IP 选项2.6 多播或单播(Multicast or unicast)2.7 路由2.8 `MSG_CONFIRM`: 阻止 ARP 缓存过期2.9 uncorked UDP sockets 快速路径:准备待发送